E. Remainder Problem 分块】的更多相关文章

两个操作 1对x位置的a[x]+y 2对所有i=y(mod x)求a[i]的和 我们肯定不能n^2 跑,稳超时,但是我们可以这样分块考虑. 为什么n^2不行?因为在x比较小的时候,这个求和操作次数太多了.但是x比较大的时候,这个对时间并没有什么影响 所有我们考虑分块. 用一个dp[i][j]表示(1-5e5的长度分成了长度为x的块,且块内偏移为j)的所有位置的和. 那么操作1,对a[pos]+=x后,需要对所有块长1到sqrt(len)的pos所处的块内偏移位置进行维护,以保证在询问块长1-sq…
F. Remainder Problem 这个其实并不难,只是看看考察有没有分块的思路 思路:用一个ans[i][j]来记录所有k=(1~5e5)中所有a[k]%i==j的和,在查询的时候可以达到复杂度位O(1) 当然因为数据很大,不能够分很多块,而且也没有必要分很多块,因为如果在进行2操作的时候,如果x=1e5,y=1e5-1,那么在数据范围内只有五个数满足条件,可以每次跳过x个数计算值的和,操作: ll Ans=0; for(int i=y;i<=int(5e5);i+=x) Ans+=a[…
引用:https://blog.csdn.net/qq_41879343/article/details/100565031 下面代码写错了,注意要上面这种.查:2  800  0,下面代码就错了. #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include <cstdio>//sprintf islower isupper #include <cstdlib>//malloc exit strcat itoa sy…
[传送门] 题意就是单点加以及查询下标为等差数列位置上的值之和.刚开始看到这道题.我以为一个数的倍数是log级别的.就直接写了发暴力.就T了.还在想为啥,优化了几发才发现不太对劲.然后才想到是$\dfrac {n}{x}$级别的.不过看到$\dfrac {n}{x}$应该就出来了.当$x \leq \sqrt n$时用$sum[i][j]$表示公差为$i$,首项为$j$的和.修改时可以$O(\sqrt n)$修改,查询就可以$O(1)$了.当$x > \sqrt n$时直接暴力就行了. #inc…
传送门 A.There Are Two Types Of Burgers 签到. B.Square Filling 签到 C.Gas Pipeline 每个位置只有"高.低"两种状态,所以直接根据条件来\(dp\)即可. Code #include <bits/stdc++.h> #define MP make_pair #define INF 0x3f3f3f3f3f3f3f3f using namespace std; typedef long long ll; con…
总结 手速场...像我这种没手速的就直接炸了... 辣鸡 E 题交互,少打了个 ? 调了半个小时... 到最后没时间 G 题题都没看就结束了...结果早上起来被告知是阿狸的打字机...看了看题一毛一样... 提供翻译造福人类... A. There Are Two Types Of Burgers Description 题库链接 你有 \(b\) 片面包,\(p\) 块牛肉,\(f\) 块鸡肉.两片面包和一块肉可以组成一个汉堡,两种汉堡的价钱分别是 \(h,c\).求最大收益.\(t\) 组询…
https://www.cnblogs.com/31415926535x/p/11460682.html 上午没课,做一套题,,练一下手感和思维,,教育场的71 ,,前两到没啥,,后面就做的磕磕巴巴的,,,有想法但是不敢实现,,自我否定,,没了思路就只能官方题解,,发现其实都很简单,,,思维场把,,,, A There Are Two Types Of Burgers 贪心就完事了,,推出公式不知道怎么证明是最优的,,,(敲错变量还wale一发emmm #include <bits/stdc++…
A. There Are Two Types Of Burgers 题意: 给一些面包,鸡肉,牛肉,你可以做成鸡肉汉堡或者牛肉汉堡并卖掉 一个鸡肉汉堡需要两个面包和一个鸡肉,牛肉汉堡需要两个面包和一个牛肉 求能得到的最多的钱 直接贪心,哪个比较贵就选哪个做,剩下的材料再做另一个 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath…
CF Edu Round 71 A There Are Two Types Of Burgers 贪心随便模拟一下 #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; #define MAXN 200006 int n , m; int A[MAXN]; int b , p , f , h , c; int main()…
Educational Codeforces Round 71 (Rated for Div. 2)-F. Remainder Problem-技巧分块 [Problem Description] ​ 初始\([1,500000]\)都为0,后续有两种操作: ​ \(1\).将\(a[x]\)的值加上\(y\). ​ \(2\).求所有满足\(i\ mod\ x=y\)的\(a[i]\)的和. [Solution] ​ 具体做法就是,对于前\(\sqrt{500000}=708\)个数,定义\(…