07 2020 档案

【好题】序列自动机+dp求LCS——hdu6774
摘要:这个题意转化下,其实是 给两个串 A,B,给1e5组询问:求A[l..r]和B的LCS 由于B的len很小,只有20,所以我们考虑预处理A,求出A的序列自动机,然后在B上进行dp dp[i,j]表示B[1..i]已经匹配了j位的最短的A[l..r]前缀,这样是很好转移的 #include<bits/ 阅读全文

posted @ 2020-07-24 22:03 zsben 阅读(164) 评论(0) 推荐(0) 编辑

2020牛客多校第二场
摘要:A:字符串hash+kmp #include <iostream> #include <cstdio> #include <string> #include <map> using namespace std; typedef unsigned long long ull; typedef long 阅读全文

posted @ 2020-07-15 18:08 zsben 阅读(210) 评论(0) 推荐(0) 编辑

【思维】二进制模+预处理+暴力——atcoder AIsing Programming Contest 2020 D
摘要:这题细节真的多。。但是思维性还是蛮强的 一个数最多被操作logn次,所以可以预处理第一次操作,然后暴力解决 分类讨论下修改1的情况和修改0的情况,处理出前缀和和后缀和即可 #include<bits/stdc++.h> using namespace std; #define N 200005 ch 阅读全文

posted @ 2020-07-11 22:37 zsben 阅读(145) 评论(0) 推荐(0) 编辑

【思维】线段树维护后缀和+set——cf1373G
摘要:感觉是很不错的题 很关键的一步是题意简化:有m个操作,每次操作可以在数组某点+1或-1,问每次操作后,最大的 suf[i]-(n-i+1)是多少 显然对pos进行修改,会影响到[1,pos]整个区间的后缀和。所以线段树区间更新就可以。 ps:原题意下这题细节较多,要将数组扩充到2n,并且用一个mul 阅读全文

posted @ 2020-07-11 19:22 zsben 阅读(184) 评论(0) 推荐(0) 编辑

暴力+组合数学+预处理+双指针——cf 1371E1+E2
摘要:E1,暴力+组合数学 对每个x都求一遍就行 /* 在位置i的糖果数量是x+i-1, 所以先把minx和maxx确定下来 当a数组递增排列时,minx=max(minx,ai-i+1) 当a中最大值出现在第一位时,取到maxx=ai x遍历范围[max(0,minx),max(maxx,n)], 将a 阅读全文

posted @ 2020-07-11 10:53 zsben 阅读(176) 评论(0) 推荐(0) 编辑

codeforce 1375 DEG
摘要:比赛的时候正在被各种期末课设折磨,结果发病了 D /* 每次求mex,如果mex<n,那么让a[mex]=mex,如果mex=n,那么挑a[i]!=i的位置,令a[i]=mex 这样每安排好一个位置最多进行两次操作 */ #include<bits/stdc++.h> using namespace 阅读全文

posted @ 2020-07-09 18:57 zsben 阅读(104) 评论(0) 推荐(0) 编辑

数学+栈/列+思维——namomo round c
摘要:最近做的一道很好的题目,感觉很需要直觉才能想到 /* 转化:将a[]转化成差分数组 那么原来的操作[l,r]就变成了a[l]-1,a[r+1]+1 最后的目标是将这个数组的所有元素变成0 为了使操作次数最小,只有两种操作:在正数上的-1操作,在负数上的+1操作, 并且差分数组每个前缀和必须保持为非负 阅读全文

posted @ 2020-07-09 12:02 zsben 阅读(277) 评论(0) 推荐(0) 编辑

分割01串/最大子段和——cf 1370E
摘要:这题转化一下,就是弄出个01串,然后问最少可以分割成多少个01串 怎么求?贪心策略,如果当前全是0结尾串,又来了一个0,那么只能又多了一个0结尾串,如果来的是1,那么就少了个0结尾串,多了个1结尾串 看了下正解貌似是求最大子段和。。 #include<bits/stdc++.h> using nam 阅读全文

posted @ 2020-07-03 22:18 zsben 阅读(203) 评论(0) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示