[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)个糖。问最多有多少个人会拿两个糖。

我是转化成求满足(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)就行了。

原文地址:https://www.cnblogs.com/wyxwyx/p/cfr516.html