摘要:
题目传送门 解题思路: 将红色的设置为-1,绿色的为1,统计前缀和sum,如果sum[i] == sum[j],则说明i~j是一个稳定的区间 因为答案要求最大,所以我们要记录每个sum值的最左端点(也就是哪个位置第一次出现某个sum值) 每当遇到某个sum值,便利用最左端点求出区间长度,更新答案 吐 阅读全文
摘要:
题目传送门 解题思路: 一道特别毒瘤的题,好像目前没有完全的正解,只有一个比较优的解法: f[i][j]表示从i~j所用的最小数量. 首先,去重,就是将所有连续的相同的点缩成一个点,sum[i]表示缩点后新图第i个位置有几个点. 如果g[i]==g[j],加起来的数量大于等于三(sum[i] + s 阅读全文
摘要:
题目传送门 解题思路: 这道题说是矩阵,实际上每一行之间没联系,所以只需跑N此区间DP就行了. f[i][j]表示从i~j能获得的最大分数. 本题唯一难度在于要写高精度,没有高精度感觉就是个黄题,本人做的第一道非模板的高精度题. AC代码: 1 #include<iostream> 2 #inclu 阅读全文
摘要:
题目传送门 解题思路: f[i][j][0]表示i~j区间最后一个进来的元素是i. f[i][j][1]表示i~j区间最后一个进来的元素是j. AC代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 5 using 阅读全文
摘要:
题目传送门 解题思路: f[i][j][0]表示i~j区间的灯全部被关了,当前站在i. f[i][j][1]表示i~j区间的灯全部被关了,当前站在j. 剩下在代码里. AC代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm 阅读全文
摘要:
题目传送门 题目翻译: 描述 Z国有N个城市,编号从1到N。城市之间通过高速公路相连,并且两个不同城市之间只有一条路径。Z国最近经常起火,因此政府决定在一些城市建造一些消防站。在城市K成本W(K)中建立一个消防站。不同城市的W可能不同。如果城市K中没有消防站,那么它与最近的拥有消防站的城市之间的距离 阅读全文
摘要:
题目传送门 解题思路: 跟石子合并差不多,区间DP(环形),用f[i][j][s]表示从i到j分成s段所能获得的最大答案,枚举断点k,则f[i][j][s] = min(f[i][j][s],f[i][k][s-1] * 代价),最小值反之. ps:区间和用前缀和维护. AC代码: 1 #inclu 阅读全文
摘要:
题目传送门 中文翻译: 给定一颗无向带权树,要切断所有叶子节点和根节点的联系,每次切断的费用不能超过上限 Limit,问在保证 总费用 <=m 的情况下最小的 Limit 解题思路: f[i]表示以i为根的树的最佳答案,加二分答案. AC代码: #include<iostream> #include 阅读全文
摘要:
题目传送门 解题思路: 树形DP 可知一个点被控制有且仅有一下三种情况: 1、被父亲节点上的保安控制 2、被儿子节点上的保安控制 3、被当前节点上的保安控制 我们设dp[0/1/2][u]表示u节点所在子树中全部被控制的最小代价,0表示只有u节点尚未被控制(等待被其父亲节点控制); 1表示u节点已经 阅读全文
摘要:
题目传送门 解题思路: 用f[i][0]表示第i个人没去其本身与所有下属(包括间接)所能获得的最大值,f[i][1]表示第i个人去了其本身与所有下属(包括间接)所能获得的最小值,如果第i个人去了,则它的下属一定没去,如果第一个人没去,则它的下属去或不去皆可. AC代码: 1 #include<ios 阅读全文