1 条题解

  • 0
    @ 2025-8-24 22:26:17

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 柠檬布丁吖
    to be continue

    搬运于2025-08-24 22:26:17,当前版本为作者最后更新于2022-07-27 23:04:03,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Updata 再次阅读完题解攻略后对题解进行格式和代码注释的修改

    一个名为幸运的机会的游戏,根据图片的提示,我们选择模拟。模拟大法好

    这篇题解主要讲一下这道题的细节。

    1. 扫描某个方向是全是严格小于选择方块的数,等于的不算

    2. 不是方块所在的横或者列。

    3. 可以选择方格某一方向(当然不包括此方格)逐个枚举,若有一个方块 \geq 当前选择方块则此方向 pass

    4. 关于边界的处理,其实此题可以不做过多处理。

    ACCode:

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int n,m;
    int Map[1100][1100];
    //建议大家不要同“Map”这样设置变量名,容易让人产生歧义而想起STL中的map;希望大家可以避免错误。
    int ans=0;//ans存储答案
    
    int main() {
    
    	cin>>n>>m;
    
    	for(int i=1; i<=n; i++) {
    		for(int j=1; j<=m; j++) {
    			cin>>Map[i][j];
    		}
    	}
    
    	for(int i=1; i<=n; i++) {
    		for(int j=1; j<=m; j++) {
    			bool k=false;
    			for(int l=i-1; l>=1; l--) {
    				if(Map[l][j]>=Map[i][j]) {
    					k=true;
    					break;
    				}
    			}
    			if(k==false) {
    				ans++;//某一方向达成条件
    			} else {
    				k=false;
    			}
    
    
    			for(int l=j-1; l>=1; l--) {
    				if(Map[i][l]>=Map[i][j]) {
    					k=true;
    					break;
    				}
    			}
    			if(k==false) {
    				ans++;
    			} else {
    				k=false;
    			}
    
    
    			for(int l=i+1; l<=n; l++) {
    				if(Map[l][j]>=Map[i][j]) {
    					k=true;
    					break;
    				}
    			}
    			if(k==false) {
    				ans++;
    			} else {
    				k=false;
    			}
    
    
    			for(int l=j+1; l<=m; l++) {
    				if(Map[i][l]>=Map[i][j]) {
    					k=true;
    					break;
    				}
    			}
    			if(k==false) {
    				ans++;
    			} else {
    				k=false;
    			}
    
    		}
    	}
    
    	printf("%d\n",ans);
    
    	return 0;
    }
    

    qwq蒟蒻第一次独立发题解祭祀

    • 1

    信息

    ID
    6213
    时间
    2000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者