我希望你是我独家记忆

一段永远封存的记忆,随风而去
posts - 263, comments - 31, trackbacks - 0, articles - 3
   :: 首页 :: 新随笔 ::  :: 聚合  :: 管理

PKU3400

Posted on 2008-10-14 19:36 Hero 阅读(103) 评论(0)  编辑 收藏 引用 所属分类: 代码如诗--ACM
 1 //3400 Accepted 312K 250MS G++ 1584B PKU 
 2 
 3 // 无语--题目意思一直理解错
 4 
 5 #include <stdio.h>
 6 #include <stdlib.h>
 7 #include <string.h>
 8 
 9 const int size = 12 ;
10 
11 struct NODE
12 {
13     int num ;
14     int weight ;
15     int value ;
16 };
17 struct NODE node[size] ;
18 
19 int weight[2] ;
20 int value[2] ;
21 
22 int now ;
23 
24 int flag[size] ;
25 
26 int inn, ind ;
27 int best ;
28 int sum ;
29 
30 void input()
31 {
32     sum = 0 ;
33     forint i=1; i<=inn; i++ )
34     {
35         node[i].num = i ;
36         scanf( "%d %d"&node[i].weight, &node[i].value ) ;
37         sum += node[i].value ;
38     }
39 }
40 
41 void DFS( int dep, int tdep, int stone, int bunk, int tsum )  
42 {
43     if( value[1+ tsum <= best ) return ;
44 
45     flag[stone] = 1 ; weight[bunk] += node[stone].weight ; value[bunk] += node[stone].value ;
46 
47     if( dep == tdep )
48     {
49         //printf( "best==%d   value[1]==%d\n", best, value[1] ) ;
50         best = best > value[1? best : value[1] ;
51     }
52 
53     forint i=1; i<=inn; i++ ) if0 == flag[i] )
54     {
55         if( weight[bunk]-weight[1-bunk] > ind )
56             DFS( dep+1, tdep, i, 1-bunk, tsum-node[stone].value ) ;
57     
58         else
59             DFS( dep+1, tdep, i, bunk, tsum-node[stone].value ) ;
60     }
61 
62     flag[stone] = 0 ; weight[bunk] -= node[stone].weight ; value[bunk] -= node[stone].value ;
63 }
64 
65 void process() 
66 {
67     best = -1 ;
68 
69     forint i=1; i<=inn; i++ )
70     {
71         memset( flag, 0sizeof(flag) ) ; 
72         weight[0= weight[1= 0 ; value[0= value[1= 0 ;
73 
74         DFS( 1, inn, i, 0, sum ) ;
75 
76         //DFS( 1, inn, i, 0, node[i].weight, node[i].value, 0, 0 ) ;
77     }
78 }
79 
80 void output()
81 {
82     printf( "%d\n", best ) ;
83 }
84 
85 int main()
86 {
87     while( scanf( "%d %d"&inn, &ind ) != EOF )
88     {
89         input() ;
90 
91         process() ;
92 
93         output() ;
94     }
95 
96     return 0 ;
97 }

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