上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 42 下一页
很典型的树形DP,自己也理解了好久,感觉自己好水哦。。。。。。。。。。。。。。。。。。。。。。。。。所以讲得清楚一点,以后回忆起来也快题意:一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走V步,最多能遍历到的权值我们把背包的思想用到这里来,做的步数相当于背包的容量,点上的权值相当于价值,给定一定的背包容量,求最多能装进背包的价值设dp[0][s][j]表示从s(当前根节点)出发,走 j 步,回到s所能获得的最大权值 dp[1][s][j]表示从s(当前根节点)出发,走j步,不回到s所能获得的最大权值现在我们就可以分配背包容量了:父节点与子节点分配背包容量,从而设计出状态 Read More
posted @ 2012-01-09 08:11 Because Of You Views(3439) Comments(3) Diggs(1) Edit
把最贵的先留着最后再买View Code #include<stdio.h>#include<string.h>int dp[1010];int p[1010];int max(int a,int b){ return a>b?a:b;}int main(){ int n,m,i,j,pos; while(scanf("%d",&n),n) { int Max=0; for(i=1;i<=n;i++) { scanf("%d",&p[i]); if(p[i]>Max) ... Read More
posted @ 2012-01-09 02:28 Because Of You Views(306) Comments(0) Diggs(0) Edit
简单二分枚举求圆的面积交View Code #include<cstdio>#include<cmath>const double eps = 1e-8;const double pi = acos(-1.0);struct Point{ double x,y;}p[1000];struct circle{ Point pp; double r;}cir[30];double area[30];int n;double cir_area_inst(Point c1, double r1, Point c2, double r2) { // 两圆面积交 ... Read More
posted @ 2012-01-08 12:44 Because Of You Views(303) Comments(0) Diggs(0) Edit
坑哥题写完就跑出了样例,挺顺的结果没注意到开方最多开8次就不用开了 TLE没用__int64 WA没想到x>y继续WA最后还有一个PE人生啊,总是不能一帆风顺,偶尔会在得意时给你当头一棒View Code #include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define mid (l+r)> Read More
posted @ 2012-01-07 21:53 Because Of You Views(300) Comments(0) Diggs(0) Edit
http://www.cnblogs.com/wuyiqi/archive/2012/01/06/2314078.htmlpoj 2406 简单求周期View Code #include<cstdio>#include<cstring>char b[1000010];int p[1000010];int m,n;void getp(){ p[1]=0; int i,j=0; for(i=2;i<=m;i++){ while(j>0&&b[j+1]!=b[i]) j=p[j]; if(b[j+1]==b[i]) j+=1; p[i]=j... Read More
posted @ 2012-01-06 21:45 Because Of You Views(8189) Comments(0) Diggs(2) Edit
----------------------------------------------k m x j i由上,next【i】=j,两段红色的字符串相等(两个字符串完全相等),s[k....j]==s[m....i]设s[x...j]=s[j....i](xj=ji)则可得,以下简写字符串表达方式kj=kx+xj;mi=mj+ji;因为xj=ji,所以kx=mj,如下图所示------------- -------------k m x j 看到了没,此时又重复上面的模型了,kx=mj,所以可以一直这样递推下去所以可以推出一个重要的性质len-next[i]... Read More
posted @ 2012-01-06 10:47 Because Of You Views(7022) Comments(0) Diggs(6) Edit
首先看我对kmp解决周期、前缀与后缀间关系的解释http://www.cnblogs.com/wuyiqi/archive/2012/01/06/2314078.htmlhdu 3336 count the string题意:求给定字符串含前缀的数量abab前缀为aababaabababab中共有六个子串是前缀a a ab ab aba abab所以答案为6利用kmp中的匹配原理可以完美的解决此题a---------d----- -----a---------d i j如上所示,假设两串字符完全相等,next[j]=i,代表s[1...i]==sum[j-i+1....j]... Read More
posted @ 2012-01-05 22:18 Because Of You Views(5738) Comments(0) Diggs(4) Edit
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=15&problem=1266&mosmsg=Submission+received+with+ID+9619336题意:求1~n中不能被给定m个数中任意一个数整除的数的个数Sample Input10 22 320 22 4Sample Output310思想:n-(1~n中至少能被m个数中的一个整除的数个数)解法:容斥原理的思想,多减的数要加回去比如第 Read More
posted @ 2012-01-05 16:25 Because Of You Views(610) Comments(0) Diggs(1) Edit
二分答案,然后用容斥原理求1-mid中与m互质的个数注意二分的上界View Code #include<stdio.h>#include<vector>using namespace std;int m,n;__int64 solve(int r,__int64 n){ vector<int> p; int i; for(i=2;i*i<=r;i++){ if(r%i==0){ p.push_back(i); while(r%i==0) r/=i; } } if(r>1) p.push_bac... Read More
posted @ 2012-01-05 14:29 Because Of You Views(1117) Comments(1) Diggs(0) Edit
给定n个数,求互质的四元组的个数。逆向思考,先求不互质的四元组的个数,再减掉。举个例子:以2为因子的数有a个,3为因子 的数有b个,6为因子的数有c个,假设有n个数那么互质的四元组个数为C(4,a)+C(4,b)-C(4,c),即如果一个数仅由偶数个素数相乘所得,则减去,由奇数个素数相乘,则加上通用做法View Code #include<cstdio>#include<cstring>#include<cmath>using namespace std;const __int64 maxn=10005;__int64 count[maxn];__int64 Read More
posted @ 2012-01-04 22:08 Because Of You Views(845) Comments(0) Diggs(1) Edit
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 42 下一页