misschuer

常用链接

统计

积分与排名

百事通

最新评论

hdu 3605 Escape

 1 /*
 2 http://acm.hdu.edu.cn/showproblem.php?pid=3605
 3 状态压缩+最大流
 4 每个人对于m个星球有1<<m种选择,把这些选择看成一个点
 5 开个数组存这些选择的个数
 6 然后构造最大流
 7 给出建图代码
 8 自己找个高效的最大流去吧
 9 */
10 
11 int main() {
12 
13     int da, i, j, ans, p, ss;
14     while(~scanf("%d %d"&n, &m)) {
15 
16         memset(dp, 0sizeof(dp));
17         p = 1 << m;
18         s = p + m;
19         ans = 0;
20         t = s + 1;
21         N = t + 1;
22         init();
23 
24         for(i = 1; i <= n; ++ i) {
25 
26             ss = 0;
27             for(j = 1; j <= m; ++ j) {
28 
29                 scanf("%d"&da);
30                 ss = (ss << 1+ da;
31             }
32             dp[ ss ] ++;
33         }
34 
35         for(i = 0; i < p; ++ i) {
36         
37             add(s, i, dp[ i ]);
38             add(i, s, 0);
39         }
40 
41         for(i = 0; i < p; ++ i) {
42         
43             int z = i;
44             int cnt = 0;
45             while(z) {
46             
47                 if(z & 1) {
48                 
49                     add(i, cnt+p, dp[ i ]);
50                     add(cnt+p, i, 0);
51                 }
52                 z = z >> 1;
53                 cnt ++;
54             }
55         }
56 
57         for(j = 0; j < m; ++ j) {
58 
59             scanf("%d"&da);
60 
61             add(p+j, t, da);
62             add(t, p+j, 0);
63         }
64 
65         sap(ans);
66         if(ans == n) puts("YES");
67         else         puts("NO");
68     }
69     return 0;
70 }
71 

posted on 2011-04-27 22:24 此最相思 阅读(301) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理