目录
P3107 [USACO14OPEN]里程表Odometer [ 数位DP ]
P3527 [POI2011]MET-Meteors [ 整体二分 ]
P4064 [JXOI2017]加法 [ 贪心 + 树状数组 + 优先队列]
P2495 [SDOI2011]消耗战 [ 虚树 ]
学习虚树构造方法, 主要就是用栈维护树上的一条链
P5002 专心OI - 找祖先
考虑每个点的贡献
P4562 [JXOI2018]游戏 [ 组合数学 ]
如果一个数, 它不能被前面任何数筛出来, 我们称它为特征数
发现一种组合的 f 就是最后一个特征数的位置
我们考虑枚举特征数的位置来讨论贡献, 不妨设有cnt 个特征数
特征数可以枚举倍数来筛
P1505 [国家集训队]旅游 [ 树剖模板 ]
P4317 花神的数论题 [ 数位DP ]
数位DP就完了
P3107 [USACO14OPEN]里程表Odometer [ 数位DP ]
枚举需要的那个数, 然后枚举算重的两个数, 记忆化搜索就完了
P3527 [POI2011]MET-Meteors [ 整体二分 ]
二分答案是肯定的, 我们考虑整体二分
每次将1 - mid 的插入树状数组, 然后查询每一个树, 如果值大于需要的, 就丢到右边, 否则丢到左边
插入的时候维护一个全局指针就可以了
bzoj2989 [CDQ 分治]
放到二维平面上, 就是求到一个点曼哈顿距离不超过k的点的个数
发现这些点都在一个正方形内, 把这个正方形转45度就是垂直的了
然后就是查一个矩阵点的个数, 加上插入点, CDQ分治解决
P4064 [JXOI2017]加法 [ 贪心 + 树状数组 + 优先队列]
首先将操作进行排序, 然后二分答案, 如果当前点必须要选, 就选左端点在它之前, 右端点最大的那个
然后要区间加单点求值, 树状数组解决, 右端点最大优先队列解决