1 条题解

  • 0
    @ 2025-8-24 22:30:55

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Aiopr_2378
    沿湍流兮望归舟

    搬运于2025-08-24 22:30:55,当前版本为作者最后更新于2021-05-01 20:37:53,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    Solution P7550 [COCI2020-2021#6] Bold

    一、思路:

    这道题还是很简单的······

    读题可得:如果点(i,j)(i,j)为"#",那么点(i,j+1)(i,j+1),点(i+1,j)(i+1,j),点(i+1,j+1)(i+1,j+1)都将变为"#"。

    输入自然很简单,普通用cincincoutcout就可以读入/输出。

    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>a[i][j];
    		}
    	}
    

    要注意的是:

    每个点更新的时候我们不能从i+1,j+1i+1,j+1方向更新,这样更新的点会被扫到错误答案,例如:

    ....
    
    .#..
    
    ....
    
    ....
    

    当我们更新(2,2)(2,2)时,(2,3)(2,3)(3,2)(3,2)(3,3)(3,3)都会被更新。(如下图)

    ....
    
    .##.
    
    .##.
    
    ....
    

    但是我们在更新(2,3)(2,3)时就会发现这个点已经被更新,所以(2,4)(2,4)(3,3)(3,3)(3,4)(3,4)也会被更新,以此类推。(如下图)

    ....
    
    .###
    
    .###
    
    .###
    

    但是我们是不能更新这几个点的,因为题目中的(2,3)(2,3)不是"#"。会导致程序错误。

    那我们怎样更新呢?我们可以从i1,j1i-1,j-1的方向更新,这样是不会出问题的。

    	for(int i=n;i>0;i--){
    		for(int j=m;j>0;j--){
    			if(a[i][j]=='#'){
    				a[i][j+1]='#';
    				a[i+1][j]='#';
    				a[i+1][j+1]='#';
    			}
    		}
    	}
    

    然后再输出就行了。

    二、参考代码:

    #include<bits/stdc++.h>
    using namespace std;
    char a[1005][1005];
    int n,m;
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>a[i][j];
    		}
    	}
    	for(int i=n;i>0;i--){
    		for(int j=m;j>0;j--){
    			if(a[i][j]=='#'){
    				a[i][j+1]='#';
    				a[i+1][j]='#';
    				a[i+1][j+1]='#';
    			}
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cout<<a[i][j];
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    

    三、尾声:

    这部分看起来根本没用

    这道题的满分是5050,所以就会出现Accepted50Accepted 50的情况······

    感谢大家对我的支持,感谢您的浏览,希望能帮助到您,祝您早日犇犇。

    				By  Indifferent
    
    • 1

    信息

    ID
    6665
    时间
    1000ms
    内存
    500MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者