总结
T1
40分代码很简单
但是!由于没有认真审题,写成了从大到小排序(主要因为太简单,都没有测样例,我错了!
考试时的满分代码想了想,但考试时直觉这道题像trie树,但发现建不了树,然后就放弃了。
(赛后知道有人暴搜60分表示很震惊
100分思想:
因为正着搜并不能直接确定下一个的位置,所以可以考虑倒着搜
T2
状压dp(考试时也想到了,但状态没想出来…
所以我就写了个不知道能骗多少分的暴力
然而…oj太卡,提前5分钟交都没交上
T1卡成404,好不容易交上T2又卡,然后就没交上,然后就没有然后了…TwT
100分思想:就是状压,把状态压成一维,初值赋为INF,转移为:f[i]=min(f[i],f[i-(1<<j)]+minn),当然还要num记录当前合并后剩的数量,然后f求一个max
T3
考试完全没思路
30分:LIS+dp(我不会QAQ
100分:还是LIS
长度:有一个小技巧,维护x前的增序列,和x后的减序列
数量:维护一个up和down
T4
考试时有一个很暴力的想法,就是直接将蚊子拍内的整数点标记,平移,判断是否能拍死蚊子就行了
然后写了很长后发现我不会标记…
(考试时我都想到斜率了,但还是不会实现
tips:一个在多边形内部的点,任意引一条射线与多边形的交点一定时候奇数,外部的点交点一定为偶数。
参考上面,暴力代码就有了(小学生奥数我竟然不会!
然后考虑满分代码:
状压dp,f[2ni+j]=1表示(i,j)在内部,乘2是为了防止平移是重复,于是就将二维的平移变成了一维
就变成了2进制,可以用异或来判断是否可以拍死蚊子
但发现数据是500^2,有点大,可以用bitset维护