![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
文章平均质量分 68
dp类题目
Looy_cai
愿你能够
成为优秀的人
展开
-
UVA11021 Tribles(概率dp——全概率)
次生物生了j个后代,这些后代在。种生物,所以最后答案为。(交不了不知正误)原创 2022-07-29 16:45:00 · 215 阅读 · 1 评论 -
Football (概率dp+二进制运用)
支队伍,给出两两队伍之间比赛的胜率。问哪个队伍成为冠军的概率最大。由于此时比赛过的队伍不能重复,所以运用二进制将其按顺序比赛。第1场看其最低位不同且比最低位大的其它位相同的打比赛。第2次看其次低位不同且比最次位大的其它位相同的打比赛。(可以自己模拟一下)...原创 2022-07-28 20:14:59 · 278 阅读 · 0 评论 -
LOOPS(期望dp)
每个位置给出原地不动、向下走一步和向右走一步的概率,每走一步会消耗2能量,问从。列原地不动(0)、向下走一步(1)和向右走一步(2)的概率。,但此时其为未知数,所以将其化简到等是的一边即可求解答案。加2含义每走一步需要消耗2能量。...原创 2022-07-25 19:53:49 · 109 阅读 · 0 评论 -
Aeroplane chess(期望dp)
问从起点到终点掷骰子的期望次数。加一操作到达当前状态需要掷一次骰子。原创 2022-07-25 19:08:02 · 189 阅读 · 0 评论 -
Collecting Bugs(期望dp)
每天可以从s个子系统中查找1个bug。问发现n中bug并且每个子系统至少发现1个bug的期望。期望可以分解成多个子期望的加权和,权为子期望发生的概率,即。初始化为0,因为已经达到目标;dp[0][0]即所求答案。表示在j个子系统中找到i中bug的期望。maybe概率正推,期望逆推。状态转化为以下四种(概率)............原创 2022-07-24 20:49:14 · 176 阅读 · 0 评论 -
Palindrome Basis(完全背包)
LINK题目:大致翻译:一个数字由数字回文串相加,问有多少种组合情况。思路:由完全背包可得:dp[i][j]:dp[i][j]:dp[i][j]:前iii个物品随意取,组成总体积为jjj的方法数。由此思路可得前iii个回文数里,相加之和为jjj的方法数。再转换为一维可得:转换公式为:dp[j]=(dp[j]+dp[j-v[i]])%mod;代码:#include <bits/stdc++.h>using namespace std;//#define ll lon原创 2022-05-05 16:48:52 · 220 阅读 · 0 评论 -
AC 反悔贪心,priority 难
LINK题目示例1输入9 2arakbacca输出3acacbacca翻译:给一个长度为 n 的字符串, 最多有 k 次修改字符串的机会, 每一次只能将任意一位字符修改为其他字符, 输出修改后的字符串最多有多少个"ac", 并输出字符串思路能想到这个思路就很NB!!!此题和种树有很大的关系,都用到了缩点,更难的一点是需要另开两个数组标记一下改变的位置。具体解说用一个例子稍作解释:代码:#include<bits/stdc++.h>using namespac原创 2022-04-15 21:15:57 · 521 阅读 · 0 评论 -
P1792 [国家集训队]种树(反悔贪心+priority)
LINK题目:思路:参考种树一点点区别在于:特判种不满的情况,将首尾的左右位置稍作修改,在循环时一定要种满K棵树代码:#include<bits/stdc++.h>using namespace std;#define ll long long const int N=5e5+10;const int inf=0x3f3f3f3f;struct node{ int a,pos; //priority_queue中自定义的比较函数的效果和sort()是相反的 boo原创 2022-04-14 20:34:57 · 246 阅读 · 0 评论 -
P1484 种树(反悔贪心,priority)
LINK题目:思路:反悔贪心,将所有坑都放在优先队列中。先从值最大的开始贪,在贪的时候还要记录它的左右,因为存在一种情况,如:处理左右位置不可选的坑:代码:#include<bits/stdc++.h>using namespace std;#define ll long long const int N=5e5+10;const int inf=0x3f3f3f3f;struct node{ int a,pos; //priority_queue中自定义的比原创 2022-04-14 20:14:13 · 555 阅读 · 0 评论 -
Cities(区间dp)
LINK题目样例:示例1输入284 3 1 2 1 1 3 351 2 3 2 1输出32大致题意:给定n个城市,每个城市都有一个数字,你可以使用一次魔法把相同且连续的一串数字变成任意一个数字,问最少使用多少次魔法能使所有城市变成同一个数字。区间dp模板:for(int len=2;len<=n;len++)//区间长度 for(int i=1;i<=n;i++){//枚举起点 int j=i+len-1;//区间终点 if(j>n)break;原创 2022-04-13 21:13:38 · 278 阅读 · 0 评论 -
Serval and Rooted Tree(树形dp)
LINK题目:样例:样例解释:题意:现有一棵树(根节点为1),树上每个结点上有一个flag值(flag=0 :表示这个点的权值是所有子节点权值中的最小值;flag=1:表示这个点的权值是所有子节点权值中的最大值)。有k个叶子节点,可以给每一个叶子节点安排1——k中的值且每个值只能放置一次。问:根节点值的最大值是多少。思路:想复杂了,看了一下大神们的题解,只能说:nb哇!!!运用树形dp。dp[i]:i结点值最大时需要叶子的数量;在每个叶子节点上dp[叶子]=1(只要叶子自己原创 2022-03-20 00:16:02 · 990 阅读 · 0 评论 -
树形dp(+换根dp+dp结合)
求数的重心(重心:指树中的一个结点,如果将此结点删除后剩余各个连通块中点数的最大值最小。那么此结点被称为树的重心)LINK题目:思路:遍历每一结点,在此结点中判断是此结点的最大子树比较大还是非此结点子树的节点数比较大下面用图来稍作解释:代码:#include<bits/stdc++.h>using namespace std;const int N=1e5+10;vector<int>g[N];int f[N];//以u为根的子树的结点总数(不包括根)原创 2022-02-28 20:42:05 · 149 阅读 · 3 评论 -
D. Infinite Set(dp+二进制)
LINK题目:样例&说明:大致翻译:给出nnn个不同数和ppp(集合SSS中所有元素均小于2p2^p2p),维护集合SSS,该集合里的元素xxx满足:1.x=ai1. x=a_i1.x=ai2.x=2y+1,y∈S2.x=2y+1,y \in S2.x=2y+1,y∈S3.x=4y,y∈S3.x=4y,y \in S3.x=4y,y∈S问集合S中满足条件的数有多少。思路:由于1<=p<=2∗1051<=p<=2*10^51<=p<=2∗1原创 2022-02-23 16:35:48 · 761 阅读 · 0 评论 -
数位小孩(数位dp)
差一点点就提交的代码 值得纪念一下LINK思路:先处理f[i][j][0]和f[i][j][1]先处理f[i][j][0]和f[i][j][1]先处理f[i][j][0]和f[i][j][1];f[i][j][0]:有i位,最高位为j满足相邻两个数和位素数且不出现1的个数;f[i][j][0]:有i位,最高位为j满足相邻两个数和位素数且不出现1的个数;f[i][j][0]:有i位,最高位为j满足相邻两个数和位素数且不出现1的个数;f[i][j][i]:有i位,最高位位j满足相邻两个数和位素数且原创 2022-02-10 18:09:28 · 453 阅读 · 1 评论 -
E. Pchelyonok and Segments(区间dp)
听说是简单dp、LINK题目:Exampleinput51131 2 351 1 2 2 371 2 1 1 3 2 659 6 7 9 7output11231题目大意:给一个数组,找k个不重叠子段,这些子段需要满足两个条件:1.[l1,r1][l_1,r_1][l1,r1]的长度为k,[l2,r2][l_2,r_2][l2,r2]的长度为k-1,……[lk,rk][l_k,r_k][lk,rk]的长度为1,2.sum(l1,r1)<s原创 2021-12-11 15:47:48 · 711 阅读 · 0 评论 -
Mio visits ACGN Exhibition(dp,思维)
传送门题目:示例1输入2 2 1 10 01 1输出2示例2输入3 3 2 00 0 10 0 11 0 0输出6思路:(借鉴大哥的)优化过后dp[i][j][k]代表含义:优化过后dp[i][j][k]代表含义:优化过后dp[i][j][k]代表含义:i=1:当前行;i=0:上一行;j:当前列;k:0的个数i=1:当前行; i=0:上一行; j:当前列;k:0的个数i=1:当前行;i=0:上一行;j:当前列;k:0的个数dp[0][j][k]:上一行第j列原创 2021-10-25 09:42:11 · 252 阅读 · 0 评论 -
Nun Heh Heh Aaaaaaaaaaa(dp+思维+数学)
传送门题目:Sample Input2nunhehhehahaahahahahahahaahaahahahahhanunhehhehhehhahaahahahaahaahahaaaahaaSample Output1145141919810大致翻译:简略题意:寻找前缀为nunhehhehnunhehhehnunhehheh,后面至少有一个aaa的字串,问有多少种组合情况;根据枚举推到可以发现aaa的组合情况:当aaa有111个时,组合:111种;当aaa有222个时,组合:33原创 2021-10-10 23:52:11 · 467 阅读 · 0 评论 -
Portal(dp,思维好题)
传送门题目:Examplesinput15 410000000011000000001output12input19 9001010001101110100000010011100000001101010101110001111000001111111100000000110000output5NoteIn the first test case, the final portal is like this:1110100110011001原创 2021-10-07 20:06:37 · 111 阅读 · 0 评论 -
简单计数(构造矩阵 矩阵快速幂优化dp)
传送门示例1输入1 1输出0分析:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=2;const ll mod=998244353;struct jz{ ll a[N][N]; void init(int x){ memset(a,0,sizeof(a)); for(int i=0;i<N;i++) a[i][i]=x;原创 2021-08-15 12:29:44 · 73 阅读 · 0 评论