![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
小技巧-预处理、前缀和
Nemaleswang
ACM退役狗一只
展开
-
Leetcode 560. Subarray Sum Equals K
题目链接:Subarray Sum Equals K题目大意:给定一个数组,要求找到不同的连续子序列,他们的和为k,问这样的连续子序列有多少个题目思路:首先根据原始的想法,我们可以想到连续子序列的问题可以通过前缀和的方式进行解决,可以通过n^2的问题解决,但是这个做法并不太优,所以我们可以考虑对前缀和的方式进行优化,我们前缀和的思想是这样的,每次对某个区间进行操作,sum[j]-sum[i],...原创 2020-04-22 19:52:55 · 162 阅读 · 0 评论 -
Leetcode 238. Product of Array Except Self
题目链接:Product of Array Except Self题目大意:给定一个数组,要求你求出数组中除了该数之外得数字乘积,要求不能使用除法,且除了输出数组之外不使用任何额外得空间题目思路:很有意思得一道题目,不考虑其他因素得话,我们只需要计算一次全体乘积,每次做除法即可,但是不能使用除法,所以需要考虑其他方法,很容易想到,可以使用前缀和和后缀和进行计算,对于一个数,只需要计算他前一个数...原创 2020-04-15 16:09:14 · 147 阅读 · 0 评论 -
Codeforces Round #433 (Div. 2) D. Jury Meeting
题目链接:Jury Meeting题目大意:有0到n这样n+1个城市,有m个航班,给出出发的时间(当天出发,当天到),出发的城市,到达的城市(要么是从0到某城市,要么是从某城市到0),后面是花费,然后除了0之外的所有城市都有1个科学家,现在所有家要一起在0呆k天,然后回到自己所在的城市,问最小花费题目思路:贪心去做,我们先去找出发的最小花费,再找到达的最小花费,两个相加,预处理一下前缀和就好了(代码原创 2017-09-07 20:46:00 · 301 阅读 · 0 评论 -
hdoj 6053(2017 Multi-University Training Contest - Team 2) TrickGCD
题目链接:TrickGCD题目大意:给出一个长度为n的数组,让你构造出一个长度也为n的B数组,且B数组需要满足对于所有的1<=i<=n,A[i]<=B[i],且对于B数组,任意一个区间的gcd>=2,求满足的方案数题目思路:转化一下就变成了B数组整个区间的gcd>=2,然后直接枚举这个gcd从2到min(a[i]),然后容斥算一下贡献:当x为奇数个不同素数的积时,ans+=1*它对答案的贡献当x为偶原创 2017-08-29 20:34:26 · 538 阅读 · 0 评论 -
SPOJ 4491 Primes in GCD Table
题目链接:Primes in GCD Table题目大意:这道题跟BZOJ2820是一样的,不过没有权限号,就上SPOJ交去了,实际上题目就是给你n,m求1<=x<=N, 1<=y<=M且gcd(x,y)为质数有多少对题思路:如果gcd(x,y)这个质数给定了,是不是就很好求,然后我们想到可以去枚举这些素数,然后运算(T成傻逼)这个时候我们需要简化一点运算,我们可以先反演出这个公式没问题f(x)=∑原创 2017-08-29 11:29:16 · 281 阅读 · 0 评论 -
bzoj 2301 [HAOI2011]Problem b
题目链接:[HAOI2011]Problem b题目大意:给你a,b,c,d,k五个数,问[a,b]这个区间里面的x和[c,d]这个区间里面的y有多少对gcd(x,y) == k题目思路:我们先假定起点是1,区间为[1,b]和[1,d],最后做容斥就好,然后就按照以下思路:这个在[1,b]和[1,d]这个区间里有多少对gcd(x,y) == k可以转化为[1,b/k]和[1,d/k]这个区间里有多少原创 2017-08-29 10:42:40 · 317 阅读 · 0 评论 -
洛谷 P3455 [POI2007]ZAP-Queries
题目链接:ZAP-Queries题目大意:给你b,d,k四个数,问[1,b]这个区间里面的x和[1,d]这个区间里面的y有多少对gcd(x,y) == k题目思路:跟hdoj1695类似,这个在[1,b]和[1,d]这个区间里有多少对gcd(x,y) == k可以转化为[1,b/k]和[1,d/k]这个区间里有多少对gcd(x,y) == 1,因为如果gcd(x,y)=1,则gcd(x∗k,y∗k)原创 2017-08-28 22:01:12 · 528 阅读 · 0 评论 -
bzoj 2818 Gcd
题目链接:Gcd题目大意:求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对题目思路:先转化一下题意,变成求1 <=x,y <= N/prime[i]且Gcd(x,y) = 1的数对有多少,然后假设x >= y,y的枚举交给欧拉函数,又x,y大小不一定,所以答案乘以2,但是注意到这样一种情况,x == y的情况,这种情况答案是x本身,除开1之外都不是质数,所以不影响贡献,1 1这种原创 2017-08-26 11:21:46 · 295 阅读 · 0 评论 -
Codeforces Round #424 (Div. 2) C. Jury Marks
题目链接:Jury Marks题目大意:有n个评委的打分,可正可负,但是我们不知道初始值是多少,然后给出你k个分数,这k个分数是在某个评委打完分之后当前这位选手的得分,要求这k个分数都是正确的,然后需要你判断有多少个初始分可以满足这个条件,全部无序题目思路:因为所有的k个分数必须得都合理,所以第一个分数必须得合理,那么我们就枚举第一个分数为某个评委打分后的分数,那么我们可以通过评委分的前缀和得到初始原创 2017-07-16 18:18:17 · 382 阅读 · 0 评论 -
AtCoder Beginner Contest 066 D - 11
题目链接:D - 11题目大意:给你一个序列,这个序列有n+1个数,1到n这每个数至少出现一次,问这个序列长度为1-n+1的子序列分别有多少种,结果对1e9+7取模题目思路:因为1-n每个数字至少出现一次,也就是说只有一个数重复出现了两次,那么我们首先可以考虑不重复的情况,直接就是C(n+1,k),n+1为序列种的总个数,k为当前选中的子序列的长度,这是不重复的个数,那么我们是需要减去重复个数的,比原创 2017-07-02 18:20:43 · 452 阅读 · 0 评论 -
swjtuoj 2390 Segment Tree
题目链接:Segment Tree题目大意:给你n个数,m代表长度,k代表最小出现的次数,n个数,需要你取长度为3的序列,比如[1,2,3],[2,3,4],但是不是数的位置,只是数而已(因为这个题意读错一发),如果这个序列里面出现的数在整个序列的个数大于等于k,就满足条件,问有多少个满足条件的区间题目思路:处理一下每个数出现的个数,然后处理一下前缀和就好,代表【1,n】这里面所有数出现的次数,直接原创 2017-05-18 21:21:16 · 451 阅读 · 0 评论 -
swjtuoj 2385 Maximize The Beautiful Value
题目链接:Maximize The Beautiful Value题目大意:给你n个非递减的数,你可以将任意一个数放到它前面的位置,这个数至少得移动k步,问怎么放贡献值最大,贡献值为∑ni=1i∗ai\sum_{i = 1}^{n}{i*ai}题目思路:要使贡献值最大,我们只能移动某个数到他前面的第k个位置,我们可以知道移动到k+1位置一定贡献减小,因为当我们移动到k位置时和移动到k+1位置时只有k原创 2017-05-18 18:03:54 · 447 阅读 · 0 评论 -
hdoj 6025 Coprime Sequence
题目链接:Coprime Sequence题目大意:给你n个数,这n个数的总gcd为1,删除某一个数会得到一个新的gcd,问你所有新的总gcd里面最大的是多少题目思路:傻逼题,写了半天,结果发现是个水题,直接处理某个点前缀总gcd和后缀总gcd,然后枚举每个点的时候两部分gcd一下就好#include using namespace std;int t,n,a[10原创 2017-05-08 17:17:20 · 350 阅读 · 0 评论