首页 > 其他分享 >Codeforces Round #814

Codeforces Round #814

时间:2022-09-22 16:44:06浏览次数:76  
标签:连边 连通 红灯区 蓝边 Codeforces 括号 814 Round block

难得遇上一把 CF ,结果 unr 了。

A Mainak and Array

显然最优策略只有三种:选一个 \(i\in [1,n-1]\) 的 \(a_i\) 作为 \(a_1\) ;选一个 \(i\in [2,n]\) 的 \(a_i\) 作为 \(a_n\) ;shuffle 整个序列若干次。

B Mainak and Interesting Sequence

构造题,讨论以下几种情况:

  • 若 \(n>m\) ,无解;
  • 否则,若 \(n\) 为奇数,放 \(n-1\) 个 \(1\) 与 \(1\) 个 \(m-n+1\) ;
  • 若 \(n\) 为偶数,\(m\) 为偶数,放 \(n-2\) 个 \(1\) 与 \(1\) 个 \(\frac{m-n+2}{2}\) 。
  • 若 \(n\) 为偶数,\(m\) 为奇数,无解。

C Jatayu's Balanced Bracket Sequence

每个左括号都只与它后面能匹配的第一个右括号连边,并且当它成功匹配时,如果它上一个字符是右括号,则还要将它们之间连上边,这样任意一对可以匹配的括号都可以传递出来。连边的过程中用并查集维护连通块数目即可。

D Edge Split

把所有红边做成一棵生成树一定是最优方案之一:如果只用红边时整张图还没有连通,就可以把一条蓝边换成红边,使得红边连通块减 1,而蓝边连通块最多加 1;如果红边在生成树之外还有其他边,将非树边换成蓝边,红边连通块不变,蓝边连通块不会增加。

于是我们可以先随便做一棵生成树出来,将树边作为红边,非树边作为蓝边。此时红边连通块数目一定是 1,而非树边的数目最多为 3,故蓝边连通块在蓝边不形成三元环时,数目最少。

如果 3 条蓝边形成了三元环 \(u-v ,v-w,u-w\) ,且在生成树上 \(w\) 是 \(v\) 的祖先,\(v\) 是 \(u\) 的祖先,那么我们可以进行调整,将 \(v-fa(v)\) 这条边换成蓝边,将 \(v-w\) 这条边换成红边,此时红边仍然形成生成树,而蓝边就不会出现三元环了。

E Almost Perfect

考虑满足条件的排列 \(p\) 的置换环结构:环的大小只可能是 1,2,4。其中大小为 4 的环一定是由两对相邻的数构成的。我们枚举有 \(k\) 个大小为 4 的环,则答案为

\[\sum_{4k\le n}\binom{n-2k}{2k}\frac{(2k)!}{k!}f(n-4k) \]

其中 \(f(k)\) 是把 \(k\) 个点分成若干个一元环和二元环的方案数,考虑最后一个点是否被分到某个二元环中,可以得出递推式 \(f(k)=f(k-1)+(k-1)f(k-2)\) ,边界为 \(f(0)=f(1)=1\) 。

F Late for Work

首先可以把每个 \(\sum_{i=1}^{k-1}d_i\) 加到 \(c_k\) 上,并且让最后的答案加上 \(\sum d_i\) ,就可以不再考虑 \(d_i\) 的影响。利用改变后的 \(c_i\) 可以计算出每个红绿灯的绿灯时间区间。

显然只用考虑所有作为区间端点的时间点,从前往后依次考虑每个红绿灯,每次新增一个红灯区间时,会导致之前的某些时间点变得不可用,需要等到新的绿灯区间端点才能继续走。

于是可以用 multiset 维护当前所有还没有被红灯区间 block 住的所有时间点,新增一个红灯区间时,取出被它 block 住的所有时间点,从这些时间点向新增的绿灯区间端点连边,边权为对应的需要等待的时间。最后新建虚拟的起点与终点,从起点向所有一开始没有被 block 住的时间点连边,从最后没有被 block 住的时间点向终点连边,跑一个从起点到终点的最段路即可。

标签:连边,连通,红灯区,蓝边,Codeforces,括号,814,Round,block
From: https://www.cnblogs.com/jklover/p/16719876.html

相关文章

  • CodeTON Round 1 D
    D.K-good我们考虑变式我们设我们有一个k(n-(k+1)k/2)%k=0n=(k+1)k/2+kp2n=k(k+1+2p)因为我们等式右边k和k+1+2p奇偶性不同我们要求的就是k而对于我们已知的就只......
  • Polycarp Writes a String from Memory CodeForces - 1702B
    PolycarpWritesaStringfromMemoryCodeForces-1702B给定大小为n的字符串,至多每3种不同的字母分为一组,最少将字符串分为多少组?Input第一行输入数据包含一个整......
  • Jzzhu and Children CodeForces - 450A
    JzzhuandChildrenCodeForces-450A有n个孩子在老师的学校上学。老师决定给这些孩子一些苹果。让我们将所有孩子编号为1到n。第i个孩子想要获得至少ai的苹果......
  • CodeForces-189A Cut Ribbon-必须装满的背包
    题意:给定n,s.t. a1*x1+a2*x2+a3*x3=n(1)max:x1+x2+x3对比完全背包,(1)式取等号而不是<=这个差别影响了我们的结果比如:n=7,a1=a2=5,a3=2如果按照完全背包的转移:则在dp[7......
  • Codeforces Round #813 (Div. 2) - D. Empty Graph
    构造Problem-D-Codeforces题意给\(n(1<=n<=10^5)\)个点,与权值\(a_i\),这\(n\)个点组成一个完全图,\(a_l\)与\(a_r\)连的边的权值为\(min(a_l,a_{l+1}...a_{r......
  • Codeforces Round #821 (Div. 2) D E
    E首先发现无论何时,每个位置上至多只会有一个球。原因:每个时刻每个球都会移动,所以移动到某个点的时间一定,自然出生时间也一定,显然不可能会有2个点出生时间相同。既然如......
  • Educational Codeforces Round 119 E
    E.ReplacetheNumbers开始想到了一个二分的做法好像是O(nlog)的后来才想了一下可以在两个数组之间反复横跳那我是不是像记忆化搜索一样记录一个路径即可我们记录f[i]......
  • Codeforces Round #818 (Div. 2) - D. Madoka and The Corruption Scheme
    思维+组合数学Problem-D-Codeforces题意有\(2^n\)个人进行锦标赛,编号1~\(2^n\),每一场输的人失去比赛资格,赢的人继续。Madoka可以选择他们进行的顺序,以及决定哪一......
  • Codeforces 821 Div2
    T1:大小为n的数组,最多进行k次操作:下标模k意义下相等则可进行交换。求操作后连续k个元素的最大值固定最大值的k个连续因素小标为[0,k),现在只需使得它为最大即可,将可交换位......
  • Codeforces Round #821 (Div. 2) - D2. Zero-One (Hard Version)
    区间DPProblem-D2-Codeforces题意给一个长度为\(n(5<=n<=5000)\)的01串,每次操作可选择一个\(l,r(l<r)\),把\(s[l],s[r]\)反转。如果\(l+1==r\),花费为x,否......