Ray's playground

 

POJ 1020

code
 1 #include <iostream>
 2 using namespace std;
 3 int cake[11], pos[41];
 4 int side, number;
 5 
 6 bool DFS(int a)
 7 {
 8     int min_pos = 41;
 9     int put;
10 
11     if(a == number)
12     {
13         return true;
14     }
15 
16     for(int i=1; i<=side; i++)
17     {
18         if(pos[i] < min_pos)
19         {
20             min_pos = pos[i];
21             put = i;
22         }
23     }
24     int j; 
25     for(int i=10; i>=1; i--)
26     {
27         if(cake[i] && min_pos+<= side && put+i-1 <= side)
28         {
29             for(j=put; j<=put+i-1; j++)
30             {
31                 if(pos[j] > min_pos)
32                 {
33                     break;
34                 }
35             }
36 
37             if(j>put+i-1)
38             {
39                 cake[i]--;
40                 for(int t=put; t<=put+i-1; t++)
41                 {
42                     pos[t] += i;
43                 }
44                 if(DFS(a+1))
45                 {
46                     return true;
47                 }
48 
49                 cake[i]++;
50                 for(int t=put; t<=put+i-1; t++)
51                 {
52                     pos[t] -= i;
53                 }
54             }
55         }
56     }
57 
58     return false;
59 }
60 
61 int main()
62 {
63     int count;
64     cin >> count;
65     while(count > 0)
66     {
67         count--;
68         memset(cake, 0sizeof(cake));
69         memset(pos, 0sizeof(pos));
70         cin >> side >> number;
71         int sum = 0;
72         int c;
73         for(int i=0; i<number; i++)
74         {
75             cin >> c;
76             cake[c]++;
77             sum += c * c;
78         }
79 
80         if(sum != side * side)
81         {
82             cout << "HUTUTU!" << endl;
83         }
84         else 
85         {
86             if(DFS(0))
87             {
88                 cout << "KHOOOOB!" << endl;
89             }
90             else
91             {
92                 cout << "HUTUTU!" << endl;
93             }
94         }
95     }
96 
97 
98     return 0;
99 }

 

posted on 2010-08-22 20:40  Ray Z  阅读(452)  评论(0编辑  收藏  举报

导航