[CF]Round 516
A Make a triangle!
题意:给定三根线段,问最少要延长多少才能拼成一个三角形。
数学题。
B Equations of Mathematical Magic
题意:求$a - (a \oplus b)-x=0 $的非负整数解的个数。
打表发现是\(a\)在二进制下\(1\)的数量。
C Oh Those Palindromes
题意:求字符串\(S\)重新排列后的回文子串的最大数量。
猜想一样的放在一起会最多,然后就对了。
D Labyrinth
题意:给定一个迷宫,有一些障碍,最多只能向左\(x\)次,向右\(y\)次,问能到几个点。
就是一个bfs。注意如果到达一个点的时候比上一次向左或向右的次数更多的话,就要继续入队,但不重复计算答案。我就在这被hack了。
E Dwarves, Hats and Extrasensory Abilities
题意:交互题,每次输出一个点的坐标,然后读入这个点的坐标的颜色(黑或白),最后输出一条线使得同色的点在这条线的一侧。
我一开始想的是在一个圆弧上二分极角,保证同色的连续就行了,但是,这样的话精度会爆(30次二分)。
UPD:其实不用在圆弧上,直接在一条直线上二分就行,保证直线一边是黑一边是白就可以了。
F Candies for Children
题意:有\(n\)个人围成一个环,从\(l\)开始,每个人拿一个或两个糖,转若干圈后,到\(r\)停止,一共消耗了\(k\)个糖。问最多有多少个人会拿两个糖。
我是转化成求满足\(k\bmod (n+y) \le y\)且\(k\bmod (n+y)\le (r-l)\bmod n +1\)的最大的\(y\)。然后就不会了2333
这个题可以分类讨论,用两种不同的方法做(先假定最后一个人不是“sweet tooth”或者是且吃两个糖)
第一种解法是\(O(n^2)\)的,我们把这个圆分成两部分,一部分是\(l..r\)范围的,称为\(X\),剩余的部分称为\(Y\),\(X\)比\(Y\)多吃一次糖。我们可以枚举\(X\),\(Y\)中有多少个"sweet tooth",然后验证是否合法。
第二种解法是\(O(k/n)\)的,我们先假设转的圈数\(t>0\),我们发现,\(X\)中的人要么贡献\(t+1\),要么贡献\(2t+2\),\(Y\)中的人要么贡献\(t\),要么贡献\(2t\),我们先假设没有"sweet tooth",然后就会有一个方程\((t+1)a+tb = k-t-|X|\) 枚举圈数\(t\)然后求最大的\(a+b\)就行了。