2018/3/26
今天T1 T2都是思路不错的题
T1 divisor
如果只考虑两个数之间的关系就是$$\sum_{i=1}^{A}\sum_{j=1}^{B}d(i*j)=\sum_{(i,j)=1}^{}\lfloor \frac{A}{i} \rfloor\lfloor \frac{B}{j} \rfloor$$
然后拓展到三个之间就是$$\sum_{(i,j)=1,(j,k)=1,(i,k=1)}^{}\lfloor \frac{A}{i} \rfloor\lfloor \frac{B}{j} \rfloor\lfloor \frac{C}{k} \rfloor$$
然后我们就是考虑如果直接枚举i,j,k的话,很难保证他们两两互质,那我们就先保证(i,j)==1,(i,k)==1,这个在枚举的时候就可以与用预处理的gcd来判断,然后我们在用通常的套路加一个mu来保证j,k互质,然后在把mu提到前面来最终的式子就是$$\sum_{i=1}^{A}\lfloor \frac{A}{i} \rfloor\sum_{t=1}^{C}\mu(t)\sum_{j=1,(i,t*j)=1}^{\lfloor \frac{B}{t} \rfloor}\lfloor \frac{B}{t*j} \rfloor\sum_{k=1,(i,t*k)=1}^{\lfloor \frac{C}{t} \rfloor}\lfloor \frac{C}{t*k}\rfloor$$
然后就可以O(n^2log) 解决了
T2 isn
这个题其实有很显然的结论,就是如果如果我们还可以删除一个元素,那么现在的序列中一定存在逆序的数,那么我们考虑,每次构造出来一个不降的序列,我们都可以枚举最后删除了哪些数,假设我们构成的不降的长度是j,然后有k个逆序的数,那么构成这个答案的方案数就是(n-j-1)!*k,那么我们就可以构造一个DP来计算,设计f[i][j][k],表示强制以i结尾的不降序列,长度是j,有k个逆序的存在,然后这么n^4DP就可以得到72分(主要是有用的状态数很少),然后我们考,虑优化这个DP,可以观察到,每次的j是很难去掉的,因为是(n-j-1)! 然后我们就可以考虑优化掉这个k,然后我们重新定义一下两个DP数据组,就是f[i][j]表示方案数,g[i][j]表示所有方案中k的和,然后我们就成功的优化掉了k,可以拿到92分
正解就更神了,就是先找出所有我们能构造出来的不降序列,设f[i]是长度为i的不降序列的方案数,那么构造他的全部方案(先不考虑不合法的)就是f[i]*(n-i)!,然后我们在考虑怎么减去不合法的方案数,其实就是,如果到i不合法,那么到i+1这一步就已经是不降序列了,那么我们要减去的方案数就是f[i+1]*(n-i-1)!*(i+1)。 至于f[i],就随便DP一下,然后用树状数组优化一下就好了
T3 tower
这个题看懂了显然就是可以二分,然后我们换一个方向,就是考虑最少用多少个tower能使他们围出的面积有交,这个其实就很好弄了,就是每次选择连续的K个tower,然后半平面交一发,就好了