dp
tshoigyr
这个作者很懒,什么都没留下…
展开
-
NOIP模拟(20171102)T3 回文子串
给定两个字符串s1,s2,按如下方式构造一个串s:每次从s1或s2的头部取一个字符放到s的末尾,求所有可能的s中最大的最长回文子串的长度(好吧题意有点绕) 考虑dp,f[i][j][k][l]f[i][j][k][l]表示s的前半部分选了i−1i-1个来自s1的字符,j−1j-1个来自s2的字符,s的后半部分选了k−1k-1个来自s1的字符,l−1l-1个来自s2的字符,在中间结合处的回文串长度。原创 2017-11-08 16:48:46 · 274 阅读 · 1 评论 -
NOIP模拟(20171023)T3 拆网线
求用最小数量的边使得树上至少k个点被这些边覆盖 2≤k≤n≤1052\leq k\leq n\leq 10^5 显然,一条边覆盖两个点最好。 考虑最多能有多少边能覆盖两个点,用树形dp即可 复杂度O(n)O(n)#include<bits/stdc++.h>#define LENusing namespace std;inline int getint(){ int x=0,p原创 2017-10-23 20:51:14 · 352 阅读 · 3 评论 -
NOIP模拟(20171024)T2 乘积
求从1-n中选k个数,使得这k个数的乘积不含完全平方因子 70% n≤30\ \ \ n\leq30 100% n≤500\ \ \ n\leq50070%:状压dp,f[i][j][k]表示前i个数,选了j个,当前所选数之积分解质因数后的状态为k(k表示成二进制后,第一位表示有没有2,第二位表示有没有3……以此类推)令i+1分解质因数后状态为pos[i+1] f[i][j][原创 2017-10-24 19:57:47 · 275 阅读 · 1 评论 -
NOIP模拟(20171030)T2 游戏
nn个物品,每个物品权值为ai(1≤i≤n)a_i(1\leq i\leq n),两人按给定顺序轮流拿物品,先手先拿11或22个物品。然后若上一个人拿了kk个物品,这一个人必须拿kk或k+1k+1个物品,若剩余物品不足k个,游戏结束。 两个人都尽可能使自己拿的权值比别人大,游戏结束后,先手拿的权值比后手多多少(假设两个人都绝顶聪明)那还要我干嘛 n≤20000n\leq20000 考虑dp:d原创 2017-11-01 08:41:55 · 302 阅读 · 1 评论 -
NOIP模拟(20171026)T3 大逃杀
一棵带权树,第一次经过一个节点需ti时间,获得wi的武力值 求T时间内获得的最大武力值 n,T≤300n,T\leq 300 树形dp神题(告诉了我什么叫转移顺序) dp[i][j][0/1/2]dp[i][j][0/1/2]表示路径的 【起点终点都在i/起点(或终点)在i,另一点在i的子树内(因为路径是可逆的)/起点终点都在i的子树】 内能得到的最大武力值 转移即可(说的容易!!!)原创 2017-10-26 19:12:40 · 266 阅读 · 1 评论