A. A Twisty Movement
若是给定一个 1/2 序列求它的最长不降子序列,可以枚举一个分界
如果是翻转一个区间的话,这个分界一定会取在翻转的区间内,否则就不如不翻转。
我们依然枚举
这道题让我想到了 HDU6357 。那题的数据范围和值域都要比这题大,做法也不同。这里是我的题解作为参考。
B. A Determined Cleanup
考虑多项式
发现第
可以看出
C. A Colourful Prospect
虽然可以讨论,但这里考虑
考虑欧拉公式:
下面是核心代码,省略了计算几何模板:
int ans=2; bool flag=1;
PointSet ps;
for (int i=0; i<n; i++)
{
PointSet inter;
for (int j=0; j<n; j++)
if (j!=i) getCircleIntersection(c[i], c[j], inter);
eraseCoincideElements(inter);
ans+=inter.size()+inter.empty();
if (!inter.empty()) flag=0;
for (Point P:inter) ps.push_back(P);
}
eraseCoincideElements(ps);
ans-=ps.size()+flag;
printf("%d\n", ans);