摘要:
这个题目的写法有很多,用二分图染色也可以写,思路很好想,这里我们用关于并查集的两种写法来做。 题目大意:输入x,y表示x和y交配,然后判断是否有同性恋。 1 带权并查集: 我们可以用边的权值来表示一种关系,比如说 我们可以设权值为1,假如A和B发生关系,B和C发生关系,那么C到A的距离就是2,如果A 阅读全文
摘要:
这个题目的写法有很多,用二分图染色也可以写,思路很好想,这里我们用关于并查集的两种写法来做。 题目大意:输入x,y表示x和y交配,然后判断是否有同性恋。 1 带权并查集: 我们可以用边的权值来表示一种关系,比如说 我们可以设权值为1,假如A和B发生关系,B和C发生关系,那么C到A的距离就是2,如果A 阅读全文
摘要:
题目大意:有一个区间,长度为n,然后跟着m个子区间,每个字区间的格式为x,y,z表示[x,y]的和为z。如果当前区间和与前面的区间和发生冲突,当前区间和会被判错,问:有多少个区间和会被判错。 题解:x,y,z表示从x开始到y的所有数字的和,那么x-1就表示从(x-1,y]的区间和。我们可以对区间的左 阅读全文
摘要:
题目大意:有n台坏掉的电脑,给出每台电脑的坐标,然后每次询问输入0(字符) x,表示电脑x恢复正常,输入S x y 询问x和y是否可以联网。只要是x和y的距离小于距离d,那么就可以联网,如果有个中介c使得x到c的距离小于d,y到c的距离小于d,那么x和y也可以联网。 题解:当修复好一台电脑后,然后判 阅读全文
摘要:
题目大意:当输入2时,将p处的点的值修改为x, 当输入1时,判断区间[L,R]的gcd是否几乎正确,几乎正确的定义是最多修改一个数,使得区间[L,R]的gcd为x。 题解:用线段树维护一个gcd数组,在查询的时候,线段树的查询本质就是不停的分块,这时我们可以添加一些剪纸,比如说,对一个根节点root 阅读全文
摘要:
离散化的定义:离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。(by百度百科) 为什么要离散化处理?打个比方,某个题目告诉你有10^4个数,每个数大小不超过10^10,要你对这些数进行操作,需要开10^10的数组,当然这是不可能的,但是10^4的范围就完全没问题。 我们可 阅读全文
摘要:
题目大意:一个字符串只含有? ( ),?可以变成 ) 或者 ( ,将字符串中所有的?变成) 或者 ( 使得字符串合法。 合法就是让括号配对,并且不可以提前结束比如:()()这样是不合法的。 题解:既然不能提前结束,那第一个字符必须和最后一个匹配,所以我们只要关注从2~n-1就可以了。 我们可以正着扫 阅读全文
摘要:
题解:求n^k的前三位和后三位。 后三位直接快速幂对1000去余就可以了。前三位可以转换成浮点数来操作,也是用快速幂,我们只保留答案的前三位,当前值大于1000.0的话就除以10,直到结果小于等于1000.0。 #include<bits/stdc++.h> using namespace std; 阅读全文
摘要:
一个让人脑洞大开的题。 题目大意比较简单,询问[1,n]有多少个数其因子和为偶数。 因子分解定理中求因子和的公式是 f(n)=(1+p1+p1^2+p1^3+...+p1^a1)(1+p2+p2^2+...+p2^a2).... 如果让因子和为偶数,首先我们看一下两个数相乘怎么才能得到偶数: 1 e 阅读全文
摘要:
题解:这道题要从n的角度来考虑i和j。 n可以表示为n=a1^p1*a2^p2*a3^p3......。n=lcm(i,j),那么质因子a1^p1,a1可以在i或者j中,并且p1=max(a1i,a1j)即pi为i中ai和j中ai的最大值。假设a1在i中,对于质因子a1,b中有[0,p1],一共有p 阅读全文
摘要:
题解:素数区间问题。注意到a和b的范围是1<<31,所以直接暴力打表肯定不可以。如果一个数是合数,他的两个因子要么是两个sqrt(x),要么就分布在sqrt(x)两端,所以我们可以根据sqrt(n)之前的数来把sqrt(n)之后的素数给筛出来。 首先进行1e6的素数打表。然后对每个l,r,首先找到第 阅读全文
|