首页 > 其他分享 >CF1887E Good Colorings

CF1887E Good Colorings

时间:2023-10-24 16:13:36浏览次数:29  
标签:Good 颜色 边权 CF1887E 二元关系 偶环 Colorings

矩形的四个角颜色不同是个很难描述的条件,不妨利用行列二元关系转化,将 \((x,y)\) 颜色为 \(c\) 改为在 \(x\) 和 \(y\) 之间连接边权为 \(c\) 的边,则四角颜色不同就被我们转化为了,存在一个边权各不相同的四元环。

此时把特殊条件【初始给定 \(2n\) 个格子 \(2n\) 个不同颜色】放在转化之后的问题上考虑,发现这个条件就意味着,新图上一定至少存在一个边权互不相同的偶环。

考虑每次将这个环劈成两半(可以通过偏移使其变成两个偶环),设询问边边权为 \(w\),则此时一定存在至少一边偶环不存在边权为 \(w\) 的边,选择该偶环作为新的偶环即可。由于每次操作偶环规模减半,询问次数为 \(O(\log n)\) 量级(常数上更小一些),故可过。

对于描述困难的条件可以通过一些建图技巧(找二元关系、简化)使其变得具体。

标签:Good,颜色,边权,CF1887E,二元关系,偶环,Colorings
From: https://www.cnblogs.com/ydtz/p/17785054.html

相关文章

  • JGoodies Usage Notes
    导包、设置导入包:<dependency><groupId>com.jgoodies</groupId><artifactId>forms</artifactId><version>1.2.1</version></dependency>idea里面布局切换一下:行列规范解释他是一个类似表格布局方式,你先设计好一个大的表格背景,然后将你想要的组件放置到指......
  • The 2nd Universal Cup. Stage 5: Northern J Sets May Be Good
    题解我们考虑计算\(\sum_{S\subseteq\{1,2,3,\cdots,n\}}(-1)^{cnt(S)}\),这里\(cnt(S)\)表示\(S\)集合的导出子图的边数。我们记\(x_i=[i\inS]\)。我们考虑删掉\(n\)号点。注意到如果\(x_i\)的取值会影响\(cnt(s)\)的奇偶性,则正负相消,贡献为\(0\)。所以我们需......
  • [ARC167D] Good Permutation 题解
    题意对于一个长度为\(N\)的排列\(Q\),定义其为好的,当且仅当对于任意整数\(i\in\left[1,N\right]\),在进行若干次操作\(i\leftarrowQ_i\)后可以得到\(i=1\)。给定一个排列\(P\),定义一次操作为交换两个数。定义\(M\)为可以将\(P\)变为一个好的的排列的最小操......
  • ARC167D Good Permutation 题解
    题意给定一个长度为\(N\)的排列\((P_1,P_2,\cdots,P_N)\)。称一个排列\(P\)为“好排列”当且仅当对于所有\(1\leqx\leqN\),都能通过不停地使\(x\leftarrowP_x\)将\(x\)变成\(1\)。通过最小次数操作将\(P\)变成“好排列”,每次操作为交换\(P\)中的两个数\(P_i\)......
  • CF264B Good Sequences 题解
    GoodSequences状态很显然,设\(f[i]\)表示位置\(i\)的最长长度。关键是转移,暴力转移是\(O(n^2)\)的,我们必须找到一个更优秀的转移。因为一个数的质因子数量是\(O(\logn)\)的,而只有和这个数具有相同质因子的数是可以转移的;因此我们可以对于每个质数\(p\),设一个\(mx_p......
  • CF1856B Good Arrays
    题意简述:给定一个序列\(a\),我们定义一个序列\(b\)是好的当且仅当对于\(1\dotsn\)内的每一个\(i\),\(a_i\neqb_i\)且\(\sum_{i=1}^na_i=\sum_{i=1}^nb_i\)(\(a_i\),\(b_i\)均为正整数)。现在有\(T\)组数据,每组数据给定\(n\)和序列\(a\),判断是否存在一个合法的序......
  • 代码源:a-good string(CF1385D,分支)
    传送点击查看代码#include<bits/stdc++.h>usingnamespacestd;chars[131080];int_solve(intL,intR,charx){ if(L==R)returns[L]!=x; intM=L+(R-L)/2; intt1=0,t2=0; for(inti=L;i<=M;++i)if(s[i]!=x)t1++; for(inti=M+1;i<=R;++i)if(s[i]!=x)......
  • 10 Rules of Good and Bad Studying 学习的10条好与坏规则
    10RulesofGoodStudying良好学习的10条法则Userecall.Afteryoureadapage,lookawayandrecallthemainideas.Highlightverylittle,andneverhighlightanythingyouhaven’tputinyourmindfirstbyrecalling.Tryrecallingmainideaswhenyouare......
  • Rules for good java.util.Timer use
    ManypeoplehaveprobablyusedTimerforsomequickone-offtimertaskswhereusingawholelibrarylikeQuartzdon’tmakesense.OnethingtobeawareofisthatTimer’sconstructorwillstartandspawnathread.Thisisarecipefor......
  • 1521A - Nastia and Nearly Good Numbers
    A.NastiaandNearlyGoodNumbershttps://codeforces.com/problemset/problem/1521/A"""思路:1.就是普通的打印,NO的情况是只有b=1的时候才会出现,其他的都是YES,如果不想再继续分情况就把a*b放在中间做y,或者做x也可,避免(b-1)=1,最后要x+y=z"""forlinein[*open(0)......