LibreOJ β Round #2 E. 数论只会 GCD】的更多相关文章

传送门 题解 题解里面说得很清楚了. 大约就是单独考虑每个数的贡献,然后看一下每个序列里有多少区间是没有这个数的,乘起来就好了. 为了处理修改我们需要每个值建一棵线段树来搞,但是窝zz了,写了线段树套线段树,比正解多一个log. 一开始想着不调map.set,然后发现特别难写.最后还是调了map…… 比赛的时候挂了0没有逆元的坑啊! #include<map> #include<cstdio> #include<algorithm> #define pii pair #…
题目传送门 传送门 这个官方题解除了讲了个结论,感觉啥都没说,不知道是因为我太菜了,还是因为它真的啥都没说. 如果 $x \geqslant y$,显然 gcd(x, y) 只会被调用一次. 否则考虑每次操作前的数对应该是 $(y, y + kx)$.这样仍然不好处理.考虑忽略掉达到的 $a < b$ 的状态,那么每次的 $k \geqslant 1$.那么当较大数加上较小数的时候对应将 $k$ 加上 1,对应交换两边的数,然后将 $k$ 加上1.特别地,第一次操作不能做大加上小,因为第一次操作…
一些关于GCD的代码.... #include <iostream> #include <cstdio> #include <cstring> using namespace std; typedef long long int LL; LL EX_GCD(LL a,LL b,LL& x,LL& y) { ) { x=;y=; return a; } else { LL ret=EX_GCD(b,a%b,x,y); int t=x; x=y; y=t-a…
内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 给定一个长度为 nnn 的序列 AAA . 定义 f(l,r)=∑i=lrAif(l,r)=\sum_{i=l}^{r} A_{i}f(l,r)=∑​i=l​r​​A​i​​. 询问 mmm 次,每次询问一个数字 xxx,请求出所有满足 r−l+1≥xr-l+1 \ge xr−l+1≥x 区间 [l,r][l,r][l,r] 中最大的 f(l,r)f(l,r)f(l,r). 输入格式…
注意初始化即可. #include <bits/stdc++.h> using namespace std; ],a[],t1,t2,t3,t4; int main(){ memset(a,0x80,sizeof a); ios::sync_with_stdio(false); cin>>n>>m; ;i<=n;i++) cin>>s[i], s[i]+=s[i-]; ;i<=n;i++) ;j+i<=n;j++) a[i]=max(a[i…
LibreOJ β Round #2 题解 模拟只会猜题意 题目: 给定一个长为 \(n\) 的序列,有 \(m\) 次询问,每次问所有长度大于 \(x\) 的区间的元素和的最大值. \(1 \leq x \leq n \leq 10^4,m \leq 10^5,|A_i| \leq 10^4\) 题解: 因为 \(n \leq 10^4\) ,所以暴力. #include <cstdio> #include <cstring> #include <algorithm>…
LOJ528 「LibreOJ β Round #4」求和 先按照最常规的思路推一波: \[\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m\mu^2(\gcd(i,j))\\ =&\sum_{d=1}^{\min(n,m)}\mu^2(d)\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]\\ =&\sum_{d=1}^{\min(n,m)}\mu^2(d)\sum_{t=1}^{\min(n,m)}\mu(t)\lflo…
[LOJ#525]「LibreOJ β Round #4」多项式 试题描述 给定一个正整数 k,你需要寻找一个系数均为 0 到 k−1 之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x) mod k=0.你给出的多项式次数不能超过 60000,且最高次系数必须非 0. 输入 输入一行,包含一个正整数 k. 输出 若无解,则只输出一个整数 −1.否则首先输出一个整数 n 表示你寻找的多项式的次数,随后 n+1 个整数按照从低位到高位的顺序输出多项式的系数. 在此之后的输出将被忽略.…
[LOJ#526]「LibreOJ β Round #4」子集 试题描述 qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两个元素 i,j 均满足条件 gcd(ai,aj)×gcd(ai+1,aj+1)≠1,其中gcd(i,j)表示最大公约数,且这个子集的元素个数是所有满足上述条件的子集中最多的.输出这个子集的元素个数. 输入 输入的第一行包含一个正整数n. 随后n行,每行一个正整数ai. 输出 输出一个整数代表符合条件…
二次联通门 : LibreOJ #526. 「LibreOJ β Round #4」子集 /* LibreOJ #526. 「LibreOJ β Round #4」子集 考虑一下,若两个数奇偶性相同 若同为奇数, 那加1后就是偶数, gcd的乘积就一定不是1 偶数相同 那么我们把原数中的偶数分为一个集合,奇数分为一个集合 把互相之间不符合要求的连边 那么问题就转化为了二分图求最大独立集 */ #include <cstdio> #include <iostream> #includ…