-
Excel如何全选后去掉第一行,快速全选所有数据
2021-02-25 10:56:55步骤 点击B2格 (第二行第一列) 按下Ctrl+Shift+End 所有数据行已选(除了首行)...快捷键Ctrl+Shift+End的作用:从当前选定的行开始,选择到本表的最后一行。 参考:http://www.winwin7.com/jc/8714.html ...步骤
- 点击B2格 (第二行第一列)
- 按下Ctrl+Shift+End
- 所有数据行已选(除了首行)
快捷键Ctrl+Shift+End的作用:从当前选定的行开始,选择到本表的最后一行。
-
网管教程 从入门到精通软件篇.txt
2010-04-25 22:43:49网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的... -
html入门到放弃笔记
2018-05-15 15:06:12从当前文件位置处开始查找资源文件所经过的路径,就是相对路径 1、同目录,直接用 2、子目录,先进入 3、父目录,先返回 3、根相对路径 路径形式是以 / 作为开始的。 / : 表示的是服务器的根路径 2、图像 1... -
CodeForces-489f
2017-12-05 16:04:55题目意思是给一个m*n的01矩阵,将剩余的n-m行01矩阵填满,并保证最后的n*n的矩阵每一行和每一列都有且仅有两个1,问有多少种填法。...对于填哪两列其实我们并不用关心,只需要记录到当前行由几个列选了0个1和1个1即可。题目意思是给一个m*n的01矩阵,将剩余的n-m行01矩阵填满,并保证最后的n*n的矩阵每一行和每一列都有且仅有两个1,问有多少种填法。
对于每一行,我们都可以从上一行的所有状态中推出当前这一行填01的方法种数。对于填哪两列其实我们并不用关心,只需要记录到当前行由几个列选了0个1和1个1即可。这样配合组合数就可以进行O(n3)的dp转移。
但是实际上我们知道了当前行有多少个“0”(即0个1),我们便可以求出有多少个“1”,因为01矩阵1的总个数是确定的。这样dp的时间复杂度就变成了O(n2).#include <bits/stdc++.h> using namespace std; int n, m, mod; typedef long long ll; const int maxn = 1000 + 5; char s[maxn][maxn]; ll d[2][500+5][500+5]; ll C[maxn][maxn]; int main(int argc, char const *argv[]) { scanf("%d%d%d", &n, &m ,&mod); C[1][0] = C[1][1] = 1; for(int i = 2; i < 600; ++i) { C[i][0] = 1; for(int j = 1; j < 600; ++j) { C[i][j] = (C[i-1][j]+C[i-1][j-1])%mod; } } for(int i = 1; i <= m; ++i) { scanf("%s", s[i] + 1); } int a = 0 ,b = 0, c = 0; for(int j = 1; j <= n; ++j) { int cnt = 0; for(int i = 1; i <= m; ++i) { if(s[i][j] == '1') cnt++; } if(cnt == 0) a++; else if(cnt == 1) b++; else c++; } d[0][a][b] = 1; int x = 0; for(int i = m+1; i <= n; ++i) { x ^= 1; for(int j = 0; j <= n; ++j) { int k = ((n-i+1) << 1) - (j << 1); if(k < 0 || k > n) continue; if(j >= 2){ (d[x][j-2][k+2] += d[x^1][j][k] * C[j][2] % mod) %= mod; } if(j >= 1 && k >= 1) { (d[x][j-1][k] += d[x^1][j][k] * j * k % mod) %= mod; } if(k >= 2){ (d[x][j][k-2] += d[x^1][j][k] * C[k][2] % mod) %= mod; } } } cout << d[x][0][0] << endl; return 0; }
-
8皇后问题递归和迭代方法 打印皇后位置
2015-11-11 15:50:55对每一个皇后的候选位置进行探测,(每个皇后的候选位置都是从第一个到最后一个),如果当前位置不和之前的皇后冲突,则选下一个皇后的,否则就要向前回溯,把上一个选好位置皇后的位置往后移一个 代码如下 #...8*8的棋盘,8个皇后放入其中,要求所有任何皇后不能在同一行同一列,也不能都在对角线线上
对每一个皇后的候选位置进行探测,(每个皇后的候选位置都是从第一个到最后一个),如果当前位置不和之前的皇后冲突,则选下一个皇后的,否则就要向前回溯,把上一个选好位置皇后的位置往后移一个
代码如下
#include <iostream> #include <vector> #include <set> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int n = 8; int sum = 1; bool flag; vector<int> vec(n,0); vector<int> result(n,0); void QUEEN(int k) { for(int i=1;i<=n;++i) { flag = true; for(int b=0; b<k; ++b) { if((b-k)==(i-vec[b]) || (k-b)==(i-vec[b]) || (i==vec[b])) { flag = false; break; } } if(flag) //部分的解,当前位置合法 { vec[k] = i; if(k==n-1) //所有皇后已经放完 { cout<<"第 "<<sum++<<" 种方案 "; for(size_t i=0;i<n;++i) cout<<vec[i]<<" "; cout<<endl; return; } QUEEN(k+1); } } return; } void queen() { sum = 1; QUEEN(0); //从第一个皇后开始放 if(sum==1) cout<<"无解"<<endl; } void Queen() { int k = 0; while( k>=0 ) { while(vec[k]<=n-1) //每一个皇后的候选位置从 0 到 7 { vec[k] += 1; flag = true; for(int b=0; b<k; ++b) // 检测当前位置是否合法,就是不和之前已经放完的皇后位置冲突 { if((b-k)==(vec[k]-vec[b]) || (k-b)==(vec[k]-vec[b]) || (vec[k]==vec[b])) { flag = false; break; } } if(flag) //部分的解,当前位置合法 ,不合法则继续向后探测,看这个皇后还有没有候选的位置 { result[k]=vec[k]; //记录这个皇后选出来的位置 if(k==n-1) //所有皇后已经放完 { cout<<"第 "<<sum++<<" 种方案 "; for(size_t i=0;i<n;++i) cout<<result[i]<<" "; cout<<endl; break; } ++k; } } vec[k] = 0; //当前皇后的所有位置都已探测完毕,没有候选的位置了, --k; // 回溯,只能把前一个选完的皇后的位置向后移一个 } if(sum==1) cout<<"无解"<<endl; return; } int main(int argc, char** argv) { Queen(); //非递归,迭代 cout<<endl; //queen(); //递归 return 0; }
运行结果 -
105个常用宏.xlsm
2020-11-12 09:13:17将A列最后数据行以上的所有B列图片大小调整为所在单元大小 将所选区域文本插入新建文本框 批量插入地址批注 批量插入统一批注 不连续区域插入当前文件名和表名及地址 不连续区域录入当前单元地址 连续区域录入当前... -
CodeForces-1439A-Binary Table
2020-11-18 10:59:56题目大意: 对于任意的2*2的正方形,可以选择其中的任意三个(0–>...从上到下,从左到右(不包括最后两行,和最后一列),一旦当前的a[i][j]==1,那么就选择(i,j),(i,j+1),(i+1,j+1)进行变化。对于最后一列的选题目大意:
对于任意的2*2的正方形,可以选择其中的任意三个(0–>1,1–>0),使得进行若干次操作之后让所有的元素变成0.
Easy版本:操作次数不超过3nm
Hard版本:操作次数不超过nm
思路:
直接写nm的方法吧(比赛的时候觉得不可能麻烦到去讨论2 * 2的内部单独情况,于是就换思路了,结果今早还是换成了一开始的办法)。从上到下,从左到右(不包括最后两行,和最后一列),一旦当前的a[i][j]==1,那么就选择(i,j),(i,j+1),(i+1,j+1)进行变化。对于最后一列的选择(i,m),(i+1,m),(i+1,m-1)进行变化。对于最后两行的,从左到右,如果a[n-1]][j]==1就选择(n-1,j),(n-1,j+1),(n,j+1);如果a[n][j]==1就选择(n,j),(n,j+1),(n-1,j+1),这样就只剩下右下角的 2 * 2的小方格了,比赛的时候就这里出问题了。今天早上想的方法是分别讨论1的个数为0,1,2,3,4的情况:
0:不需要变换,直接输出;
3:变换那3个1的位置,操作次数为1;
2:变换2个0的位置+任意一个1的位置,转换成了1的个数为3的情况,操作次数共为2;
1:变换1的位置+任意2个0的位置,转换成了1的个数为2个情况,操作次数为3;
4:变换任意3个1的位置,操作次数为4.
代码:
#include<bits/stdc++.h> using namespace std; const int maxn=200+5; int a[maxn][maxn],T,n,m;char s[maxn][maxn]; struct Node{ int x1,Y1,x2,Y2,x3,Y3; }ans[maxn*maxn]; int main(){ cin>>T; while(T--){ cin>>n>>m;int tot=0; for(int i=1;i<=n;i++)cin>>s[i]+1; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)a[i][j]=s[i][j]-'0'; for(int i=1;i<=n-2;i++){ for(int j=1;j<=m-1;j++){ if(a[i][j]==0)continue; tot++; ans[tot].x1=i;ans[tot].Y1=j;ans[tot].x2=i;ans[tot].Y2=j+1;ans[tot].x3=i+1;ans[tot].Y3=j+1; a[i][j]=0;a[i][j+1]=1-a[i][j+1];a[i+1][j+1]=1-a[i+1][j+1]; } if(a[i][m]){ tot++; ans[tot].x1=i;ans[tot].Y1=m;ans[tot].x2=i+1;ans[tot].Y2=m;ans[tot].x3=i+1;ans[tot].Y3=m-1; a[i][m]=0;a[i+1][m]=1-a[i+1][m];a[i+1][m-1]=1-a[i+1][m-1]; } } for(int i=1;i<=m-2;i++){ if(a[n-1][i]){ tot++; ans[tot].x1=n-1;ans[tot].Y1=i;ans[tot].x2=n-1;ans[tot].Y2=i+1;ans[tot].x3=n;ans[tot].Y3=i+1; a[n-1][i]=0;a[n-1][i+1]=1-a[n-1][i+1];a[n][i+1]=1-a[n][i+1]; } if(a[n][i]){ tot++; ans[tot].x1=n;ans[tot].Y1=i;ans[tot].x2=n;ans[tot].Y2=i+1;ans[tot].x3=n-1;ans[tot].Y3=i+1; a[n][i]=0;a[n][i+1]=1-a[n][i+1];a[n-1][i+1]=1-a[n-1][i+1]; } } int cnt=a[n][m]+a[n-1][m-1]+a[n-1][m]+a[n][m-1]; int t[6][10]={0}; if(cnt==1){ tot++;int cnt=0,sign=0; for(int i=n-1;i<=n;i++){ for(int j=m-1;j<=m;j++){ if(a[i][j]){ t[1][++cnt]=i;t[1][++cnt]=j;a[i][j]=0; } else{ if(sign>=2)continue; sign++; t[1][++cnt]=i;t[1][++cnt]=j;a[i][j]=1; } if(cnt==6)break; } } sign=0;cnt=0;tot++; for(int i=n-1;i<=n;i++){ for(int j=m-1;j<=m;j++){ if(a[i][j]){ if(!sign){ sign=1;t[2][++cnt]=i;t[2][++cnt]=j;a[i][j]=0; } continue; } t[2][++cnt]=i;t[2][++cnt]=j;a[i][j]=1; if(cnt==6)break; } } tot++;cnt=0; for(int i=n-1;i<=n;i++){ for(int j=m-1;j<=m;j++){ if(!a[i][j])continue; t[3][++cnt]=i;t[3][++cnt]=j; } } cout<<tot<<endl; for(int i=1;i<=tot-3;i++)cout<<ans[i].x1<<' '<<ans[i].Y1<<' '<<ans[i].x2<<' '<<ans[i].Y2<<' '<<ans[i].x3<<' '<<ans[i].Y3<<endl; for(int i=1;i<=3;i++)cout<<t[i][1]<<' '<<t[i][2]<<' '<<t[i][3]<<' '<<t[i][4]<<' '<<t[i][5]<<' '<<t[i][6]<<endl; } else if(cnt==2){ tot++;int sign=0,cnt=0; for(int i=n-1;i<=n;i++){ for(int j=m-1;j<=m;j++){ if(a[i][j]){ if(!sign){ sign=1;t[1][++cnt]=i;t[1][++cnt]=j;a[i][j]=0; } continue; } t[1][++cnt]=i;t[1][++cnt]=j;a[i][j]=1; if(cnt==6)break; } } tot++;cnt=0; for(int i=n-1;i<=n;i++){ for(int j=m-1;j<=m;j++){ if(!a[i][j])continue; t[2][++cnt]=i;t[2][++cnt]=j; } } cout<<tot<<endl; for(int i=1;i<=tot-2;i++)cout<<ans[i].x1<<' '<<ans[i].Y1<<' '<<ans[i].x2<<' '<<ans[i].Y2<<' '<<ans[i].x3<<' '<<ans[i].Y3<<endl; for(int i=1;i<=2;i++)cout<<t[i][1]<<' '<<t[i][2]<<' '<<t[i][3]<<' '<<t[i][4]<<' '<<t[i][5]<<' '<<t[i][6]<<endl; } else if(cnt==3){ tot++;int cnt=0; for(int i=n-1;i<=n;i++){ for(int j=m-1;j<=m;j++){ if(!a[i][j])continue; t[1][++cnt]=i;t[1][++cnt]=j; } } cout<<tot<<endl; for(int i=1;i<=tot-1;i++)cout<<ans[i].x1<<' '<<ans[i].Y1<<' '<<ans[i].x2<<' '<<ans[i].Y2<<' '<<ans[i].x3<<' '<<ans[i].Y3<<endl; for(int i=1;i<=1;i++)cout<<t[i][1]<<' '<<t[i][2]<<' '<<t[i][3]<<' '<<t[i][4]<<' '<<t[i][5]<<' '<<t[i][6]<<endl; } else if(cnt==4){ cout<<tot+4<<endl; for(int i=1;i<=tot;i++)cout<<ans[i].x1<<' '<<ans[i].Y1<<' '<<ans[i].x2<<' '<<ans[i].Y2<<' '<<ans[i].x3<<' '<<ans[i].Y3<<endl; cout<<n-1<<' '<<m-1<<' '<<n<<' '<<m-1<<' '<<n<<' '<<m<<endl; cout<<n-1<<' '<<m-1<<' '<<n-1<<' '<<m<<' '<<n<<' '<<m<<endl; cout<<n-1<<' '<<m-1<<' '<<n-1<<' '<<m<<' '<<n<<' '<<m-1<<endl; cout<<n-1<<' '<<m<<' '<<n<<' '<<m-1<<' '<<n<<' '<<m<<endl; } else{ cout<<tot<<endl; for(int i=1;i<=tot;i++)cout<<ans[i].x1<<' '<<ans[i].Y1<<' '<<ans[i].x2<<' '<<ans[i].Y2<<' '<<ans[i].x3<<' '<<ans[i].Y3<<endl; } } return 0; }
-
SCOI2015 day1
2016-02-02 15:42:46SC省选day1(scoi2015)... 我们先把问题转化成求第n-k+1小的数最小,那么我们先二分答案,然后对于第i行,第j列的数,如果它小于当前val,从i到j连一条边,否则不管,如果最后的最大流大于等于n-k+1,就说明当前方案可 -
C#开发实战1200例(第一卷+第二卷)+源码下载地址.txt
2019-05-17 09:24:24实例142 身份证号从15位升到18位的算法 186 实例143 歌德巴赫猜想的算法实现 187 实例144 八皇后问题的算法实现 188 实例145 百钱百鸡的算法实现 190 实例146 韩信点兵的算法实现 191 实例147 实现... -
Excel公式大全操作应用实例(史上最全)
2018-03-06 21:09:38对一列中的文字统一去掉最后一个字 讨如何去掉单元格中的第一个数字? 论一下取最后一个单词的方法 如何去掉单元格最后一位数字 如何在一列已经输入的数据前添加“p” 什么函数可以插入字符 如何在数据前添加“*”号... -
C#程序开发范例宝典电子书从1-471例后面的暂时没有
2008-10-16 21:15:36实例077 带复选框的树状菜单 98 2.9 其他控件典型应用 100 实例078 TrackBar的简单应用 100 实例079 SplitContainer的应用 102 实例080 MaskedTextBox控件的简单应用 103 实例081 制作日历计划任务 105 ... -
PHP基础教程 是一个比较有价值的PHP新手教程!
2010-04-24 18:52:44可能你已经注意到,变量都有一个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; /... -
EXCEL函数公式集
2010-03-16 03:26:38对一列中的文字统一去掉最后一个字 讨如何去掉单元格中的第一个数字? 论一下取最后一个单词的方法 如何去掉单元格最后一位数字 如何在一列已经输入的数据前添加“p” 什么函数可以插入字符 如何在数据前添加“*”号... -
ExtAspNet v2.2.1 (2009-4-1) 值得一看
2010-04-01 09:41:27-Confirm.GetShowReference的最后一个参数target变为枚举类型。 -Alert.GetShowReference中的showInParent参数也变为Target枚举类型。 -MenuButton, LinkButton, Button, LinkButtonField增加ValidateTarget... -
coreutils-8.32.tar.gz
2020-04-30 13:16:46逆向显示指定的文件,最后一行在最前。 tail 显示每个指定文件的最后几行(默认是10)。 tee 从标准输入读取数据,输出到标准输出和文件。 test 检查文件类型,以及进行变量的比较。 touch 把参数指定的文件的... -
SQL语法大全
2014-03-30 11:00:11rs.movelast 将记录指针移到数据表最后一行 rs.absoluteposition=N 将记录指针移到数据表第N行 rs.absolutepage=N 将记录指针移到第N页的第一行 rs.pagesize=N 设置每页为N条记录 rs.pagecount 根据 pagesize 的设置... -
Excel百宝箱 9.0 破解版 批量导入图片等200种功能
2013-05-11 22:46:24【清除列中重复值】将选择中重复出现的数据删除(提供保留第一次出现还是最后一次出现的数据 的选择机会,也提供是否对删除数据加背景色突出的选择机会) 【标示重复值】将重复出现的数据用 颜色标示出来,不同值... -
Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--详细书签版
2013-02-04 12:43:528.5.4 例2:从下一行中返回一个值 204 8.6 First_value和Last_value 205 8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11... -
该回调函数会在校验结束后被调用,并传入两个参数:(是否校验成功,最近一列未通过校验的字段)。若不传入回调函数,则会返回一个 promise row,callback validate 对整个表格进行校验的方法,参数为一个回调函数...
-
EXCEL集成工具箱完整版 (简体/繁体/英文多国语言版) V7.0
2010-08-13 10:31:10【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并能... -
Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码
2013-02-04 12:49:338.5.4 例2:从下一行中返回一个值 204 8.6 First_value和Last_value 205 8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11... -
EXCEL集成工具箱V9.0 多国语言最终原版(2003-2010通用)
2011-01-07 20:40:25【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并... -
EXCEL集成工具箱V6.0
2010-09-11 01:44:37【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并... -
Excel百宝箱8.0
2011-06-07 21:32:17【取消合并还原合并数据】:对一列中合并后的单元格取消合并,且恢复合并前所有数据 【合并数据并复制】:可以将一个区域的数据直接复制到一个单元格中 【合并区域自动换行】:可以让具有合并单元格的区域在自动换行... -
如何编写批处理文件批处理文件批处理文件
2010-04-14 10:36:10指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 语法:goto label(label是参数,指定所要转向的批处理程序中的行。) Sample: if {%1}=={} goto noparms if {%2}=={} goto noparms(如果这里的if... -
EXCEL集成工具箱V8.0 多国语言版(2003-2010通用)
2010-09-11 12:08:58【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并... -
EXCEL集成工具箱V8.0完整增强版(精简)
2010-09-23 16:58:17【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并... -
Excel百宝箱9.0无限制破解版.rar
2012-09-05 09:31:51【合并与合计】:可以任意指定两列,对其中一列的数据合并同类项,而另一列对应的数值则求合计,合计结果存放在合并区域中 【建立图片目录】:对指定文件夹下所有图片(GIF、PNG、JPG,JPEG)建立目录,并批量导入 ... -
Excel VBA实用技巧大全 附书源码
2010-10-08 18:59:2404050引用输入了任何内容的最后一列单元格(多行情况之一) 04051引用输入了公式或值的最后一列单元格(多行情况之二) 04052引用多个非连续单元格区域的集合(Union方法) 04053引用多个非连续单元格区域的集合... -
双心多重剪切板 v1.2.zip
2019-07-14 07:29:58F4 重复最后一次操作,Alt F4退出EXCEL,SHIFT F4重复上一次查找操作 F5 显示定位对话框,Shift F5激活查找对话框 F6 移到下一个窗格,SHIFT F6移动到拆分的工作簿中的上一个窗格,CTRL F6,CTRL SHIFT F6移动到下...
-
精通编译Makefile,Nina, 从底层uboot到Android
-
掺Yb锁模光纤激光器中耗散孤子,耗散孤子共振和类噪声脉冲的产生的仿真
-
vxWorks6.8 操作系统下 QT 安装设置、运行方法
-
MySQL 存储过程(创建海量数据实验环境)
-
classes及messages
-
解决使用Potplayer播放4k视频卡顿和音画不同步问题
-
Oracle_11g_Linux到Linux_DataGuard部署
-
Windows系统管理
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
GUI_Button2007507192006.zip
-
kubernetes v1.16.2高可用集群
-
C/C++反汇编解密
-
NFS 实现高可用(DRBD + heartbeat)
-
关闭电脑触摸板
-
基于Qt的LibVLC开发教程
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表
-
PRDCL:帕金森病分类器-源码
-
币查客分析:EOS创始人开发新项目Clarion 市场的呼声如何?
-
测试边:HTML和CSS的测试边-源码