摘要: "题目" 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 cpp include include using namespace std; const int inf = 1000000000; int n, col[505]; int f[505][505]; bool mar 阅读全文
posted @ 2018-05-20 21:49 LJZ_C 阅读(124) 评论(0) 推荐(0) 编辑
摘要: "题目链接" "膜拜黄学长" cpp include include include using namespace std; char s[100]; int f[60][60][2]; bool vis[60][60][2]; bool judge(int l, int r) { int len 阅读全文
posted @ 2018-05-20 21:43 LJZ_C 阅读(96) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 用KMP判断最小循环节 cpp include include include using namespace std; char s[105]; int f[105][105]; int fail[105]; int calc(int l, int r) { fail[l] = fa 阅读全文
posted @ 2018-05-20 21:39 LJZ_C 阅读(112) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 给出一个长度为n的未涂色木板,每次可以选择[l,r]区间全部变成某种颜色,问到达目标颜色串需要最少多少步 $if(col[l]==col[r])f[l][r]=min(f[l+1][r],f[l][r 1],f[l+1][r 1]+1)$ cpp include include inc 阅读全文
posted @ 2018-05-20 21:31 LJZ_C 阅读(112) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 一个人首先给一个玩具取名为WING中的一个字符,且W,I,N,G分别可以变成w,i,n,g种两个WING中的字符,给出玩具最终的名字,问最初的名字可以为那些字符 定义dp[l][r][k]为[l,r]是否可以变成一种第k个字符 include include include using 阅读全文
posted @ 2018-05-20 20:52 LJZ_C 阅读(115) 评论(0) 推荐(0) 编辑
摘要: "题目链接" n个人依次坐n把椅子,一个人不会做满足以下条件的椅子 1.这把椅子左右都有椅子 2.这把椅子左右椅子上都有人 3.这把椅子左右椅子颜色不同 问坐满的方案数 当l==r时,根据是否合法返回0或1 其他情况枚举当前坐的椅子位置k $dp[l][r]=dp[l][k 1] dp[k+1][r 阅读全文
posted @ 2018-05-20 20:44 LJZ_C 阅读(119) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 有n个人排队,对于每个人有个不同的D,如果他是第k个排到的,会有(k 1) D的不满,你可以将当前队首放入一个栈中并在任意时刻让栈顶元素出栈问最小的不满值 状态有两种转移,让队首直接出队或让他在入栈并在第i个人后出栈 cpp include include include using 阅读全文
posted @ 2018-05-20 20:32 LJZ_C 阅读(123) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 有两个双端队列每次每人可以从任意一堆的头或尾取值,两人均采取最优策略,问先手的最后得分 很简单的博弈 cpp include include include using namespace std; const int inf = 1000000000; int T, N, A[25] 阅读全文
posted @ 2018-05-20 20:22 LJZ_C 阅读(96) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 有n匹狼排成一队,每杀死一头狼会受到这头狼的主要攻击力与它左右两边的狼的辅助攻击力,问最少受到的伤害 枚举每个区间最后被杀死的狼 cpp include include using namespace std; typedef long long ll; const int inf=1 阅读全文
posted @ 2018-05-20 20:15 LJZ_C 阅读(96) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 给出n个元素的键与值当两个相邻元素的键不互质时,可以使它们消失并对结果贡献它们的值,问最大结果 定义f[i][j]为[i,j]的答案则如果中间已经取完了则l,r可以合并 cpp include include include using namespace std; int T, N; 阅读全文
posted @ 2018-05-20 20:10 LJZ_C 阅读(90) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 给出一个长度为n的由1和2组成的序列问翻转一次任意[l,r]区间后最长的不下降子序列长度 观察发现最后答案序列为1...2...1...2则枚举分界点即可 cpp include include using namespace std; int N; int A[2050]; int 阅读全文
posted @ 2018-05-20 20:02 LJZ_C 阅读(324) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 给出一个长度为n的字符串与q次询问,每次询问[l,r]的回文串个数 定义f[i][j]为[i,j]是否为回文串,g[i][j]为[i,j]回文串个数 $len = 1: f[i][j] = true$ $\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ g[i][j] = 阅读全文
posted @ 2018-05-20 19:50 LJZ_C 阅读(162) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 一个人要去砍一排n棵树,他会等概率选取当前最左边或最右边的树,树有p的概率向左倒,1 p的概率向右倒,给出每棵树在数轴上的位置与树的高度,求树覆盖长度的期望 dp[l][r][lk][rk]表示区间[l,r]与l 1棵树倒的方向,r+1棵树倒的方向 更新方法比较好想,细节比较繁琐 in 阅读全文
posted @ 2018-05-20 19:33 LJZ_C 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 给出一颗树以下方程序遍历的dfs序 问可以得到此序列的树的个数 观察发现同一子树处在相邻区间,且子树的根为该区间第一个元素,定义dp[l][r]为区间[l,r]的方案,则: $$dp[l][r]=\sum_{i\in[l,r],i!=r||b[i+1] b[l]} dp[l+1][i] dp[i+1 阅读全文
posted @ 2018-05-20 19:22 LJZ_C 阅读(166) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 给出一个合法的括号序列,你可以将每个括号染上红色或蓝色,一对括号中有且只有一个被染色,相邻括号不能染上同一颜色,问合法染色方案个数 状态需要保存当前区间左右括号颜色,分左右边界是否为同一对括号来更新 cpp include include include using namespace 阅读全文
posted @ 2018-05-20 19:10 LJZ_C 阅读(154) 评论(0) 推荐(0) 编辑