首页 > 其他分享 >CF1472F 题解

CF1472F 题解

时间:2024-01-28 21:57:17浏览次数:24  
标签:那么 一个点 覆盖 int 题解 盖住 如果 CF1472F

前言

只要题目给了图,你就要画图。

思路

首先,我们要明确一点:一个矩形,如果里面不存在任何被覆盖的方格,那么这个矩形是绝对可以被覆盖的。

如果现在有一个点被覆盖了。

pFmwFzR.png

那么必定要有一个长方形从这个点下方往后。

然后继续在上方接长方形继续往后。

pFmw1SA.md.png

直到出现了一个新节点被覆盖。

假设在新节点的上一个点之前,都是可以被完全覆盖的。

如果在同一行。

  • 两个点之间的距离为偶数,那么这之间肯定可以被盖住。然后继续往后找。

pFmw5lR.md.png

  • 如果为奇数,稍加思考,可以证明这一段是不能被完全盖住的,直接跳出,无解。

接下来考虑不在同一行。

  • 两个点之间的距离为奇数,那么这之间一定可以被完全盖住。

pFm0KBV.md.png

  • 两个点之间的距离为偶数,思考一下,能证明不能被完全盖住,跳出,无解。

  • 两个点在同一列,如果前面还有点未找到对应点,也无解。

如果前面不能被完全盖住,那么会提前跳出,所以如果能到这里,那么前面一定合法。

最后,如果上一个点之后没有找到对应的下一个点,也无解。

在代码实现中,注意我们要将点排序。接着用一个变量记录前面是否还有未处理完的点,有则判断当前点与之前点是否合法,没有就把变量赋为 1,继续考虑下一个。

AC CODE

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct M{
	int x,y;
}a[200005];
inline bool cmp(M x,M y){
	return x.y<y.y;
}
int main(){
	int T;
	cin>>T;
	while(T--){
		cin>>n>>m;
		memset(a,0,sizeof a);
		for(int i=1;i<=m;i++){
			cin>>a[i].x>>a[i].y;
		}
		sort(a+1,a+m+1,cmp);
		bool ok=1,fg=0;
		for(int i=1;i<=m;i++){
			if(a[i].y==a[i+1].y){
				if(fg){
					ok=0;
					break;
				}
				i++;
			}
			else{
				if(fg){
					if(a[i-1].x==a[i].x){
						if((a[i].y-a[i-1].y-1)%2==0){
							fg=0;
						}
						else{
							ok=0;
							break;
						}
					}
					else{
						if((a[i].y-a[i-1].y-1)%2==1){
							fg=0;
						}
						else{
							ok=0;
							break;
						}
					}
				}
				else{
					fg=1;
				}
			}
		}
		if(!ok||fg)puts("NO");
		else puts("YES");
	}
	return 0;
}

标签:那么,一个点,覆盖,int,题解,盖住,如果,CF1472F
From: https://www.cnblogs.com/xdh2012/p/17993482

相关文章

  • 第一周题解
    第一周周报这一周是寒假训练的第一周,训练内容主要就是做牛客上的题单还有比赛,牛客上的题单还是比较痛苦的,因为牛客压根看不了测试用例,导致我事后想知道错的例子是什么都看不了。做第一题第二题还有倒数第三题有一两个例子一直都过不去。检查了很久的代码,一直是差一两个例子,就老是......
  • P4145 上帝造题的七分钟 2 / 花神游历各国 题解
    题目链接:上帝造题的七分钟2/花神游历各国差不多的题:[YnoiEasyRound2023]TEST_69注意到对某个点来说暴力单点即为反复的:\(x=\sqrt{x}\),最终为\(1\),根据\(master\)主定理可知,跟\(veb\)树分析差不多的,复杂度为:\(O(\log{\log{V_{max}}})\)。不懂的可以去学学这篇文章。那......
  • 洛谷题解-[ARC001B] リモコン
    https://www.luogu.com.cn/problem/AT_arc001_2题目描述 输入格式无输出格式无题意翻译题目描述:高桥君要调整空调的设定温度。现在的设定温度是A度,而他想调到B度。空调遥控器按一次可以:上调或下调1度上调或下调5度上调或下调10度高桥君想求出从A调到B度的最小......
  • P1197 [JSOI2008] 星球大战 题解
    P1197[JSOI2008]星球大战题解题目链接P1197[JSOI2008]星球大战简要思路看完题目的第一印象是——连通性。图论中判断连通性很容易想到并查集,但是并查集只支持合并和查询,并不支持删除,怎么办呢?考虑逆向思维,把删点的过程倒过来,看成加点和连边,那么此题就可以非常方便的用并......
  • 洛谷题解-P1938 [USACO09NOV] Job Hunt S
    https://www.luogu.com.cn/problem/P1938题目描述Bessieisrunningoutofmoneyandissearchingforjobs.FarmerJohnknowsthisandwantsthecowstotravelaroundsohehasimposedarulethathiscowscanonlymakeD(1<=D<=1,000)dollarsinac......
  • ATtokiomarine2020E O(rand) 题解
    题目链接点击打开链接题目解法首先,\(S\)一定要是\(T\)的子集先筛出符合条件的\(a_i\),即满足\(S\subseteqa_i\subseteqT\)令\(dif\)为\(T-S\),定义数\(x\)覆盖第\(y\)位为二进制下\(x\)的第\(y\)位为\(1\)现在的问题变成了找到大小\(\lek\)的\(\{a_i\}......
  • 洛谷题解-P2888 [USACO07NOV] Cow Hurdles S (Floyd)
    https://www.luogu.com.cn/problem/P2888题目描述FarmerJohnwantsthecowstoprepareforthecountyjumpingcompetition,soBessieandthegangarepracticingjumpingoverhurdles.Theyaregettingtired,though,sotheywanttobeabletouseaslittleene......
  • ABC338 F Negative Traveling Salesman 题解
    QuestionABC338FNegativeTravelingSalesman给出一个\(N\)个点\(M\)条边的有向图,边权可能为负数,但不可能有负环每经过一条边就要加上这条边的代价求,一条路径经过所有的点,并且要求总代价最小Solution观察到\(N\le20\)自然而然想到状压因为多次经过一条边的代价是......
  • CF1423G Growing flowers题解
    考虑每种颜色的贡献,用总数\(n-k+1\)减去没有贡献到的(极长连续段长度为\(len\)时),贡献为\(\max(len-k+1,0)\),所以考虑用\(\text{ODT}\)维护所有颜色的连续段。具体的,维护一个大的\(ODT\)存储所有连续段,再对每个颜色存储自己的连续段,用\(\text{BIT}\)维护每个长度的极长......
  • ABC338 D Island Tour 题解
    Question有\(n\)座海岛由\(n\)条桥连着,第\(i\)座桥连接第\(i\)和\(i+1\)座海岛,第\(n\)座桥连接第\(n\)和\(1\)座海盗有一条长度为\(m\)的旅游路线,第\(X_i\)表示依次到达的岛屿现在需要切断一条桥,求总旅游路线最小值Solution显然,从第\(X_{i-1}\)到\(X_......