随笔分类 - dp
摘要:D. Fragmentation merging https://codeforces.com/gym/103104/problem/D 题意 给定一个长度为n($n<=5e3$)的排列 每次操作可以选择两个不相交的区间,如果两个区间并起来的新区间是连续的一段数($max - mi + 1 = le
阅读全文
摘要:cf1771 Hossam and (sub-)palindromic tree https://codeforces.ml/contest/1771/problem/D 题意 给出一颗n个节点的树,树上的每个节点都代表一个小写英文字母,求所有的$s(u, v)$(u到v的一条简单路径)中是回文串的
阅读全文
摘要:D1. Xor-Subsequence (easy version) https://codeforces.ml/problemset/problem/1720/D1 题意 给你长度为n的数组a 让你找出a最长的子序列满足 $a_b_p * b_p+1 < a_b_p+1 * b_p$ 即这个子串相
阅读全文
摘要:D. Bank Security Unification https://codeforces.ml/group/MKpYqfAQQQ/contest/401639/problem/D 题意 给你一个数列 你可以选择一个子序列(可以不连续) 这个序列的贡献就是选出的子序列中每相邻两个数的按位与和$/
阅读全文
摘要:C - Backpack 题意 物品个数n 背包容量m 第i个物品的体积V[i],价值w[i]; 问恰好装满背包的物品价值的最大异或和 若无法恰好装满就输出-1 思路 dp[i][j][k] : 前i个物品 异或和为j 体积为k的情况存在 因为直接这样会超时 那么我们用bitset来优化 bitst
阅读全文
摘要:题意 2 * m的网格 从(1,1 )出发每个格子都要走正好一次 每个格子都有时间要求 对于每个格子至少经过a[i][j]的时间 才能走格子(i, j)问走遍格子的最少时间 思路 如果从起点出发 往右走 那只能够走到第一行尾再走第二行这一种走法 而如果我们一开始往下走 那我们可以先走一段蛇形然后再走
阅读全文
摘要:D. Chip Move 题意 给定一个n和k 对于一个1 - n的序列从0开始跳 第一步可以跳k的倍数 第二步可以跳k+1的倍数 以此类推 问跳到i的方案数(1 <= k <= n <= 2e5) 思路 如果当前跳第j步 第i个位置可以由第i - (k + j - 1)的位置跳过来 凡是能通过第j
阅读全文
摘要:E. GCD Counting https://codeforces.ml/group/MKpYqfAQQQ/contest/386626/problem/E 题意 给你一颗树 每个结点都有权值 求一条最长链 满足链上每个点的两个gcd都不等于1 思路 把每个结点的权值 分解质因子 dp从下往上转移
阅读全文
摘要:P2014 [CTSC1997] 选课 https://www.luogu.com.cn/problem/P2014 题意 给m个课 第i行 输入x w 代表选i个课一定要选第x个课 修第i个课可以得到w个学分 问选修m个课最多可以选修多少学分 思路 相当于树上背包 容量为m 先根据输入建一棵树 然
阅读全文
摘要:G. Anthem of Berland https://codeforces.com/contest/808/submission/156274622 题意 给定两个字符串 s,t, s中可含有'?'问号可以由任何字母代替 将s中的所有'?'用某个字母代替后 s中最多可以匹配多少个t (可以重叠部
阅读全文
摘要:C. Palindrome Basis https://codeforces.ml/contest/1673/problem/C 题意 给你一个数 问你一共有多少种不同的组合 可以实现若干个回文数字相加得到这个数 思路 数据不超过4e4 而对于4e4之内的回文数字 最多不超过500 (一位数回文数有
阅读全文
摘要:Array Division 题意: 给你两个数组 a b长度都为n 让你将它们分成尽可能多的k段(连续的) 分法一致且满足每一段al到ar的和比对应bl到br的和大 求最大的k 思路: dp[i] 代表前i个最多能分多少个 从左到右枚举左边界 然后枚举右边界 判断当前l 到r 这段区间是否满足条件
阅读全文
摘要:C. Road Optimization 题意: 给你n r k分别代表路标数、整段路长、最多可删除路标数 后面两行 每行n个数 分别代表 插有路标的位置 和 路标显示数 在(对于每小段路通过要用的时间是该段路长乘以该段开头的路标显示数) 要你求制定一个删路标的方案后 通过这段路的最少时间(起始路标
阅读全文
摘要:D. Doin' Time 题意: 给你长度为n的数列(n <= 300)每次可以选择一个数ax 与它后面的那个数ax+1合并成一个新的数ax*ax+1 然后得到(ax-ax+1)2 的分数 一共n-1次操作 求最多可以得到多少分数 思路: 区间dp 最后肯定是由两个数合并成一个数 就是要考虑 分成
阅读全文
摘要:F - Zero Remainder Sum 题意: 给你n行每行m个元素 每行可以选择不超过(m/2) 个元素 最后将选择的元素 加到一起 余数为零的最大和 思路: 四维dp dp[i][j][w][u] 代表 第i行 到第j个元素 已经选了w个元素 余数为u 的最大和 第j个数 由第j-1个数转
阅读全文