首页 > 其他分享 >CF958E1 题解

CF958E1 题解

时间:2023-12-31 21:24:35浏览次数:24  
标签:黑点 题解 线段 累加 射线 CF958E1 端点 权值

Meaning

在二维平面内,有位置不同且不存在三点共线的 \(R\) 个红点和 \(B\) 个黑点,判断是否能用一些互不相交的线段连接每一个点,使得每条线段的两端都分别是黑点和白点。

Solution

当 \(R\ne{B}\) 时,显然无法实现红点与黑点的两两组合,故题干所述的情况一定不存在。
当 \(R=B\) 时,我们考虑一种连线的方式(事先给所有红点带上 \(1\) 的权值,给所有黑点带上 \(-1\) 的权值):先找到纵坐标最小的一列点,以其中任意一个点作为坐标原点重新构建平面直角坐标系。接下来,以这个坐标原点为顶点,向 \(y\) 轴正方向做一条射线。然后,将射线上除端点外所有点的权值累加起来,并将该射线绕着端点顺时针旋转,直到该射线过平面中其他的点。重复此操作并累加权值,直到累加值与端点的权值之和为 \(0\)。
由于射线最后扫过的点可以为累加值做出与端点相反的贡献,使得累加值为端点权值的相反数,故最后扫过的点一定与端点异色。而由于保证任意三点不共线,可以在这个点与端点之间连一条符合题意的线段。而且,由于顶点权值与累加值之和为 \(0\),所以这条线段上方、下方的红点与黑点的个数均分别相等。将线段上方、下方的两部分取出,重复上述的操作,直到某一部分只剩下一个红点和一个黑点。由于在这几个部分独立且均满足 \(R=B\),所以这一组操作可以完成,且没有任何两条线段相交。
综上所述,当 \(R=B\) 时,题干所述的情况一定存在。

下面,我们利用样例 \(1\) 来演示一下上述过程。

如图,我们找到点 \(D\) 并进行扫描。

  1. 射线 \(DE\),累加值 \(-1\),端点权值 \(-1\),扫描继续。
  2. 射线 \(DF\),累加值 \(-2\),端点权值 \(-1\),扫描继续。
  3. 射线 \(DC\),累加值 \(-1\),端点权值 \(-1\),扫描继续。
  4. 射线 \(DB\),累加值 \(0\),端点权值 \(-1\),扫描继续。
  5. 射线 \(DA\),累加值 \(1\),端点权值 \(-1\),扫描结束。

因此,我们连接 \(DA\)。

由于没有下半部分,只考虑上半部分。找到新的坐标原点为点 \(E\)。经过扫描,连接 \(EB\)。

此时只剩下红点 \(C\) 和黑点 \(F\),故存在题干所述的情况。

Code

#include<bits/stdc++.h>
using namespace std;
int main(){
	int b,r,x,y;
	scanf("%d%d",&r,&b);
	for(int i=1;i<=r;++i){
		scanf("%d%d",&x,&y);
	}
	for(int i=1;i<=b;++i){
		scanf("%d%d",&x,&y);
	}
	if(b==r)
	printf("Yes");
	else
	printf("NO");
}

标签:黑点,题解,线段,累加,射线,CF958E1,端点,权值
From: https://www.cnblogs.com/blog21012004/p/17937989

相关文章

  • P5765 [CQOI2005] 珠宝 题解
    P5765[CQOI2005]珠宝题解思路好题,注意到有性质:颜色数最多为\(\lfloor\log_2n\rfloor+1\),有了这个性质之后直接树形DP糊上去就过了。简要的证明:考虑一个点,显然一种颜色即可。对于一个颜色为\(c\)的点,其儿子至少有\(c-1\)个,且为\(1\simc-1\)的排列,这样可......
  • P2898 [USACO08JAN] Haybale Guessing G 题解
    题目传送门前置知识二分答案|并查集解法对条件的合法性判断其他题解已经讲得很明白了,这里不再赘述。这里主要讲一下用并查集实现黑白染色问题。以下内容称被覆盖为黑色,不被覆盖为白色。本题因为是单向染色,即从白到黑,故可类似luoguP1840ColortheAxis和D的并查集或......
  • 二叉树面试题解析
    二叉树面试题解析判断相同的树/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;}*TreeNode(intval,TreeNode......
  • 剑指Offer Java题解(前3道题)
    目录1.二维数组中的查找2. 替换空格3. 从尾到头打印链表1.二维数组中的查找题目链接:传送。方法一,暴力枚举。参考代码:packageproblem01;/***@Authorsyrdbt*@Date2019/7/314:05*二维数组中的查找*方法一,暴力枚举*/publicclassSolution{publicboole......
  • 杭州电子科技大学2023新生赛 E 树 题解
    Question杭州电子科技大学2023新生赛E树给定一颗包含\(n\)个节点的带边权的树,定义\(xordist(u,v)\)为节点\(u\)到\(v\)的简单路径上所有边权值的异或和有\(q\)次询问,每次给出lrx求\(\sum_{i=l}^rxordist(i,x)\)的值Solution考试的时候脑子坏了对于一条......
  • 【省选联考2020】树 题解
    省选题解第一发~【省选联考2020】树我和这道题还挺有缘分的。有一次看大佬的省选游记(不知道是哪一年),然后提到有一道是01trie整体加一,当时我就印象深刻,然后在oiwiki上看了一下,心想这整体加一也只能从低位到高位维护01trie啊,又不能查询最大值,有什么卵用(划掉)。这是两周前的事......
  • 题解 [SDOI2016] 游戏
    可以看出来出题人很想出一道把李超和别的什么东西凑起来的题目,于是给了这么一个缝合怪。https://www.luogu.com.cn/problem/P4069符号有点混乱。比如箭头又可以表示路径又可以表示赋值,代入语境应该还是好理解的。看到\(a\timesdis+b\)就应激反应出来是李超了,看到\(s\to......
  • CF1884D Counting Rhyme 题解
    Problem-D-CodeforcesCountingRhyme-洛谷法1:我们之前肯定看过这样一道非常经典的题:求\(a_i\)中有多少对\((i,j)\),满足\(\gcd(a_i,a_j)=1\)\(n\leq10^6\)这题是莫反板子题,但显然可以不用莫反做。先不说这题怎么做,我们发现这道题和CF1884D的不同之处在......
  • [ABC334C] Socks 2 题解
    题目传送门一道贪心题。数量为\(2\)的袜子不用考虑,因为最好的情况就是相同颜色的配一对。我们只需要考虑那\(k\)种只有\(1\)个的袜子,如果\(k\)为偶数,答案为相邻两数之差之和;如果\(k\)为奇数,就枚举删掉一个数,让剩下的数按照\(k\)为偶数的情况做,最后取一个最小值。这......
  • [ABC334E] Christmas Color Grid 1 题解
    题目传送门一道dfs题。先统计出绿连通块数量,然后对于每个红色方块统计涂成绿色方块后会变成多少个连通块。正常涂成绿色后应该会增加一个大小为\(1\)的绿连通块,但若是有不同的绿连通块与其相邻,答案又会减少\(1\)。Code#include<bits/stdc++.h>constlonglongIMX=1......