比赛链接:https://www.codechef.com/FEB18,题面和提交记录是公开的,这里就不再贴了
Chef And His Characters
模拟题
Chef And The Patents
模拟题
Permutation and Palindrome
模拟题
Car-pal Tunnel
结论比较简单
Broken Clock
求余弦的n倍角,可以用复数的快速幂解决
$cos(a)=x \\ sin(a)=\sqrt{1-x^2} \\ cos(na) = Re((x+\sqrt{1-x^2}i)^n)$
Re表示复数的实部,$\sqrt{1-x^2}i$可以看作一个整体参与运算,其平方为$x^2-1$
Points Inside A Polygon
多边形内部可以分成一些 三角形内部 和一些 线段内部,线段内部的整点很容易枚举,于是问题只剩下 三角形内部
用pick定理可以判定整点三角形内部是否有整点,如果有,只要找到一个,就可以递归得到三个三角形和三条线段继续处理
找出三角形内一个整点,可以用类欧几里得算法(计算整点个数)判定,二分找出整点位置
(Challenge) Biased Committee
标准分题,没想到太好的写法
我的做法是首先最大化 成绩向量 和 一个递减且零均值的等差数列 的 点积 作为初始解(这是一个可以直接贪心求解的问题),然后用爬山法调整
Chef and odd queries
用二维kdtree维护每个区间,询问的每个点会使包含这个点的区间的状态反转,对应于在kdtree上矩形操作,每次询问后全局查询并清空
Chef And Land Labeling
对每个不超过$\sqrt n$的质数,确定它在n以内的最高次幂的位置,然后也就可以确定每个数小于$\sqrt n$的质因子情况
大于$\sqrt n$的质因子至多只有一个,很容易推出来(大的质数有很多是互相等价的)
Lucas Theorem
题意求的是第一类斯特林数在n固定时,有几个k使得s(n,k)不被p整除,用生成函数不难求出s(n,0..n)%p的值,(打表可知)当n+2较大时可以递归为子问题处理