随笔分类 - 动态规划
摘要:题意 解析 找出每个可以分割的地方,然后看能不能选,01背包 代码 #include<bits/stdc++.h> using namespace std; const int N = 100 + 10; int n,m; int a[N],b[N],f[N],cnt,pos; int main()
阅读全文
摘要:题意 解析 前缀或双指针 代码 //前缀 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int n,k; int a[N],b[N],c[N],d[N]; int main(){ scanf("%d %d",
阅读全文
摘要:题意 解析 官方解法dp f[i][j] 代表选到第i个字符串,全都和第i个字符串以j为首开始的部分一样的最小代价 f[i][j] = min(f[i][j],f[i-1][k]+j) (条件是第i-1个字符从k开始的部分和第i个字符串从j开始的部分相同) 答案为f[n][i]里的最小值 第一个字符
阅读全文
摘要:题意 解析 我写的朴素的二维前缀和,这样比较麻烦 可以这样, f1[i][j]代表当前行第一个到第j个的前缀和 f1[i][j]=f1[i][j-1]+a[i][j] f2[i][j]代表当前列第一个到第i个的前缀和 f2[i][j]=f2[i-1][j]+a[i][j] 判断f1[i][j],f2
阅读全文
摘要:题意 Polycarp在他的微博上发布了一张有趣的照片。他的很多朋友就开始在微博上转发这张图片,这个事情可以被一个字符串描述:name1 reposted name2,意思是说name1这个人转发了name2这个人。题目保证name1肯定是还没有转发过照片的,name2这个人已经有这个照片了。数据范
阅读全文
摘要:题意 输入 #1 ++-+- +-+-+ 输出 #1 1.000000000000 输入 #2 +-+- +-?? 输出 #2 0.500000000000 输入 #3 +++ ??- 输出 #3 0.000000000000 解析 我是找规律做的。算出最后总体的差值x,求出有cnt个问号。 假设正
阅读全文
摘要:题意 解析 水题,普及-,没意思 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 10,M = 1e6 + 10; ll n,m,v[N],sum1[N],sum2[N
阅读全文
摘要:题意 解析 f[i][j]代表第i幅画最后一次被j画了所花的时间,受到两个的限制,画当前这个画的前一个画家画完了,当前这个画家画完了前面那张画了,取max。 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; c
阅读全文
摘要:题意 解析 考察前缀知识。做的时候我好蠢,一直在想怎么前缀,大范围减小范围,怎么消除不同数字是否重复出现的影响。后来发现是自己蠢了,不就是求个后缀么。 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; cons
阅读全文
摘要:题意 解析 前缀和水题,就是在所有长度为k的区间里找个最小的。 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2e5 + 10,M = 1e6 + 10; int n,m,a[N
阅读全文