首页 > 其他分享 >CF870E题解

CF870E题解

时间:2022-10-06 09:23:48浏览次数:46  
标签:cnt 每个 题解 tot 轴上 坐标 CF870E leqslant

题目大意

给你平面上 \(n(1\leqslant n \leqslant 10^5)\) 个点,给出他们的坐标 \(x_i,y_i(-10^9\leqslant x_i,y_i \leqslant 10^9)\)。

对于每个点有三种操作:不进行任何操作、过这个点作一条平行于 \(x\) 轴的直线、过这个点作一条平行于 \(y\) 轴的直线。

问能够形成多少种不同的平面。

思路分析

个人认为这道题思维难度还是比较大的,比较难想。

首先很显然的一点,因为每个有三种状态,那么答案的上限就是 \(3^n\),即每一行每一列仅有不超过一个点,没有任何两个点在同一行或同一列。

然后我们有一个比较清奇的思路,就是将每个点的 \(x,y\) 坐标拆成一个 \(x\) 轴上的点和一个 \(y\) 轴上的点,每个 \(x\) 轴上的点要么不操作,要么画平行于 \(y\) 轴的线,每个 \(y\) 轴上的点要么不操作,要么画平行于 \(x\) 轴的线,那么这就形成了一个天然的二分图,然后将点对应的的 \(x,y\) 坐标连边。

举个例子:

\((1,2),(1,4),(3,2),(3,4)\) 四个点,那么图建出来就是这个样子:

左边表示 \(x\) 坐标,右边表示 \(y\) 坐标。

然后我们以这种方式建完图后,会发现形成了许多连通块,那么根据乘法原理,我们只需要统计每个连同块内的的答案,再累乘起来就行了。

现在我们看一看如何求每个连通块内的答案,先放结论:

设 \(tot\) 为连通块内点的数量,\(cnt\) 为边的数量,那么有

\[ans= \left\{\begin{array}{ll}2^{tot}(cnt\geqslant tot)\\2^{tot}-1(cnt+1=tot)\end{array}\right. \]

然后我们来分析一下结论中的两种情况:

  • \(cnt+1=tot\)

如下图:

理论上来说,每个点有两种情况,那么答案应该是 \(2^{tot}\),但仔细想一下,我们是把一个点拆开来了,那么就不可能左边的点选择画竖线的同时右边的点画横线,所以要减一。

那么我们可以换个思考方式,因为我们图里的每一条边代表的是一个平面直角坐标系内的坐标,所以我们可以将每一个点的方案放到它所连接的边上,那么这里不管我们 \(1\) 点或 \(2\) 点放在边上,都有一个点无法放上边,那么就要减一。

  • \(cnt \geqslant tot\)

同上面例子:

这种形成环的情况下,很显然每个点都能够成功的放到一条边上去,并且不会重边,所以答案就是 \(2^{tot}\)。

代码实现只需要用并查集这种及其基础的知识点,二分图只是用在思想上,代码就不放了,很简单。

标签:cnt,每个,题解,tot,轴上,坐标,CF870E,leqslant
From: https://www.cnblogs.com/yhx-error/p/16757011.html

相关文章

  • P2149 [SDOI2009] Elaxia的路线 题解
    首先考虑分别求出在两个人最短路上的边,这个就是用\(s\)跑一遍最短路,\(t\)跑一遍最短路,然后枚举边\((u,v)\),如果满足\((s\tou)+(u\tov)+(t\tov)=(s\tot)\)那么......
  • 第一道面试题 第一道困难题解答记录
    输入一个奇数n,输出一个由*构成的n阶实心菱形。输入格式一个奇数n。输出格式输出一个由*构成的n阶实心菱形。具体格式参照输出样例。数据范围1≤n≤99输......
  • 【题解】「AGC013D」Piling Up
    传送门题目大意:开始有\(n\)个黑白球在袋子中,但是不知道具体多少黑球白球,有\(m\)次操作,每次从袋子中先拿一个球,再放入一个黑球一个白球,再拿走一个球,求所有初始情况下......
  • 【whk】三调生物-缝合小鼠实验——小鼠肥胖原因 题解
    今天生物考试考了个小鼠肥胖原因的题,写个题解((我根据一位不愿意透露姓名的刘佳兴的描述扒下来了一道似乎很类似的题\((1)\)首先开第一问。他给定了限制是两种原因之一,......
  • CF1739 部分题解
    比赛链接:https://codeforces.com/contest/1739AB水题//bySkyRainWind#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algo......
  • CF1707B题解
    原题CF1707BDifferenceArray思路概述题意分析给定一个长度为\(n\)的序列\(\{a\}\)。每次执行以下操作对序列\(\{a\}\)进行差分,得到差分序列\(b_i=a_{i+1}-a......
  • 题解【CF1149C Tree Generator】
    CF1149CTreeGenerator™不一定更好的阅读体验。牛逼题&ZROIDay3数据结构选讲。来一波详细的题解。当时和\(\texttt{ys}\),\(\texttt{hy}\)还有小猴子讨论了半......
  • [题解]洛谷 P4700
    经典题没做出来,是不是该死?是不是该死?首先缩点什么的都是套路性的,然后发现一个事,你要是缩完点直接做,就相当于有向无玕图上标记一些点,求另一些点能到达多少个标记点,这个似乎......
  • CSP-S 模拟赛 #2 题解
    300rk3。题面是本校OJ的,链接挂了找我。upd:T1被xiaopanda的hack数据卡了。T1-A-BProblem出题是一件痛苦的事情!题目看多了也有审美疲劳,于是我舍弃了大家所熟......
  • texlive编译中发现字体有问题解决
    这里可以用tlmgrinfo命令搜索需要下载的字体并从CTAN官网下载。一般这个时候也会有对应的路径,比如texmf-dist/fonts/。把下载的字体解压放在这些路径下,然后分别运行mktexl......