dp
weixin_44019404
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #695 (Div. 2) E. Distinctive Roots in a Tree
考虑树上dp。down[u]down[u]down[u]表示以u为根结点,向下的最小代价。up[u]up[u]up[u]表示以u为根结点,向上的最小代价。每一次更新向下的时候,如果字节点不行,那他自己肯定不行。如果字树内有一个和u相同,肯定不行。向上更新的时候,假设uuu的父亲节点是fff,首先我们需要删除掉u从f的子树中。然后判断除了u和他的子树以外,是否有和u相等的点。再继承父亲节点的up[u]up[u]up[u]值。这里使用了主席树去查询。//// Created by bytedance原创 2021-01-25 21:27:24 · 104 阅读 · 0 评论 -
Educational Codeforces Round 8 D. Magic Numbers
主要是特判A的情况,其他因为A,B长度一样很多情况都省略掉了。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include<queue>#include<原创 2020-12-17 17:16:02 · 99 阅读 · 1 评论 -
P2495 [SDOI2011]消耗战
#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include<queue>#include<set>#include<bitset>#原创 2020-12-17 13:10:03 · 72 阅读 · 0 评论 -
The 2018 ICPC Asia Xuzhou Regional Contest
#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include<queue>#include<set>#include<bitset>#原创 2020-12-15 22:29:17 · 122 阅读 · 1 评论 -
牛客挑战赛46 C
概率就是组合数分之一,现在需要求组合数有多少。因为是排列,每一次长度加1,就是第i个插入的过程,考虑dp[i][j][k]dp[i][j][k]dp[i][j][k]表示第iii个数字插入到kkk的位置,逆序数是j逆序数是j逆序数是j。分段转移(因为超级逆序数表示aI>aj+1a_I>a_j+1aI>aj+1):当i−1<ki-1<ki−1<k的时候,有dp[i][j][k]=∑m=0m=k−1dp[i−1][j−i+k][m]dp[i][j][k]=\sum原创 2020-12-15 10:58:02 · 129 阅读 · 1 评论 -
Codeforces Round #668 (Div. 2) E
E - Fixed Point Removal每一个数字,能够被删除,当且仅当满足:posi−ai−x<=0pos_i-a_i-x<=0posi−ai−x<=0其中x是他之前已经被删掉的数字的个数。(因为我们总可以在posi−ai−x==0pos_i-a_i-x==0posi−ai−x==0的时候,将该数字删除,所以小于等于0的时候一定满足。)令a[i]=i−a[i]a[i]=i-a[i]a[i]=i−a[i]。(这个时候的a[i]a[i]a[i]就表示成,若他自己能被删除的话原创 2020-09-10 19:40:44 · 75 阅读 · 0 评论 -
Educational Codeforces Round 94 (Rated for Div. 2)
A - String Similarity可以发现,string里面的最后一位每一次都会被遍历到,所以将res全部变成最后一位即可。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>原创 2020-09-08 17:30:02 · 104 阅读 · 0 评论 -
Codeforces Round #668 (Div. 2)
A - Permutation Forgery倒序输出即可。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include<queue>#include<原创 2020-09-07 12:08:31 · 95 阅读 · 0 评论 -
Educational Codeforces Round 93 (Rated for Div. 2)
A - Bad Triangle最小的两边和小于等于最大的边,那么就一定不会存在这个三角形。否则,一定存在。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include&l原创 2020-09-02 22:22:03 · 92 阅读 · 0 评论 -
Codeforces Round #662 (Div. 2)
A - Rainbow Dash, Fluttershy and Chess Coloring打表找规律#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include<原创 2020-08-31 11:15:14 · 81 阅读 · 0 评论 -
Codeforces Round #660 (Div. 2)
A首先前三个符合题意的数字是 666 101010 141414(2∗3,2∗5,2∗7)(2*3 ,2*5,2*7)(2∗3,2∗5,2∗7)那么最小的数字一定需要大于30,因为n必须由正整数组成。所以我们可以一开始放置666 101010 141414三个数字,然后再使用n-30即可。注意因为数字不能相同,所以需要判断一下,有相同的数字的话将14换成15。因为10−6=4,14−10=410-6=4,14-10=410−6=4,14−10=4故某一个数字增大了1,那么不可能再有相等的数字存在。原创 2020-07-31 15:14:59 · 70 阅读 · 0 评论 -
2020牛客暑期多校训练营(第二场) G Greater and Greater
我们需要求的是,考虑A数组的以第i个结尾的字串,长度为mmm,是否满足A[i]>=B[i]A[i]>=B[i]A[i]>=B[i]。假设令dp[i][j]=1,0dp[i][j]={1,0}dp[i][j]=1,0表示,A数组以第i个结尾时,长度为j的字串是否满足条件。就有dp[i][j]dp[i][j]dp[i][j]=(A[j]>=B[k])(A[j]>=B[k])(A[j]>=B[k])&dp[i−1][k−1]k=1,2,3,..,jdp[i-1][k-原创 2020-07-15 16:00:18 · 106 阅读 · 0 评论 -
Multi-University Training Contest L - Wavel Sequence
在多校前,练练手,发现自己真的好菜。一开始队友开了签到题,我随便一看看到了M,然后写了一个待修主席树,然后呢大概长这个样子#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#in原创 2020-07-09 19:10:09 · 103 阅读 · 0 评论 -
Codeforces Round #326 (Div. 1) B - Duff in Beach
首先我们可以发现,长度为l的数组就是a数组不断循环构成。令dp[i][j]表示操作到第j块,结尾是第i个数字时的结果。dp[i][j]=∑k=0n−1dp[k][j−1]dp[i][j]=\sum_{k=0}^{n-1}dp[k][j-1]dp[i][j]=∑k=0n−1dp[k][j−1]但是这样复杂度过高。于是,我们考虑前n⋅kn\cdot kn⋅k个数字。在第j块中的第i个数字,其实转移,只有他前面的所有比他小的数字,我们考虑sort出前面n*k个数字的大小。从小到大遍历。令f[i]表示第原创 2020-07-07 17:01:24 · 80 阅读 · 0 评论 -
Codeforces Round #647 (Div. 2) - Thanks, Algo Muse!
解决:ABCDE 补题:FA。使a*2,*4,*8或者/2,/4,/8能否得到b。令a为更小的值,a/2*2的效果一样,又a是小值,故只用考虑a*2k{2^k}2k能否得到b即可。然后贪心的选。(3=2+1,2=1+1)#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#in原创 2020-06-27 22:59:43 · 88 阅读 · 0 评论 -
Educational Codeforces Round 87 (Rated for Div. 2)
A#include<bits/stdc++.h>using namespace std;#define ll long longint main(){ ll a,b,c,d; int t; scanf("%d",&t); while(t--){ cin>>a>>b>>c>>d; if(a<=b){ printf("%lld\n",b);原创 2020-06-01 15:51:30 · 102 阅读 · 0 评论 -
[HDU-6578]
四位dp。dp[i][j][k][m][cur]表示,第cur位的时候,0,1,2,3出现的最后位置,排序后是:i,j,k,m。(这里并不需要知道排完序后,0,1,2,3究竟是i,j,k,m的哪一个。)其中,又发现,cur这一位,必定和最大的m相等,所以去掉一位。又可以发现,cur位当且仅能被cur-1位更新,所以滚动数组压缩。#include<iostream>#include<cstring>#include<algorithm>#include<c原创 2020-06-01 14:40:52 · 107 阅读 · 0 评论 -
Codeforces Round #467 B - Sleepy Game
题目问题等同于找从s出发的路径,经过的点为偶数。是否存在这样的路径。我们可以通过暴力dfs找到一条路径,深度为偶数。但是这里的问题在于,对于环该怎么处理。因为可能沿着环走一圈,可以改变一个点的深度的奇偶。所以我们对于每一个点,针对奇偶进行判断。这样的话,最多2*n个点,题目要求大于1e6输出draw,所以如果是dra’w的情况图中必然存在环。所以利用tarjan先判环即可。#include...原创 2020-03-30 19:26:04 · 89 阅读 · 0 评论 -
163A - Substring and Subsequence
令dp[i][j]表示,s字符串第i个结尾的所有字串,和t字符串[1,2,3,…,j]所有的子序列的匹配数量。dp[i][j]=dp[i][j-1]dp[i][j]+=(s[i]==s[j])?dp[i-1][j-1]+1:0#include<iostream>#include<cstring>#include<algorithm>#include&...原创 2020-03-30 17:35:13 · 123 阅读 · 0 评论 -
407B - Long Path
#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>#include<vector>#include&l...原创 2020-03-30 16:49:33 · 90 阅读 · 0 评论 -
180C - Letter
令dp[i]表示,以第i个点为转折点,i前面全部是大写,后面全部是都是小写的代价,自然等于i前面的小写+i后面的大写。(i自己是大写还是小写无所谓,可以没有代价的归入大写或者小写)#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<...原创 2020-03-29 12:51:19 · 80 阅读 · 0 评论 -
A Twisty Movement
dp,枚举出所有的方法数目,可以发现,有很多方案数目是可以合并的。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<climits>#include<stack>...原创 2020-03-23 10:43:43 · 98 阅读 · 0 评论 -
459E - Pashmak and Graph
对边权进行排序。令dp[i]表示以i为结束点的最大上升长度。那么,我们每一次加入一条边,dp[to]=dp[from]+1。其中需要注意,边权相等的时候,需要特殊考虑。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdli...原创 2020-03-19 12:10:42 · 114 阅读 · 0 评论 -
dp-255C - Almost Arithmetical Progression
dp[i][j]表示最后一位是bi[i]b_i[i]bi[i],倒数第二位是bi[j]b_i[j]bi[j]的最长序列长度。那么dp[i][j]=dp[j][k]+1(bi[i]b_i[i]bi[i]==bi[i]b_i[i]bi[i])其他情况dp=2。#include<iostream>#include<cstring>#include<algori...原创 2020-03-19 11:09:58 · 73 阅读 · 0 评论 -
710E - Generate a String
令dp[i]表示长度为i,最少费用。可以发现,当且仅当i为偶数的时候,dp[i]=min{dp[i/2]+y}。当为奇数的时候,dp[i]=min{dp[i+1]+x,dp[i-1]+x}。因为这个更新直接做不好做。我们考虑倍增。因为i从0开始,一开始一定dp[1]=x。所以考虑1~2区间,2~4区间。。。。n2\frac{n}{2}2n~n,先更新偶数,在正向更新,在反向更新。#inclu...原创 2020-03-18 21:32:51 · 96 阅读 · 0 评论 -
M - Walking Plan HDU - 6331
分块+floyd令dp[i][j][k]表示i到j恰好k条路经的最小权值。那么就有:dp[i][j][k]=min{dp[i][p][k-1]+dp[p][j][1]}我们可以预处理出前100条路径的dp值。然后考虑大范围转移,对dp[i][j][100]做一次floyd转移到200,再做一次转移到300,以此类推。就可以求得,从j到j恰好k条路径的最小权值。题目要求至少k条路径。那么对于小...原创 2020-03-18 21:14:05 · 57 阅读 · 0 评论 -
dp训练17 219D - Choosing Capital for Treeland
令dp[u]表示,以u为节点,向下走的路径数目。一次dfs能够做完。再令f[u]表示,以u为节点,向上走需要的代价。对于u的子节点v,计算v向下走的代价,计算v向上走的代价。向上走的代价=(u去掉v向下走的代价+f[u])所以f[v]=(u去掉v向下走的代价)+f[u]#include<iostream>#include<cstring>#include<...原创 2020-03-17 11:01:42 · 65 阅读 · 0 评论 -
dp训练15 codeforces 479E
令dp[k][j]表示,走k步到j的方法。我们首先预处理,走到第i个位置的时候,可以走到的地方,那么每一次,dp[k+1][a]~dp[k+1][b](a和b是j所能到的左右端点)+=dp[k][j],可以看到这是区间更新,那么我们利用差分数组来更新即可。其中自己也是一个断点。#include<iostream>#include<cstring>#include<...原创 2020-03-16 15:22:49 · 51 阅读 · 0 评论 -
A - Rikka with Nash Equilibrium HDU - 6415
首先可以发现,数字从高到低,每一个数字只能放在已经放了的数字所在的行和列中。因此我们可以得出一个dp令dp[k][i][j]表示已经有i行,j列被覆盖,同时拥有k个数字。所以每一次转移,只会多出一行,或者一列,或者都没有。这道题极度卡常。我今天比赛交了13发才过,注意模运算,乘法次序等。#include<iostream>#include<cstring>#i...原创 2020-03-14 21:28:48 · 79 阅读 · 0 评论 -
继续打卡 Codeforces Round #604 (Div. 2) F题
容斥 dp题意:给出()序列和?,?可以变成‘(’或者‘)’,问如果是贪心匹配可以操作任意次去掉任意括号,求所有情况深度的和。分情况讨论。dp[i][j]表示i~j这段所有情况的深度和。1.左括号==’)‘,那么dp[i][j]=dp[i+1][j]2.右括号==’(’,那么dp[i][j]=dp[i][j-1]3.1,2情况同时发生 ,dp[i][j]-=dp[i+1][j-1](容斥...原创 2019-12-15 20:29:16 · 70 阅读 · 0 评论