02 2023 档案
摘要:题意 解析 代码 每次O(1) #include<bits/stdc++.h> using namespace std; int t,a,b,c,d; int main(){ scanf("%d",&t); while(t--){ scanf("%d %d %d %d",&a,&b,&c,&d);
阅读全文
摘要:题意 解析 找出每个可以分割的地方,然后看能不能选,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这个人已经有这个照片了。数据范
阅读全文
摘要:题意 瓦西里喜欢喝"Beecola"饮料。 卖这种饮料的商铺有x家。每家的价格是x[i]元。 现在瓦西里 要买这种饮料n次,每次他最多能花n[i]元, 求他每次能在几个商铺买到至少一瓶饮料。 简短版:给出一个长度为x的数组,有n次询问, 输出 第n次询问的数大于等于几个x数组里的元素。 输入:第一行
阅读全文
摘要:题意 长度为n的字符串(字符串中只有abcdef共6种字母),有q种压缩方式,可以将字符串的前两个字符压成1个字符,求凭借这q种压缩方式,有几种长度为n的字符串最终能被压缩成字符'a'. 输入格式: 第一行输入两个整数n(2<=n<=6)和q(1<=q<=36),代表压缩前字符串的长度以及压缩方式的
阅读全文