数据结构:前缀和
文章平均质量分 90
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
UESTC 1256 昊昊喜欢运动 n^2的预处理 or 前缀和
1、直接暴力,☺☺写起来简单,快。很可能超时2、用n^2的预处理,直接搞出ans[i][j],然后O(1)的询问。当时2000的平方算成1e8级了,☺☺,事实上是1e6级。3、前缀和思想在输入的时候直接维护ans[ i ][ j ],表示在[1,i ]中j 出现了多少次,维护的时候注意把前一个的所有信息都要维护的这一项;然后每次询问扫M,判断ans[ y ][ i ]-ans[ x-1 ][ i ]是否大于0 。用cott计数;用前缀和相对n^2预处理memory小了很多,但显然n^2预处理要快一原创 2015-12-05 23:49:27 · 1386 阅读 · 0 评论 -
POJ - 3415 Common Substrings 后缀数组+单调栈+前缀和
题意:给出两个字符串,求出它们的相同的长度至少为k的子串的个数。后缀数组+单调栈+前缀和把a、b这两个字符串用'#'连起来,然后求出它们的后缀数组,然后后缀ai和后缀bi的的满足要求的子串的个数是 max(0, LCP(suffixai, suffixbj) - k + 1);根据后缀数组的性质,也就是后缀i后缀j的LCP 等于这段height的最小值。因此对于每个ai考虑ai之前的所有bi, sum{max(0, LCP(suffixai, suffixbj) - k + 1)} rank[ai]原创 2017-02-16 17:33:21 · 859 阅读 · 0 评论 -
Gym - 101102J J. Divisible Numbers 位运算+优化+前缀和
题意:给出n个数,然后每次询问l r s,表示在lr区间内有多少个x,是x能被集合s里的至少一个元素整除,s表示一个{1~10}的子集位运算+优化+前缀和可以预处理出前缀和 sum[i][j]表示1~j中能被集合i满足的数的个数,且i为奇数时比有元素1,lr区间内所有的数必定可以被1整除,所以只剩下512中情况故 int sum[512][maxn];读入的时候每次判断v可以被哪些数整除,然后得到集合s,s说表示的集合中所有的元素皆可以整除v,然后用这个s和0~512位于返回非0值则有公共元素,原创 2017-01-14 21:53:10 · 931 阅读 · 0 评论 -
Codeforces Round #376 (Div. 2) F. Video Cards 数论+数据结构+前缀和
数论+数据结构+前缀和就是以前用树状数组的感觉,比如有一个数x,就在以x为下标的地方插入一个 1,如果删除这个就在下标为x的地方插入一个-1, 这样要查询小于等于k的数的个数只要get(k)就好。这里不需要维护,所以只要用一个前缀和数组,就可以直接预处理出来。即对于每个a[i]就在 sum[a[i]]++;读入完以后预处理出前缀和,for i = 1 ~ maxa, sum[i] += sum[i - 1];然后扫一遍i = 1 ~ maxa,对于每个i在a[maxn]数组中出现过的i,(即 s原创 2016-10-22 12:56:44 · 1395 阅读 · 0 评论 -
Codeforces Round #353 (Div. 2) C. Money Transfers 环、贪心、前缀和推广、好题
首先最多是ans = n-1次,这个时候只有sum总是0;否则, 只有 有一个小区间是 0, 则ans就少1次;所以要找到,尽可能多的sum == 0 的区间。当时一直不知道,环该怎么处理,结束了,后来才想明白, 环不没有影响, 可以把 j ~ n 和 1 ~ i 这个设定为最后一个sum为0的区间,所以找 1 <= i <= j <= n 内的尽可能多的sum == 0的区间就好。环就是两种情况,j~n和1~i分别是两个最短的sum==0的区间;或者j~n和1~i一起组成了一个sum==0的原创 2016-05-17 20:03:19 · 1915 阅读 · 1 评论 -
2016 UESTC Training for Dynamic Programming B - 柱爷与最大区间和 最大区间和推广、前缀和、枚举间隔点
最大区间和推广、预处理、打表、枚举间隔点 //本来实验过先找到一个最大区间,然后得到ans 和左右边界, 在里面找到最小符区间然后减去, 但这样显然不对,没办法^_^从左到右扫一遍,从右到做扫一遍,处理好前缀和suml[maxn] 和 sumr[maxn], 并分别 O(n)的预处理出 1 ~ i 的最大连续区间和L[i], 和 i ~ n-1 的最大连续区间和 R[i]然后枚举间隔点, i = 1 ~ n-2; ans = max(ans, L[i-1] + R[i+1];复杂度O(n);原创 2016-05-17 11:43:49 · 1208 阅读 · 0 评论 -
UESTC 1299 Date 预处理、打表、找周期、前缀和
A special day is the day that is xth day in that month, and happens to be xth day in that week.In February 1st in 2016, this day in that month happens to be the first day in that week, so we call it a special day.Now, given a time interval, how many spec原创 2016-04-04 23:10:31 · 1925 阅读 · 0 评论 -
The 14th UESTC Programming Contest Final B - Banana Watch 预处理、前缀和
As a famous technology company, Banana Inc. invents Banana Watch, redefining the watch.While a normal watch has 12 indexes and two or three moving hands, a Banana Watch has n indexes and a moving hand.The moving hand is at 0 initially, and in 1st second,原创 2016-04-03 12:45:24 · 1777 阅读 · 0 评论 -
UESTC 1269 ZhangYu Speech 预处理、前缀和
as we all know, ZhangYu(Octopus vulgaris) brother has a very famous speech - "Keep some distance from me". ZhangYu brother is so rich that everyone want to contact he, and scfkcf is one of them. One day , ZhangYu brother agreed with scfkcf to contact him原创 2015-12-20 18:12:21 · 1305 阅读 · 0 评论 -
AtCoder Regular Contest 089 D - Checker 思维题、点的转移、二维前缀和
题意:用k*k的黑白正方形交替填充二维坐标平面如上图,现给出n个方案(x, y, color表示坐标(x,y)的颜色为color),问最多有多少方案能够同时满足。思维题、点的转移、二维前缀和首先要想到把所有的点转移到平面{(0,0)~(k-1,k-1)}内。1、按照45度向量移动不会改变颜色,modx = x / k, mody = y / k; x -= min(modx, mody) * k; y -= min(modx, mody) * k;2、跳动2*k格也不会改变颜色,所以接下来if原创 2018-02-01 18:58:41 · 600 阅读 · 0 评论