摘要:
很经典的一道欧拉函数题;题意的主要意思就是: 给定一个n,让你求与n互质的数的个数,由于n比较大,一般的方法是行不通的,这时就用到了欧拉函数!欧拉函数:在数论中,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。φ函数的值通式: φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。 (注意:每种质因数只一个。比如12 阅读全文
摘要:
和上一篇博客介绍的那题的一样的,简单的树形DP;题意:给你一棵树,然后让你找到这样的一些点,这个点去掉后,分割出来的子树的个数都小于等于 N/2代码:View Code 1 # include<stdio.h> 2 # include<string.h> 3 # define N 10005 4 struct node{ 5 int from,to,next; 6 }edge[2*N]; 7 int head[N],tol,visit[N],val[N],n; 8 void add(int a,int b) 9 {10 edge[tol].from=a;edge[tol 阅读全文
摘要:
很纠结的一道题啊,看起来很简单,一写起来就各种搞不定!!!开始没怎么想就写代码了,我的思路:建立有向图,正着搜一遍,反正搜一遍,两次dfs,最后把两个结果相融合起来,但是最后不好处理,导致各种搞不定,真杯具!!上网搜了一个代码,超简单,看了一下就明白了,以后做题一定要先把思路理清晰,不能急着敲代码!题意:思路:找平衡点,用dfs遍历没个节点,求出该节点的子树中有多少个节点,若有多个孩子则记录最大的子树的节点的个数保存到一个数组中,即该数组是保存着以该节点为根的树的平衡数,然后找这个数组的中最小的平衡数,并记录该节点。不再多做解释,代码一看就懂了!代码:View Code 1 # include 阅读全文