![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM_前缀和
文章平均质量分 78
逍遥丶綦
这个作者很懒,什么都没留下…
展开
-
前缀和 Codeforces509E Pretty Song
传送门:点击打开链接题意:定义一个函数f(l,r),结果是区间[l,r]中IEAOUY的个数除以(r-l+1),求所有区间的函数f之和思路:求所有的这种字符对答案的贡献。我们可以发现,如果上述的这种字符,所在的位置,从左边数是3,从右边数是4那么答案就等于1+1/2+1/3+1/4 1/2+1/3+1/4+1/5 1/3+1/4+1/5+1/原创 2016-01-18 12:48:57 · 751 阅读 · 0 评论 -
前缀和 Codeforces611C New Year and Domino
传送门:点击打开链接题意:告诉你一个地图(5e2*5e2),里面有障碍物,现在告诉你地图里面的一个子矩阵的对角点坐标,求这个子矩阵里能放多少个1*2的多米诺牌思路:求dp[i][j]表示(1,1)到(i,j)这个子矩阵的的答案,A[i][j]表示第i行的前j列的答案,b[i][j]表示第i列的前j行的答案那么对于(bx,by),(ex,ey),答案就等于dp[ex][ey]-dp[ex原创 2016-01-01 17:34:52 · 1131 阅读 · 0 评论 -
前缀并查集 Codeforces292D Connected Components
传送门:点击打开链接题意:给出n(思路:连通块肯定想到用并查集去维护。然后看到n比较小,所以可能可以每次查询里面复杂度带有n。因为删边用并查集不是很好维护,所以我们可能要想到能不能避免边的删除,那么很容易的想到前缀和思想。用PL[l]来保存[1,l]前l条边组成的图里面的并查集父节点的情况;用PR[r]来保存[r,n]后r条边组成的图里面的并查集父节点的情况;那么对于每原创 2015-12-22 23:51:02 · 1165 阅读 · 0 评论 -
哈希+前缀和 hdu5496 Beauty of Sequence
传送门:点击打开链接题意:一个序列,问所有的子序列的beauty操作之后的数字之和。beauty操作是将序列相邻多个相等的数字删除到只剩下一个思路:设F[i]表示以A[i]结尾的子序列的答案,cnt[i]表示以A[i]的结尾的子序列个数。那么对于第i个,可以枚举以A[k]结尾(k#include#include#include#include#include#include原创 2015-10-12 15:12:58 · 2077 阅读 · 0 评论 -
异或前缀和+DFS hdu5416 CRB and Tree
传送门:点击打开链接题意:给你一棵树,然后Q个问题,每个问题询问有存在多少个f(u,v)等于s其中u思路:这道题我觉得出的非常好,运用了位异或的一些妙用。f(u,v)=f(1,u)^f(1,v),因为假设u,v的lca是p,那么1~p这些节点都是公用的,这部分被异或了两次,就抵消了然后对于Q次问题,假设某一次问题是s,则有s=f(u,v)=f(1,u)^f(1,v)。那么有f(1,v)原创 2015-08-22 14:26:55 · 1698 阅读 · 0 评论 -
前缀和+枚举 Gym100712B Rock-Paper-Scissors
题意:一个人是按数据给出的顺序出石头剪刀布,一个人是先出X个石头,Y个布,Z个剪刀用前缀和来维护R,P,S数组,R[i]表示前i个中有多少个Rcnt1用来统计能打赢的,cnt2统计平手的次数因为一个区间分成了3段,那么有两个节点,枚举中间两个节点即可然后看那3段中分别有多少个能打赢的,和能打成平手的,统计一下满足条件的次数,就是答案了#include#incl原创 2015-07-20 17:52:09 · 1031 阅读 · 0 评论 -
前缀和+抽屉定理 51Nod1103 N的倍数
传送门:点击打开链接题意:一个长度为N(例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数。思路:以前看过抽屉定理,觉得这个定理废话。但是看到这道题,感觉真的好神!因为只有n个数,如果这n个数中,有其中一个数%n为0,那么肯定是直接输出如果所有的数%n都不为0,那么就可能为1~n-1里的任何一个,但是有n个数。原创 2016-04-07 23:01:10 · 1007 阅读 · 1 评论 -
取尺法 Codeforces675C Money Transfers
传送门:点击打开链接题意:有n家银行围成一个圈,有个人在有些银行里欠了钱,在一些银行里有存钱,欠的钱总数等于存的钱总数。现在可以有操作,如果两个银行相邻,那么就能在一个银行转任意多的钱到另一个银行。问最少的操作次数,使得在所有银行的存款钱数都为0思路:这道题的脑洞非常大。。首先我们要发现第一个贪心。如果有一段子串,里面的数字之和等于0,那么在这段子串中移动数字,所需要的代价为子串长原创 2016-05-18 21:02:48 · 975 阅读 · 0 评论