上一页 1 2 3 4 5 6 7 8 ··· 11 下一页
摘要: 直接搬人家的博客吧,感觉比我自己写的好多了!poj 2455 Secret Milking Machine 二分 + dinic求最大流//poj 2455 Secret Milking Machine//二分 + 最大流//题意://输入第一行3个数为结点数,边数,路径数//接下来为每条边的信息//要求找出对应路径数中每条边都尽量小,输出这些路径中的边最长边为多少//每条边只能用一次//思路://对路径中的最长边进行二分,之后用最大流在符合边长限制的边中找看看有几条从//起点 1 到终点 n的路,若大于限制的路径数就向左二分,反之向右二分//注意://dinic:广搜时记得要有容量的且端点没 阅读全文
posted @ 2012-09-24 20:08 朝圣の路 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 唉。。。这题太让我伤心了,看完题之后知道是最小生成树,但是却没想到暴搜,卡了好久,最后是看别人的思路才过的,感觉自己好笨啊!!!#include"stdio.h"#include"stdlib.h"#define inf 999999int n,m,fa[105];struct node{ int x,y; int cost;}edge[1005];int cmp(const void *a,const void *b){ node *aa=(node*)a,*bb=(node*)b; return aa->cost-bb->cost;}in 阅读全文
posted @ 2012-09-13 13:32 朝圣の路 阅读(370) 评论(0) 推荐(0) 编辑
摘要: #include"stdio.h"int n,m,fa[1005];int find(int w){ int temp=w;//并查集的路径压缩 while(temp!=fa[temp]) temp=fa[temp]; fa[w]=temp; return temp;}int cal(){ int i,sum=0,a,b,x,y; for(i=0;i<=n;i++) fa[i]=i; for(i=0;i<m;i++) { scanf("%d%d",&x,&y); a=find(x); ... 阅读全文
posted @ 2012-09-12 21:42 朝圣の路 阅读(197) 评论(0) 推荐(0) 编辑
摘要: // m^n % kint quickpow(int m,int n,int k){ int b = 1; while (n > 0) { if (n & 1) b = (b*m)%k; n = n >> 1 ; m = (m*m)%k; } return b;} 阅读全文
posted @ 2012-08-01 10:37 朝圣の路 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 最小生成树,裸题#include"stdio.h"#include"stdlib.h"int r[105],n,p;struct nod{ int x,y; int len;}w[10005];int cmp(const void *a,const void *b){ nod *aa=(nod*)a,*bb=(nod*)b; return aa->len-bb->len;}int find(int x){ while(x!=r[x]) x=r[x]; return x;}void input(){ int i,j; p=0; ... 阅读全文
posted @ 2012-07-27 12:33 朝圣の路 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 我又在这种裸题上花了一上午的宝贵时间,唉,这回错在忽略了重边的情况、#include"stdio.h"#include"string.h"#define Maxn 0x7fffffffint map[1005][1005];int dis[1005];void fresh(int n){ int i,j; for(i=0;i<=n;i++) { for(j=0;j<=n;j++) map[i][j]=Maxn; map[i][i]=0; } for(i=0;i<=n;i++) dis[i]=Maxn;... 阅读全文
posted @ 2012-07-27 11:21 朝圣の路 阅读(550) 评论(1) 推荐(0) 编辑
摘要: 鉴于自己表达能力实在太差,我就直接抄袭下别人的博客吧!!!哈哈分析及代码如下: 传送门:http://poj.org/problem?id=1185 非常经典的DP问题,考虑了状态压缩,位运算,有的大牛还用了滚动数组。 这次不罗嗦,直接分析思路: 首先看复杂度,对于每一行,朴素的想法是放的可能性是2^n,n代表列数,但是题目要求在范围2以内不准再部署炮兵。所以,我们search每一行可能的情况,利用位运算。然后DP,对于每一行,具有无后效性:即这一行的部署情况只与本身以及前两行的情况有关。依次DP下去即可求解。关于状态压缩:比如1表示放置,1001为在4列的情况下一种部署,... 阅读全文
posted @ 2012-07-25 12:59 朝圣の路 阅读(304) 评论(0) 推荐(0) 编辑
摘要: #include"stdio.h"#include"stdlib.h"#include"string.h"int a[2005],dp[2005][1005];int cmp(const void *a,const void *b){ return *(int*)a-*(int*)b;}int min(int a,int b){ return a<b?a:b;}int main( ){ int n,k,i,j; while(~scanf("%d%d",&n,&k)) { for(i=1;i&l 阅读全文
posted @ 2012-07-24 09:42 朝圣の路 阅读(189) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1087代码如下:#include"stdio.h"#include"string.h"int a[1005],sum[1005];int main( ){ int n,i,j,max; while(scanf("%d",&n)&&n!=0) { max=0; memset(sum,0,sizeof(sum)); for(i=1;i<=n;i++) { scanf("%d",&a[i]); fo 阅读全文
posted @ 2012-07-06 21:45 朝圣の路 阅读(137) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2108代码如下:#include"stdio.h"int flag1,flag2,x[1005],y[1005];void judge(int x1,int y1,int x2,int y2){ if(x1*y2-x2*y1>0) flag1=1; else if(x1*y2-x2*y1<0) flag2=1;}int main( ){ int n,a,b,i; while(scanf("%d",&n)&&n!=0) { flag1= 阅读全文
posted @ 2012-07-06 15:14 朝圣の路 阅读(170) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 11 下一页