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)个糖。问最多有多少个人会拿两个糖。
我是转化成求满足(kmod (n+y) le y)且(kmod (n+y)le (r-l)mod 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)就行了。