首页 > 其他分享 >Codeforces Round #902 (Div.1)

Codeforces Round #902 (Div.1)

时间:2023-10-08 20:23:36浏览次数:30  
标签:902 方案 le submission max 复杂度 Codeforces codeforces Div.1

A

注意到 \(a_i\ge 1\),因此我们先花 \(p\) 的代价买下 \(b\) 最小的,然后一定可以一直用当前可能的最小代价买下后续的人。不难发现这一定是最优的方案。

只需要将序列排序或者用 std::multiset 来维护。单组数据时间复杂度 \(O(n\log n)\)。

https://codeforces.com/contest/1876/submission/227124154

B

考虑对 \(v=0,1,\cdots,10^5\) 算出 \(\max >v\) 的方案数,全部求和就是所有方案的 \(\max\) 之和。

考虑怎么算 \(\max >v\) 的方案数,用 \(2^n\) 减去 \(\max \le v\) 的方案数即可,而 \(\max \le v\) 相当于选出的数中只能有 \(\le v\) 的数。考虑每个 \(x=1,2,\cdots,n\),如果 \(x\) 的所有倍数位置都 \(\le v\) 那就可以选中 \(x\),否则一定不能选中 \(x\)。那么方案数就是 \(2\) 的可以选中的位置的个数次幂。

提前预处理出来 \(1\sim n\) 中所有数的约数集合,然后每次加入 \(=v\) 的数,枚举这些数的位置的约数看是否符合条件即可。复杂度 \(O(n\log n)\)。

https://codeforces.com/contest/1876/submission/227128795

C

考虑对每个 \(i\) 连有向边 \(i\to a_i\),那么将得到一个内向基环森林。下面我们用 \(i\) 是白色表示 \(i\) 未被圈住,黑色表示 \(i\) 被圈住。那么可以发现,一个染色方案合法当且仅当:

  • 对每个白色的位置 \(i\),\(a_i\) 需要是黑色的。
  • 对每个黑色的位置 \(i\),至少存在一个 \(j\) 使得 \(a_j=i\),且 \(j\) 是白色的。

考虑拓扑排序,先把所有入度为 \(0\) 的点确定为白色,接下来根据上面的两个条件有两种转移:

  • 若 \(x\) 确定为白色,则 \(a_x\) 确定为黑色。
  • 若 \(x\) 的所有前驱都已经确定为黑色,则 \(x\) 可以被确定为白色。

进行拓扑排序并删掉所有已经确定颜色的点后,图中只会剩下若干个环。如果此时剩下了奇环则无解,否则将每个偶环交替黑白染色即可。时间复杂度 \(O(n)\)。

代码用了并查集来帮助找环,其时间复杂度为 \(O(n\log n)\)。

https://codeforces.com/contest/1876/submission/227148089

D

题目相当于对每种颜色确定用 RBRB... 还是 BRBR... 的方案进行染色。

注意到红蓝两色是完全对称的,因此红色字典序严格更小的方案数等于蓝色字典序严格更小的方案数。设出现至少一次的颜色数为 \(c\),则总的方案数为 \(2^c\)。如果红蓝相同的方案数是 \(w\),那么答案就是 \(\frac{1}{2}(2^c-w)\)。现在只需要算出 \(w\)。

首先,如果有一种颜色的出现次数为奇数,则必有 \(w=0\);否则,考虑每种颜色,设其出现位置依次为 \(p_1,p_2,\cdots,p_{2k}\),我们把它看作 \(k\) 个区间 \([p_{2i-1},p_{2i}]\),其中 \(1\le i\le k\)。

考虑两种颜色 \(i,j\),如果存在 \(i\) 的一个区间和 \(j\) 的一个区间相交但互不包含,那么我们在 \(i,j\) 之间连边;如果 \(i\) 的某个区间包含 \(j\) 的某个区间或者 \(j\) 包含 \(i\),那么必有 \(w=0\)。连边之后,设连通块个数为 \(x\),那么有 \(w=2^x\)。

直接枚举两种颜色是不行的,考虑把所有区间放在一起按左端点排序,只考虑相邻的两个区间之间的连边即可。包含的情况也容易处理。不难做到 \(O(n\log n)\) 的复杂度。

https://codeforces.com/contest/1876/submission/227180729

标签:902,方案,le,submission,max,复杂度,Codeforces,codeforces,Div.1
From: https://www.cnblogs.com/YunQianQwQ/p/17750052.html

相关文章

  • 【题解】CodeForces-1874/1875
    CodeForces-1875AJellyfishandUndertale一定是等待降到\(1\)或者能补满到\(a\)时才使用工具,依题意模拟即可。提交记录:Submission-CodeForcesCodeForces-1874AJellyfishandGame这种题目有点思路但是不是很会。赛时第一发写得根据奇偶性判断,\(k\)为偶数错了,然后感......
  • Codeforces Round 900 (Div. 3) E. Iva & Pav (位运算)
    CodeforcesRound900(Div.3)E.Iva&Pav//思路:10^9转换为2^32上的位,进行位运算,a[x][i]为到x为止第i位的1个数前缀和//对于与运算,如果当前i的前缀和不为r-l+1,则这一位的与运算结果为0//当找到从左往右第一个位置i为1使得k在这位为0,则与运算前缀大于k//二分查找最后一......
  • Codeforces Round 901 (Div. 2) C. Jellyfish and Green Apple (位运算)
    CodeforcesRound901(Div.2)C.JellyfishandGreenApple//思路:浮点数转二进制,a/b的结果为gcd(a,b)*最简分式(n/m)的结果//苹果能分的前提是人数得是一个2的次幂数,通过切割只能分为形同0.001的二进制小数//a/b的二进制如果在从左到右的sp位为1,则需要切割到这个情况//一个......
  • Codeforces Global Round 2
    C题结论就是每行每列不同的个数必须是偶数。D题首先注意到对于长度相同的询问,答案都是一样的。同时相同的s可以直接丢掉。那么我们将s排序之后,将相邻的差再进行排序,然后将询问从小到大处理。相当于是将这些段拼接在一起。#include<cstdio>#include<algorithm>#include<cstr......
  • 【计算几何】codeforces上面的一点简简单单的计算几何入门题
    开篇碎碎念我真的好喜欢开篇碎碎念啊(可恶真的是太话痨啦)最近有在cf上面写写题,唔不过还没上百题,过两天就可以写百题纪念啦,也还没上青,陌陌菜菜,陌陌在努力变强捏。cf1850GTheMorningStartag:用map进行维护,斜率与坐标的关系题目链接:G.TheMorningStar题意:找到一个点,使另一......
  • 「题解」Codeforces Round 883 (Div. 3)
    A.EscalatorConversationsProblem[题目](RudolphandCuttheRope)Sol&Code绳子长度大于钉子高度的要剪#include<bits/stdc++.h>typedeflonglongll;intmin(inta,intb){returna<b?a:b;}intmax(inta,intb){returna>b?a:b;}in......
  • 「题解」Codeforces Round 888 (Div. 3)
    A.EscalatorConversationsProblem题目Sol&Code签到#include<bits/stdc++.h>typedeflonglongll;intmin(inta,intb){returna<b?a:b;}intmax(inta,intb){returna>b?a:b;}intT,n,m,k,h;intmain(){scanf(......
  • 「题解」Codeforces Round 891 (Div. 3)
    A.ArrayColoringProblem题目Sol&Code只有数列的和为偶数时才符合要求,即有任意个偶数,偶数个奇数。将这些数分成两部分,发现两部分初始值\(0\)为偶数,偶数不会影响奇偶性,故需要偶数个奇数。#include<bits/stdc++.h>#defineN51typedeflonglongll;intmin(inta,......
  • CodeForces 814E An unavoidable detour for home 题解
    更好的阅读体验题意题目链接(洛谷翻译)给出\(n\)个点,和每个点的度\(d_i\)让你构造出一张无向图满足以下两条性质:点\(1\)到点\(i\)仅有唯一一条最短路。点\(1\)到点\(i\)的最短路长度大于等于点\(1\)到点\(i-1\)的最短路长度。求能构成满足条件的无向图......
  • CodeForces 1864H Asterism Stream
    洛谷传送门CF传送门好题。考虑计算\(x\)落在\([1,n-1]\)的概率。设\(f_i\)为\(x\)经过\(i\)的概率,答案即为\(\sum\limits_{i=1}^{n-1}f_i\)。\(f\)有一个朴素的递推:\[f_i=\begin{cases}\frac{1}{2}(f_{i-1}+f_{\frac{i}{2}})&2\midi\\\fr......