摘要:
通道思路:可以证明点(x,y)与(0,0)所连线段上不包含原点有的点为gcd(x,y)于是问题就变成了求gcd(x,y)(1 #include#include#include#include#define inf 0x7fffffff#define ll long longusing namespa... 阅读全文
摘要:
通道题意:有三个数N, M, K, 然后N个特定序列。 从这特定的序列里必须改变K个数字, 取值范围为 [1,M]。 然后求出各序列的最大公约数为1~M分别多少个思路:代码:#include #include #include using namespace std;//const int V = ... 阅读全文
摘要:
通道题意:这题求[1,n],[1,m]gcd为k的对数。而且没有顺序思路:设f(k)为gcd(x,y)=k的数对(x,y)的对数,我们要求的是f(1)设F(k)为gcd(x,y)为k的倍数的数对(x,y)的对数,可以想到F(k)=floor(b/k)*floor(d/k),由莫比乌斯反演得:令lim... 阅读全文
摘要:
通道题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数#include #include using namespace std;typedef long long ll;template inline bool rd(T &ret) { char c; int s... 阅读全文
摘要:
通道题意:求gcd(a,b,c) = 1 a,b,c typedef long long ll;template inline bool rd(T &ret) { char c; int sgn; if(c = getchar() , c == EOF) return false; ... 阅读全文
摘要:
通道题意:给出n个数,m组序列,然后每次可以选择一个序列给对应的每个数加定值,及询问该组对应数之和思路:可以知道修改某一组后,肯定对应和其他组有相交部分也要对应修改,每次去修改肯定不现实,然后对于sqrt(n)以内的数可以O(n)修改,其他的只要计算对应的增量即可,然后维护对于大于sqrt(n)的序... 阅读全文
摘要:
通道题意:询问[l,r]区间的权和,权定义为sum(k^2*a[i]),k表示a[i]出现的次数思路:区间每增加一个a[i],增量是(2*x+1)*a[i],因为(x+1)^2*a[i] = (x^2 +2*x + 1)*a[i]分块排序即可,块内按r排序代码:#include #include #... 阅读全文
摘要:
通道题意:区间[L, R] 之间排序后有多少段连续的数思路:一个一个的向里面添加,只需要判断a[i]-1 和 a[i]+1是否已经添加在内,如果两个都在,则总段数减1,如果两个都不在,总段数加1,其他情况总段数不变代码:分块、#include #include #include #include u... 阅读全文
摘要:
通道题意:区间涂色,询问区间内颜色相同的个数思路:将原区间划分乘sqrt(n)个区间,每次暴力查询和跟新两边的区间,中间的区间直接用hash存每种颜色的节点的数量。这里用到了类似线段树的lazy思想,区间成段修改直接打个标记,等到要划分这个区间的时候先把标记传下去,然后更新代码:#include #... 阅读全文
摘要:
通道题意:给一个树,树上每个节点都有两个属性:忠诚度和能力,给出若干查询,求每个子树中能力 > 树根能力的点中,忠诚度最高的那个思路:子树dfs序即可,然后忠诚度排个序,取能力值大于u且忠诚度最高的,虽然线段树也可以搞,练练分块。代码:#pragma comment(linker, "/STACK:... 阅读全文