摘要: 首先二分答案简化一下问题,现在只有0和1了,要求最后剩下的是1。再简化一下考虑没有已固定的位置怎么做。考虑每个位置由其合并到的位置连边,显然这样形成了一棵三叉树。设f[i]为使得某位置为1其子树至少要放多少个1即可,转移显然。加上已固定位置也类似,修改dp初值即可。 阅读全文
posted @ 2018-12-02 23:14 Gloid 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 对每个权值分别考虑。则只有单点加路径求和的操作。树上差分转化为求到根的路径和,子树加即可。再差分后bit即可。注意树上差分中根的父亲是0,已经忘了是第几次因为这个挂了。 阅读全文
posted @ 2018-12-02 21:52 Gloid 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 如果现在选定了一些要求消灭的敌人而不考虑积分,显然应该让每个敌人被刚好能消灭他的人消灭。再考虑最大化积分,显然我们应该优先消灭ci-bi大的敌人,所选用的a也应尽量大。于是按ci-bi从大到小排序,用一个multiset维护a,每次看其中是否有能消灭该敌人的人,如果有则将最小的删去,并用选中的Σci 阅读全文
posted @ 2018-12-02 20:48 Gloid 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 显然被留下的宝石应该贡献至少一位,否则就可以扔掉。所以如果n-k>=logw,直接输出所有数的or。现在n变得和k同阶了。于是设f[i][j]为前i个数or为j时至少选几个数,转移显然。当然可以只开一维。 阅读全文
posted @ 2018-12-02 19:36 Gloid 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 这个范围给的很像区间dp之类的,想了半天没一点思路,滚去看了一眼status被吓傻了。然后瞎猜了一发结论就过掉了。 求出逆序对数,判断是否为奇数即可。因为翻转区间会把将这段区间的逆序对取反,而长度为4x+2和4x+3的区间的数对数量是奇数,所以每次增加或减少的逆序对个数是奇数。 阅读全文
posted @ 2018-12-02 19:06 Gloid 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 显然最短循环节长度=i-next[i],则相当于给定next数组构造字符串。然后按照kmp的过程模拟即可。虽然这看起来是一个染色问题,但是由图的特殊性,如果next=0只要贪心地选最小的就可以了,稍微想一下容易证明。 阅读全文
posted @ 2018-12-02 18:11 Gloid 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 每个格子记录其左下的45°直角梯形区域的和及左下矩形区域的和即可。 阅读全文
posted @ 2018-12-02 16:41 Gloid 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 按时间排序,显然可能存在于答案中的公司价格应该单调递减。然后就可以大胆猜想感性证明其有决策单调性。具体地,设f(i,j)表示第i个消费公司和第j个生产公司搭配的获利,f(i,j)=(ti-tj)*(ci-cj),即证若f(i,j)>f(i,k) (k<j),则f(i+1,j)>f(i+1,k)。(t 阅读全文
posted @ 2018-12-02 15:50 Gloid 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]为前i种强度选了j种且其中第i种选时前i个的最小误差。转移枚举上个选啥前缀和优化即可。 阅读全文
posted @ 2018-12-02 13:56 Gloid 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 先给每个非零格子-1以满足俯视图不变。于是就相当于要求每行每列最大值不变。能减少剩余箱子的唯一方法是在要求相同的行列的交叉处放箱子以同时满足两个需求。给这些行列连边跑二分图匹配即可。注意必须格子初始时有箱子才能放在这。 阅读全文
posted @ 2018-12-02 12:44 Gloid 阅读(211) 评论(0) 推荐(0) 编辑