T1 【GDKOI2006】新红黑树
T2 【GDKOI2006】防御力量
给n个点,还有一个A点,要求删除一些点,使得A点在剩下的点的凸包上。
枚举一个点,作出与A点的直线,那么点被分为两侧,取两侧中较小的作为答案。
T3 【GDOI2006】拯救亚特兰蒂斯
给K个怪物,以及剑术和法术,给出每种术法能打败的怪兽,且每个怪兽只会被一种剑术和一种法术击败,学习每种术法的时间为1,求打败所有怪兽需要的时间。
这种题目很容易往网络流方向想,把可以击败同一怪兽的剑术和法术连边,那么问题就变成了选择最少的点,使其覆盖所有的边,而且图是一个二分图,问题就是一个经典的最小点集覆盖问题。
T4 【GDOI2006】最大和
给一个矩阵,以任意一个点为起点,每次向以当前点为左上角的矩阵中任意一个位置移动,求通过的位置的数的总和的最大值。
很容易想到一个 O ( n 6 ) O(n^6) O(n6)的dp,但是状态里其实不用记录上一个点是什么,只需要记录与上一个点的乘积模p的值,所以设 f i , j , v a l f_{i,j,val} fi,j,val表示当前到(i,j)这个点, v a l val val为与上个点的乘积, O ( n 4 ) O(n^4) O(n4)预处理乘积要离散化,所以最后的时间复杂度为 O ( n 4 l o g ) O(n^4log) O(n4log)。