精华内容
下载资源
问答
  • 步骤 点击B2格 (第二一列) 按下Ctrl+Shift+End 所有数据(除了首行)...快捷键Ctrl+Shift+End的作用:从当前选定的开始,选择本表的最后一行。 参考:http://www.winwin7.com/jc/8714.html ...

    步骤

    1. 点击B2格 (第二行第一列)
    2. 按下Ctrl+Shift+End
    3. 所有数据行已选(除了首行)

     

     

    快捷键Ctrl+Shift+End的作用:从当前选定的行开始,选择到本表的最后一行。

     

     

    参考: http://www.winwin7.com/jc/8714.html

    展开全文
  • 网管教程 入门精通软件篇 ★。★详细的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*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图片大小调整为所在单元大小 将所区域文本插入新建文本框 批量插入地址批注 批量插入统一批注 不连续区域插入当前文件名和表名及地址 不连续区域录入当前单元地址 连续区域录入当前...
  • 题目大意: 对于任意的2*2的正方形,可以选择其中的任意三个(0–>...下,右(不包括最后两,和最后一列),一旦当前的a[i][j]==1,那么就选择(i,j),(i,j+1),(i+1,j+1)进行变化。对于最后一列

    题目大意:

    img

    对于任意的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:46
    SC省day1(scoi2015)... 我们先把问题转化成求第n-k+1小的数最小,那么我们先二分答案,然后对于第i,第j的数,如果它小于当前val,ij连条边,否则不管,如果最后的最大流大于等于n-k+1,就说明当前方案可
  •  实例142 身份证号15位升18位的算法 186  实例143 歌德巴赫猜想的算法实现 187  实例144 八皇后问题的算法实现 188  实例145 百钱百鸡的算法实现 190  实例146 韩信点兵的算法实现 191  实例147 实现...
  • 一列中的文字统一去掉最后一个字 讨如何去掉单元格中的第一个数字? 论一下取最后一个单词的方法 如何去掉单元格最后一位数字 如何在一列已经输入的数据前添加“p” 什么函数可以插入字符 如何在数据前添加“*”号...
  • 实例077 带复框的树状菜单 98 2.9 其他控件典型应用 100 实例078 TrackBar的简单应用 100 实例079 SplitContainer的应用 102 实例080 MaskedTextBox控件的简单应用 103 实例081 制作日历计划任务 105 ...
  • 可能你已经注意,变量都有个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; /...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    一列中的文字统一去掉最后一个字 讨如何去掉单元格中的第一个数字? 论一下取最后一个单词的方法 如何去掉单元格最后一位数字 如何在一列已经输入的数据前添加“p” 什么函数可以插入字符 如何在数据前添加“*”号...
  • -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:11
    rs.movelast 将记录指针移数据表最后一行 rs.absoluteposition=N 将记录指针移数据表第N rs.absolutepage=N 将记录指针移第N页的第一 rs.pagesize=N 设置每页为N条记录 rs.pagecount 根据 pagesize 的设置...
  • 【清除中重复值】将选择中重复出现的数据删除(提供保留第一次出现还是最后一次出现的数据 的选择机会,也提供是否对删除数据加背景色突出的选择机会) 【标示重复值】将重复出现的数据用 颜色标示出来,不同值...
  • 8.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 对整个表格进行校验的方法,参数为一个回调函数...
  • 【隔行插入】 在当前工作表中允许M行到N,隔X插入Y,并允许是否需复制标题Z。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并能...
  • 8.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...
  • 【隔行插入】 在当前工作表中允许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
    【取消合并还原合并数据】:对一列中合并后的单元格取消合并,且恢复合并前所有数据 【合并数据并复制】:可以将一个区域的数据直接复制一个单元格中 【合并区域自动换行】:可以让具有合并单元格的区域在自动换行...
  • 指定跳转标签,找到标签后,程序将处理一行开始的命令。 语法:goto label(label是参数,指定所要转向的批处理程序中的。) Sample: if {%1}=={} goto noparms if {%2}=={} goto noparms(如果这里的if...
  • 【隔行插入】 在当前工作表中允许M行到N,隔X插入Y,并允许是否需复制标题Z。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并...
  • 【隔行插入】 在当前工作表中允许M行到N,隔X插入Y,并允许是否需复制标题Z。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并...
  • 【合并与合计】:可以任意指定两列,对其中一列的数据合并同类项,而另一列对应的数值则求合计,合计结果存放在合并区域中 【建立图片目录】:对指定文件夹下所有图片(GIF、PNG、JPG,JPEG)建立目录,并批量导入 ...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    04050引用输入了任何内容的最后一列单元格(多行情况之一) 04051引用输入了公式或值的最后一列单元格(多行情况之二) 04052引用多个非连续单元格区域的集合(Union方法) 04053引用多个非连续单元格区域的集合...
  • F4 重复最后一次操作,Alt F4退出EXCEL,SHIFT F4重复上一次查找操作 F5 显示定位对话框,Shift F5激活查找对话框 F6 移下一个窗格,SHIFT F6移动拆分的工作簿中的上一个窗格,CTRL F6,CTRL SHIFT F6移动下...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 123
精华内容 49
关键字:

从当前行选到最后一列