
题解
文章平均质量分 86
DASEason
https://github.com/qq547276542
展开
-
素数筛选,整数的唯一分解,整数所有因子之和,递归求等比数列前n项和
typedef long long LL;const int maxn=10000;int prime[maxn+7]; //下标从1开始,prime[0]存的是素数个数int getPrime(){ //求小于maxn的所有素数,返回素数个数 memset(prime,0,sizeof(prime)); for(int i=2;i<=maxn;i++){原创 2015-11-05 11:47:36 · 803 阅读 · 0 评论 -
求1~n中与m互质的数的个数(m>n) 附hdu1695题解(欧拉函数+容斥原理)
int calc(int n,int m) { //求1~n 与m互质的数的个数 int num=getFactors(m); //先将m分解质因数 int sum=0; //先求出不互质的个数,最后用n减去该数 for(int state=1; state<(1<<num); state++) { //枚举状态 int tmp=1;原创 2015-11-08 21:32:07 · 5879 阅读 · 0 评论 -
UVA 10829 L-Gap Substrings(后缀数组+枚举区间优化)
题目大意:给定一个字符串,问有多少字符串满足UVU的形式,要求U非空,V的长度为g。思路:首先,很容易想到用后缀数组求LCP,能够在O(1)的时间求任意2点的lcp。一开始我想的是枚举v的起点,然后在v的左侧枚举左端u的起点,设左端u的起点为i,那么u_len等于v的起点减i,然后右端起点固定为j=i+u_len+v_len,那么只要lcp(i,j)为u_len,则ans++。 很可惜,原创 2015-10-10 10:51:41 · 2686 阅读 · 0 评论 -
高斯消元法解01异或方程组(附poj 1222题解)
const int maxn=50;//有equ个方程,var个变元。增广矩阵行数为equ,列数为var+1int equ,var;int a[maxn][maxn]; //增广矩阵int x[maxn]; //解集int free_x[maxn];int free_num;void init(){ memset(a,0,sizeof(a)); memset(x,0原创 2015-11-12 23:16:35 · 6111 阅读 · 0 评论 -
Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (树形dp)
https://codeforces.com/contest/1153/problem/D思路: 用dp[i]表示,结点i最少要有dp[i]个最大的结点肯定被忽略掉(因为题目要求最大化,因此我们希望被忽略掉的最大点尽可能少,所以dp表示的是“最少”的个数)。那么对于整个树,根节点的dp[1]即为整颗树最少要丢弃的结点个数,因此最终答案为k-dp[1]+1(因为我们要选中一个答案,所以少丢弃一个...原创 2019-04-14 22:37:02 · 398 阅读 · 2 评论