摘要: "题目链接" 有两个双端队列每次每人可以从任意一堆的头或尾取值,两人均采取最优策略,问先手的最后得分 很简单的博弈 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 阅读(99) 评论(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 阅读(91) 评论(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 阅读(328) 评论(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 阅读(167) 评论(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 阅读(162) 评论(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 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 标签(空格分隔): 数位DP 二分 "题目链接" 先算出答案1的个数,再二分查找 阅读全文
posted @ 2018-05-10 12:09 LJZ_C 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 标签(空格分隔): 数位DP "题目链接" 枚举作为枢纽的点,注意零的情况 cpp include include include using namespace std; typedef long long ll; ll read() { ll x=0,f=1;char ch=getchar(); 阅读全文
posted @ 2018-05-10 12:03 LJZ_C 阅读(103) 评论(0) 推荐(0) 编辑