![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前缀和
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
2017 年广工大的程序设计决赛H题 --- tmk买礼物
题目在此其实下来问了大佬,说是维护一个前缀和就可以了,当时不是太懂,后来仔细想想,就想通了,关键是当时比赛时我还想到了这一特点,就是没有的深入想下去,好气啊!!!思路 : 就是就是维护一个前缀和,因为有一个特点,就是从1连着的数字刚好可以构成从1到这些数字相加这么多数字,所以只要维护前缀和保持规律了就可以了,否则就直接跳出来就行了!!!//就是前缀和,后面的数字如果大于前缀和+1 说明他和区间没有交原创 2017-06-21 13:36:49 · 357 阅读 · 0 评论 -
SCU 4569 【思维 + 前缀和】
传送门 题意: 就是问给定的n个数字中有多个连续子区间, 使得这些子区间的和是给定的一个m的倍数. 思路: 很明显区间和就是想到前缀和, 在%m一下, 那么怎么统计了, 做过HDU5776 的应该知道, 我们可以找到一个相同的那么就有一个区间, 那么这道题这要把所有的区间找出来, 所以我们需要记录一下之前每一个前缀出现的次数, 然后没遇到一个前缀算一次答案即可, 注意这个区间本来就是m的情况, 也原创 2018-04-20 17:32:38 · 252 阅读 · 0 评论 -
HDU 5776 sum 【思维 + 前缀和】
传送门 题意: 给定一个长度为n的序列, 问是否存在一个连续子序列使得他们的和是给定的m的倍数.思路: 很明显, 一提到连续区间的和, 那肯定是和前缀和有关的, 即我们需要找是否至少存在两个在%m意义下相等的数字即可. 为什么%m的不用讲吧? 就是因为超过了m后算倍数是等价于%m的, 所以我们直接做一遍前缀和, 边做边%, 然后标记一些之前出现过的前缀和, 一旦在此出现那么这两个之间的序列相加就是原创 2018-04-20 17:22:49 · 263 阅读 · 0 评论 -
CodeChef - AMR16I Mancunian Hoards Black Money 【前缀 + 思维】
传送门 // 给定一个s, n, x. 下一行n个数, 然后先第一堆的数是s, 然后每次新创建一堆, 它的数量是前面所有的堆数相加在加a[i], 然后我们就得到了n+1个数字, 问能否从这n+1个数字中恰好选择一些数使得他们加起来 = x.我们可以注意到这是一个很经典的问题, 从给定一些数中恰好选择一些数使得他们恰好等于某个数, 但是这个数据量非常的大, 有63项, 那么二进制就不行了, 像这种经原创 2018-02-24 13:30:08 · 358 阅读 · 0 评论 -
FJUT 3087 【前缀好题 + 思维】
传送门 // 这个兄弟院校出的题目, 原题连接我也不知道在哪里了….. (真的是前缀好题啊 !!!) 题意: 中文题目就不多说了. 思路: 看到求什么了吗? 是区间和 ! 所以肯定可以转换为前缀和,那么我们就往前缀和方面想. 那么对于一个前缀和序列, -1, 1, -1, 4, 因为任意一个区间都可以表示为前缀和的差, 所以如果对于两个前缀和, -1(1,1), 1(1,2),那么1 -原创 2018-01-10 21:34:59 · 324 阅读 · 0 评论 -
一些用前缀思想解决的题(持续完善)
有前缀和, 前缀GCD, 前缀奇数个数, 前缀偶数个数, 前缀差, 还有就是相对位置很重要的, 还有就是区间和的.等等(特别是区间和的, 一定可以用前缀和的思想来做!!!), 都要根据自己的思想来去解决!!!,前缀思想真的还是挺考人的, 如果想不到的话…..记住 : 一般涉及到区间的什么值时, 就要用前缀思想.HDU — 4223 思路 : 目的是找一个子串, 其和的绝对值最小. 其实不用原创 2017-06-21 13:38:54 · 761 阅读 · 0 评论 -
XTU 1264 Partial Sum 【思维 + 前缀和排序】
传送门 //题意: 给定一个长度为n的序列和一个m, c, 每次选择两个端点l, r (0 <= l < r <= n) 然后得出 | sign i in (l+1,r)a[i] | - c 加到一个初始为0的计数器中, 最多选择m次, 且每个端点最多只能被选择一次. 问这个计数器最大可以是多大. //思路: 凡是区间和问题都要联想到前缀和啊!!!! 区间问题都要想到前缀呀!!! 从题意中可原创 2017-12-10 21:21:22 · 468 阅读 · 0 评论 -
Wannafly 挑战赛5 A 题 珂朵莉与宇宙 【思维 + 前缀和】
传送门 //题意: 就是求给你的长度为n的序列的所有子区间中满足该区间的和是一个平方数. /思路: 开始没想明白, 可能往之前做的一道题上面想去了. 其实想想后觉得也很简单,因为任何一个区间和都可以利用前缀和表示出来, 所以我们只需要判断一下前缀和即可. 即对于每一个前缀和n, 我们都判断一下前面是否出现过的一个前缀和m使得n - m == 一个平方数. 平方数进行枚举就好了(1e3). 并且原创 2017-12-10 21:12:10 · 452 阅读 · 0 评论 -
codeforces 877 problem B Nikita and string 【思维 + 前后缀思想】
传送门 //题意: 题意很简单, 就是给定一个ab字符串问构成形如a b a 的格式的最多可以留下多少个字符,其中相应的格式可以为0. //思路: 可以看出他们的相对位置非常重要, 所以我们利用前后缀的思想, n^2暴力枚举, 就可以得出最后答案了. 注意我们枚举的是b的所在长度. 为了前后缀当然我们要把他们转化成相应的01字符串就好做了赛.其实这一类相对位置很重要的题目一般都是利用的前后缀的原创 2017-11-06 15:25:26 · 348 阅读 · 1 评论 -
nowcoder Wannafly挑战赛1 B 【暴力 + 思维】
传送门 //思路: 由于n只有1000, 所以n^2的算法是可以通过的, 所以我们利用前缀和来求区间异或值, 然后枚举每一个位置, 算出该位置前面有多少种异或的可能值并计数, 然后算该位置之后的异或值, 加上对应前面的数量即可AC Codeconst int maxn = 1e3+5;int a[maxn],s[maxn];int vis[maxn*maxn];void solve(){原创 2017-10-19 17:49:15 · 426 阅读 · 0 评论 -
2017年四川省赛 --- L 题 (Nice Trick) 【前缀加暴力枚举】或【推公式】
补题地址题目地址思路 : 有两个方法, 一个是题目中已经给出三项式的计算方法, 这样我们可以通过枚举第四位来求出答案. 注意的是前三项那个计算式必须只能计算一次就可以知道所有的答案, 否则复杂度太高(On^2). 所以就用前缀和来计算(On). 二是 去理解三部分的计算方法怎么给出来的, 然后去推四部分的公式, 也可以做! 相对来说第二种方法时间更长, 数学功底要求大, 所以建议用第一种方法.原创 2017-06-23 09:54:39 · 704 阅读 · 1 评论 -
LeetCode 560 Subarray Sum Equals K【前缀和】
传送门题意: 有多少个连续子序列和为给定的k,思路: 连续, 就要想到前缀和, 所以我们利用前缀和的性质, 相减等于中间的和, 那么直接记录每个前缀的次数, 然后累加即可, 注意这类问题 0 这个数都是会作为默认点加的! 不要忘了,想想也是对的AC Codeclass Solution {public: int subarraySum(vector<int>&...原创 2019-04-21 23:08:09 · 429 阅读 · 0 评论