首页 > 其他分享 >Codeforces Round 974 (Div. 3)

Codeforces Round 974 (Div. 3)

时间:2024-09-22 17:02:33浏览次数:1  
标签:974 sum Codeforces 异或 枚举 区间 Div Robin Hood

A. Robin Helps

模拟即可。

B. Robin Hood and the Major Oak

注意到 \(i^i \equiv i \pmod 2\),因此 \(\sum i^i \equiv \sum i \pmod 2\)。等差数列求和即可。

C. Robin Hood in Town

二分答案即可。

D. Robert Hood and Mrs Hood

枚举区间 \([l, l + d - 1]\)。此时我们需要快速求解有多少区间与 \([l, l + d - 1]\) 有交。

考虑求解其补集。注意到 \([l_1,r_1]\) 与 \([l_2, r_2]\) 无交意味 \(r_1 < l_2\) 或 \(r_2 < l_1\)。问题变成了求有多少区间的左端点小于某个值,以及有多少区间的右端点大于某个值。前缀和预处理即可。

E. Rendez-vous de Marian et Robin

考虑拆点。我们将点 \(i\) 拆成点 \(i\) 和点 \(i + n\),其中点 \(i\) 表示到 \(i\) 点时没有骑马,点 \(i + n\) 表示到 \(i\) 点时骑上了马。那么对于一个有马的点 \(u\) 连边 \((u, u+n,0)\),对于一条边 \(u, v, c\) 连边 \((u,v,c)\) 以及 \((u+n,v+n, c/2)\)。然后分别从点 \(1, n\) 跑 Dijkstra 求单源最短路。最后枚举两人到哪个点集合,并分别枚举两人到达时是否骑马即可。

F. Sheriff's Defense

设 \(f(u, 0/1)\) 表示若只考虑以 \(u\) 为根的子树,且 \(u\) 是否被强化过的最多金币。

转移考虑 \(u\) 的每个儿子是否被强化。令 \(u\) 的儿子为 \(v\),则:

\[\begin{matrix} f(u, 0) &=& \sum_v \max (f(v,0), f(v, 1) )\\ f(u, 1) &=& a_u+\sum_v \max( f(v,0), f(v, 1)-c)\\ \end{matrix} \]

H. Robin Hood Archery

注意到当区间长度为奇数时一定为 NO。答案为 YES 当且仅当长度为偶数,且区间内第 \(2k-1\) 大的数都等于 \(2k\) 大的数。

这个条件等价于区间内每种数字都出现了偶数次

考虑异或哈希。该命题成立的必要条件是区间内所有数的异或和为 \(0\)。我们可以通过赋随机权值的方式使其充分性提高。

快速求解区间异或和可以差分。

标签:974,sum,Codeforces,异或,枚举,区间,Div,Robin,Hood
From: https://www.cnblogs.com/2huk/p/18425520

相关文章

  • Codeforces Round 974 (Div. 3)
    A:按题意模拟。B:\(i^i\)与\(i\)奇偶性相同,求\((n-k,n]\)的奇数个数。C:二分答案。D:即求每个\((i-d,i]\)有多少线段覆盖。扫到\(i\)时加入所有\(i=l\)的,弹出所有\(r\lei-d\)的。E:枚举相遇点,答案就是\(\min\big(\max(d_1,d_2)\big)\),最短路时记录状态......
  • Codeforces Round 973 (Div. 2)
    CodeforcesRound973(Div.2)A-Zhan'sBlender由于总量固定因此只用计算两个处理时间最大值即是所求#include<bits/stdc++.h>usingnamespacestd;intn;doublex,y;voidsolve(){ cin>>n; cin>>x>>y; inttim1=ceil(n*1.0/x); inttim2......
  • Codeforces Round 974 (Div. 3)
    A.RobinHelps题意:Robin一开始的钱为0,每个人都有ai个金币,如果ai>=k则Robin会拿着它的金币, 如果ai==0且手上有金币,Robin会送出1金币,输出Robin送了几次思路:按照题意Code:#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;usingi6......
  • Codeforces Round 973 (Div. 2)
    SolCF2013A每次最多操作\(\min(x,y)\),故答案为\(\lceil\frac{n}{\min(x,y)}\rceil\)。#include<bits/stdc++.h>usingnamespacestd;usingu32=unsigned;usingi64=longlong;usingu64=unsignedlonglong;usingi128=__int128;#defineIOS#de......
  • Codeforces Round 973 (Div. 2) B. Battle for Survive
    题目链接:题目大意:把题目的操作翻译一下就是拿一个数去减后面的一个数,然后前面这个数会消掉。最小化最后剩下的数。思路:容易看出,最后剩下的一定是最后一个数,因为最后一个数一定不会被消去,又已知最后只剩下一个数,那么就是最后一个数。前面的所有数都要被消去,最差的情况就......
  • for循环—不同div显示不同样式
    for出来的div想要显示不同的样式,可以通过动态class,根据需要的条件指示控制样式,例如用index第一个div显示first-card的样式,第二个div显示second-card的样式<divclass="meal"><el-cardclass="meal_details"v-for="(item,index)inm......
  • POLIR-Society-Sociology-Individual-Social Identity Theory: 社会身份理论
    POLIR-Society-Sociology:社会学Individual:SocialIdentityTheory:社会身份理论InSociology,WehavethisSocialIdentifyTheory,Whichisabouthowwedefineourselvesasindividualperson,ShowcasingWhowewanttobeandHowotherpeopleseeusasaperso......
  • Educational Codeforces Round 135 (Rated for Div. 2)D. Letter Picking
    注意读题,每次拿完之后是放在开头。所以先手不败,因为最后剩下两个的时候,先手一定可以取较小值。考虑怎样会出现平局?首先已经知道了先手不败,那么对于后手来说,他追求的就是平局,也就是尽可能的保证每一步都都与先手相同。所以,如果是回文串,或者两两相同,或者回文串包两两相同的情况,才......
  • Educational Codeforces Round 136 (Rated for Div. 2) D. Reset K Edges
    这道题目我们可以考虑二分做,二分出最终的深度,然后尝试是否能使用不超过\(k\)次操作使得深度符合条件。考虑如何和判断,我们可以从根节点开始搜索,如果当前点的深度为\(mid+1\),就对当前点进行操作。但很可惜,这种贪心方法可以很容易的举出反例,比如深度为\(mid\)的点下面有很多个叶......
  • OpenCV(cv::divide())
    目录1.函数定义2.工作原理3.示例3.1矩阵除法3.2矩阵和标量的除法3.3使用缩放因子4.注意事项5.应用场景cv::divide()是OpenCV中用于执行数组或标量的逐元素除法操作的函数。它允许对矩阵进行元素级的除法操作,支持两种使用方式:矩阵与矩阵之间的除法,或矩阵与标量之间的......