DP
文章平均质量分 81
Fizzmy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces 1542E Abnormal Permutation Pairs-DP
传送门题意给定n,modn,modn,mod,求有多少对(p,q)(p,q)(p,q)满足:1.p,qp,qp,q是长度为n的排列2.ppp的字典序大于qqq3.ppp的逆序对数小于qqq答案对modmodmod取模Case 1:n≤50Case \ 1:n\leq 50Case 1:n≤50Case 2:n≤500Case \ 2:n\leq 500Case 2:n≤500SolutionCase 1先考虑Case1,首先用f[i][j]f[原创 2021-07-04 17:45:13 · 449 阅读 · 0 评论 -
Codeforces 1485F-Copy or Prefix Sum-DP
Codeforces 1485F-Copy or Prefix Sum-DP题意给你一个n个数的序列bbb求有多少个序列aaa满足对于每个i(1≤i≤n)i(1\leq i\leq n)i(1≤i≤n),至少满足以下两个条件之一:1.bi=aib_i=a_ibi=ai2.bi=∑j=1iajb_i=\sum_{j=1}^ia_jbi=∑j=1iajn≤2∗105n\leq 2*10^5n≤2∗105Solution最朴素的DP:dpi,jdp_{i,j}dpi,j表示前i个数和原创 2021-02-17 17:06:30 · 368 阅读 · 0 评论 -
Codeforces 1485E Move and Swap-DP
Codeforces 1485E Move and Swap-DP传送门题意:一棵n个节点的树,叶子节点的深度都相同,每个节点有一个权值aia_iai,有红蓝两个棋子,初始在根节点1,每轮进行三步操作:1.红棋子移动到当前所在节点的儿子上2.蓝棋子移动到当前节点层数+1的任意一个节点3.交换红蓝两个棋子(可选)移动到叶子节点后终止移动每轮移动后获得的分数为棋子所在位置的权值差的绝对值,求最大分数和。n≤2∗105n\leq 2*10^5n≤2∗105Solution:我们分层进行处理原创 2021-02-17 17:05:49 · 272 阅读 · 0 评论 -
牛客第7场I-Valuable Forests prufer序列+DP
传送门题意:定义一个无根树的权值为所有点的度数的和,求有标号的n个点形成的所有森林的权值的和。T≤5000,N≤5000T\leq 5000,N \leq 5000T≤5000,N≤5000Solution:比赛时脑抽,考完五分钟后过了…由prufer序列的结论可得,对于n个点的无根树,可以形成nn−2n^{n-2}nn−2个不同的树,我们记他的值为stnst_nstn,那么对于n个点的森林的个数fnf_nfn,我们可以求得DP式子:f(n)=∑i=0n−1Cn−1if(n−i−1)∗st原创 2020-08-01 21:31:56 · 525 阅读 · 2 评论 -
Codeforces1295F Good Contest-DP
##题目大意:传送门长度为 nnn 的数列,第 iii 个数可能的值为[li,ri][l_i,r_i][li,ri],求数列为不严格单调递减数列的期望。(2≤n≤50,0≤li≤ri≤1e9)(2\leq n \leq 50,0 \leq l_i \leq r_i \leq 1e9)(2≤n≤50,0≤li≤ri≤1e9)##Solution:我们把这些区间分割成两两之间不互相覆盖...原创 2020-01-30 23:13:37 · 556 阅读 · 3 评论 -
洛谷P1846 游戏-DP
传送门题意:给定两个正整数数列,你要用它们来做一个游戏:你需要对数列进行若干次操作,每一次操作,应选择两个正整数k1k1k_1和k2k2k_2 ,并删除第一个数列的最后k1k1k_1个数,计算出它们的和s1s1s1;删除第二个数列的最后k2k2k2个数,计算出它们的和s2s2s2。这一次操作的得分就是(s2−k2)∗(s1−k1)(s2−k2)∗(s1−k1)(s_2-k_2 )*(s_1...原创 2018-05-29 19:04:58 · 458 阅读 · 0 评论 -
BZOJ4767-两双手-DP+容斥
传送门题意:棋盘上的一个棋子,给出他的两种移动方式:1.(u,v)−>(u+Ax,v+Ay)(u,v)−>(u+Ax,v+Ay)(u,v) -> (u+Ax,v+Ay)2.(u,v)−>(u+Bx,v+By)(u,v)−>(u+Bx,v+By)(u,v) -> (u+Bx,v+By)现给出一些不能走的障碍点n个,求(0,0)到(Ex,Ey)的方案数...原创 2018-03-22 19:18:49 · 481 阅读 · 0 评论 -
AGC019 E.Shuffle and Swap-DP+NTT
传送门题意:给出两个01串A,b,记aiaia_i表示A中1的出现位置,bibib_i表示B中1的出现位置,将a数组和b数组打乱后依次次交换AaiAaiA_{a_i}和AbiAbiA_{b_i},求有几种方式使得A=B字符串长度<=10000Solution:我们可以把答案拆分成两步:1.枚举a和b的匹配2.打乱匹配顺序假设我们已经完成了操作1,我们来...原创 2018-03-04 16:46:28 · 568 阅读 · 0 评论 -
CS Academy 71E.Losing Nim-dp+容斥
传送门题意:如果一个包含i个可重复元素的数组合法,那么这个数组中每个元素的取值范围是[1,n],这i个元素的和为n,异或和为0。给出一个数n,对于i=[1,n]i=[1,n]i=[1,n],求包含i个可重复元素的数组的方案数,对p取模n<=500,p<=2^30Solution:一个简单的想法就是f[i][j][k]f[i][j][k]f[i][j][k...原创 2018-03-02 08:08:13 · 299 阅读 · 0 评论 -
Codeforces 939F.Cutlet-单调队列优化dp
传送门题意:有2∗n的时间去煎一块两面的肉,给你k个可以翻转的区间[li,ri][li,ri][l_i,r_i],可以在区间内翻转任意次, 保证区间不相交 问是否存在合法的方案使得两面恰好都只煎了 n 分钟,并求最小翻转次数 n<=100000,k<=100Solution:考虑朴素的dpf[i][j]f[i][j]f[i][j]表示前i秒,当前不在烤的...原创 2018-02-21 12:27:34 · 1458 阅读 · 2 评论 -
BZOJ3039-玉蟾宫
权限题。 题意: 给一个n*m的01矩阵,求一个最大的全1矩阵,输出答案*3。(n,m≤1000)Solution: 非常经典的一个模型,有两种方法,一种是贪心一种是dp, 这里介绍一种dp方法——悬线法(安利王知昆dalao论文《浅谈用极大化思想解决最大子矩形问题》)悬线法的本质是dp:用h[i][j]h[i][j]h[i][j]表示第i行第j个数往上数,最早遇到的0的位置,l[...原创 2017-11-29 19:14:36 · 392 阅读 · 0 评论 -
Codeforces 313D- Ilya and Roads
传送门 题意: 给一个区间[1,n],再给出m个区间[li,ri][li,ri][l_i,r_i]以及每个区间的维修成本viviv_i,问修好k个不同的整点所需的最小成本。 (n≤300,m≤1e5)Solution: 这道题首先想到了朴素的n2mn2mn^2m的dp(按照右端点排序,f[i][j][k]表示前i个区间,选了j个点,上一个选的右端点为k的最小代价),但是显然会T,转移时...原创 2017-11-07 12:52:44 · 397 阅读 · 0 评论 -
AtCoder Code festival 2017qualC-D-dp+优化
传送门 题意: 给你一个字符串s,问s最少分成几块,使得每一块在经过组合后都能成为一个回文串。(|s|≤2e5)Solution: 我们可以转化一下“回文串”这个定义,对于每个字母我们可以把它分别转化到二进制的0-25位,然后如果一段字符串是回文串,那么这段字符串每个字符的异或一定是0或者2的幂,那么这道题就可以用dp做了:f[i]表示前i个字符的被分成的最小段数,转移即为 f[i]=...原创 2017-11-07 11:49:48 · 464 阅读 · 0 评论 -
Codeforces587B-DP+优化
Codeforces587B-Duff in Beach 传送门 题意: 给出一个有l个数的序列,序列每n个数一循环,在每个循环里取一个数,一共取1-k个数,要求取出来的子序列要递增,求方案数。n×k≤1e6 l≤1e18Solution: DP,f[i][j]表示取了i次,最后一项取的位置是j的方案数,我们能迅速的想到一个转移方程: f[i][j]=∑k=0,ak≤a...原创 2017-10-24 21:50:15 · 444 阅读 · 0 评论 -
Codeforces626F-Group Projects-神奇状态之DP
题意: 有n个商品,每件商品有一个价值,现在要把商品分组,求每组的最大价值与最小价值的价格差的和不超过m的分组种数。Solution: DP,朴素的dp状态(f[i][j][k]表示前i件分成j组价格差为k的方案数)发现不好转移,所以说我们考虑找一个新状态:将所有数组排序,那么每一组的最大值减最小值的差相当于是排序后的数组的一段差分和,根据这个我们可以设计转移状态:f[i][j][k]表示...原创 2017-10-23 21:54:43 · 720 阅读 · 0 评论
分享