CF1360E - Polygon

news/2024/11/29 4:38:12/

题目链接

https://codeforces.com/problemset/problem/1360/E

题目描述

(来自于luogu)
题目描述

解题思路

根据题目给出的样例可以得知,射出的第一颗子弹肯定会落在最底处或最右边,解题的关键就在于此,以最底处或最右边为基准,只能向上或向左填充阵地。

使用dfs从最底处或最右边向上或向左搜索,统计1的填充个数,和原始矩阵1的数量比较一下即可得出答案。

参考代码

#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 54;
bool mat[MAXN][MAXN];
bool flag[MAXN][MAXN];
int ans=0;void dfs(int x,int y){if( !mat[x][y] || flag[x][y] || x<=0 || y<=0) return ;if( mat[x][y] && !flag[x][y] )  {ans++;flag[x][y] = true;}//cout<<x<<" "<<y<<endl;dfs(x,y-1); //go topdfs(x-1,y); //go left
}
int main(){int t;char ch;cin>>t;	while( t-- ){int n;int num=0;ans=0;memset(mat,0,sizeof(mat));memset(flag,0,sizeof(flag));cin>>n;for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++) {cin>>ch;mat[i][j] = ch - '0';if ( ch == '1' )num++;		}for(int i = 1; i <= n; i++){dfs( i, n);dfs( n, i);	}if( num == ans)  cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
} 

注:第一次提交时,dfs( )函数的第一行没有标记flag[x][y] ,很多区域重复访问,导致程序超时了。做题时还是需要细心细心再细心,指数级别的时间复杂度还是比较耗时的,不能存侥幸心理。


http://www.ppmy.cn/news/215653.html

相关文章

[LeetCode 1360]日期之间隔几天

题目描述 请你编写一个程序来计算两个日期之间隔了多少天。 日期以字符串形式给出&#xff0c;格式为 YYYY-MM-DD&#xff0c;如示例所示。 示例1 输入&#xff1a;date1 “2019-06-29”, date2 “2019-06-30” 输出&#xff1a;1 示例2 输入&#xff1a;date1 “2020…

【信奥赛一本通】 1360:奇怪的电梯(lift)(详细代码)

【图论算法】1360&#xff1a;奇怪的电梯lift 1.【题目描述】2.【代码】 1.【题目描述】 【题目描述】 大楼的每一层楼都可以停电梯&#xff0c;而且第i层楼&#xff08;1≤i≤N&#xff09;上有一个数字Ki(0≤Ki≤N&#xff09;。电梯只有四个按钮&#xff1a;开&#xff0c;…

[HihoCoder]#1360 : 凸多边形

华电北风吹 天津大学认知计算与应用重点实验室 2016-08-14 题目链接&#xff1a; http://hihocoder.com/problemset/problem/1360 题目分析&#xff1a; 动态规划&#xff0c;思路参考Floyd解决所有节点对的最短路径类型的动态规划。 参考代码&#xff1a; #include &l…

Ubuntu永久更改分辨率1360*768

网上可以搜索到Ubuntu添加新分辨率&#xff08;比如没有1360*768通过xrandr自主创建&#xff09;。但这个方法在reboot之后便会失效&#xff0c;通过半晚上的研究&#xff0c;终于发现了能令Ubuntu添加分辨率格式并保持的方法&#xff08;以1360*768为例&#xff09;。事实上&a…

1360:奇怪的电梯(lift)

【题目描述】 大楼的每一层楼都可以停电梯&#xff0c;而且第i层楼&#xff08;1≤i≤N&#xff09;上有一个数字Ki(0≤Ki≤N&#xff09;。电梯只有四个按钮&#xff1a;开&#xff0c;关&#xff0c;上&#xff0c;下。上下的层数等于当前楼层上的那个数字。当然&#xff0c;…

洛谷CF1360E 多边形

洛谷CF1360E 多边形 题目标签标签难度 思路分析思路一 错因分析AC代码 题目标签 CF1360E 标签 模拟 难度 普及/提高- 思路分析 思路一 时间复杂度 O ( n 2 t ) O(n^2t) O(n2t) 说实在&#xff0c;这一题其实很简单。一道纯模拟题。我们先来分析一下题目&#xff1a;“…

1360. 日期之间隔几天

题目描述 请你编写一个程序来计算两个日期之间隔了多少天。日期以字符串形式给出&#xff0c;格式为 YYYY-MM-DD&#xff0c;如示例所示。示例 1&#xff1a;输入&#xff1a;date1 "2019-06-29", date2 "2019-06-30" 输出&#xff1a;1 示例 2&#xf…

一本通1360 奇怪的电梯

1360&#xff1a;奇怪的电梯(lift) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 4790 通过数: 2047 【题目描述】 大楼的每一层楼都可以停电梯&#xff0c;而且第i层楼&#xff08;1≤i≤N&#xff09;&#xff08;1≤i≤N&#xff09; 上有一个数字Ki(0≤Ki≤…