摘要: 题目链接好久 好久 好久 没搞过多重背包的题了,不过还是挺模版的。加上二进制优化了,不加目测会超时。每次都感觉自己写的转换二进制,这么搓呢。。。 1 #include <stdio.h> 2 #include <string.h> 3 #define N 100001 4 int p[N],v[N]; 5 int main() 6 { 7 int i,j,k,c,num,n,sum,vv,max; 8 while(scanf("%d",&c)!=EOF) 9 {10 memset(p,0,sizeof(p));11 memset(v,0,.. 阅读全文
posted @ 2012-07-30 16:14 Naix_x 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题目链接知道算法后,就简单多了,虽然对算法也不是很懂,套上模版就能过。 1 /*POJ 1061 青蛙的约会 2 从题意中很容易得到等式x+mt = y+nt(mod L)//t代表时间 3 移动左右得到 (m-n)t = y-x(mod L); 4 所以 得到(m-n)*a - L*b = y-x的扩展欧几里得,求解a,套上模版就OK了。 5 */ 6 #include <stdio.h> 7 #include <string.h> 8 __int64 x,y; 9 __int64 ext_eucld(__int64 a,__int64 b)10 {11 __int6 阅读全文
posted @ 2012-07-30 13:26 Naix_x 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目链接表示 完全 从学长的文档上照搬的。这才是真正的扩展的欧几里得,以下内容从文档上复制的。扩展欧几里得的简易证明过程: 1 如果gcd(a, b) = d 那么一定存在一个整数x, y满足ax+by = d; 2 3 当b == 0时,显然,x = 1, y = 0. d = a; 4 当b != 0时, 设 5 a*x1 + b*y1 = d ;(d = gcd(a, b)) 6 b*x2 + (a%b)*y2 = d; 7 所以 8 a*x1 + b*y1 = b*x2 + (a – [a/b]*b)*y2 9 a*x1 + b*y1 = a*y2 + b*(x2 –... 阅读全文
posted @ 2012-07-30 12:36 Naix_x 阅读(182) 评论(0) 推荐(0) 编辑