摘要:
题目链接:http://gnu.bnu.edu.cn/contest/problem_show.php?pid=4359思路:直接递推就可以了,dp[i][0]表示前i位不含4或者13,且最后一位不为1的个数,dp[i][1]表示前i位不含4或者13,最后一位为1的个数;于是有dp[i][0]=8*dp[i-1][0]+7*dp[i-1][1],dp[i][1]=dp[i-1][0]+dp[i-1][1]; 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cm 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2988思路:水题,kruskal求最小生成树之后,直接用总权值减去即可。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define MAXN 222222 7 typedef long long LL; 8 struct Edge{ 9 int u,v,w;10 }edge[MAXN 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3501思路:首先用一下欧拉函数Eluar(n)求一下1-n中与n互质的质因子的个数,然后就要用到下面简单的定理了:如果gcd(n,i)==1,那么就有gcd(n,n-i)==1;于是题目的要求是要求小于n并且与n不互质的所有数的和,这里我们可以先求与n互质的所有数的和为sum=n*(Eular(n)/2)(这里用到了上面的定理。最后所有数的和减去sum即可。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstri 阅读全文