POJ 1065 Wooden Sticks

思路:

排序后依次进行贪心选择;

 

 1 #include
 2 #include
 3 using namespace std;
 4 struct node {
 5     int l, w;
 6     bool isUsed;
 7 }nodes[5000];//木棍数组
 8 bool cmp(const node& n1, const node &n2)
 9 {
10     if (n1.l < n2.l)
11         return true;
12     else if (n1.l == n2.l&&n1.w < n2.w)
13         return true;
14     else
15         return false;//记得这句 
16 }
17 int main()
18 {
19     int t;
20     cin >> t;
21     for (int i = 0; i)
22     {
23         int n;
24         cin >> n;
25         for (int j = 0; j)
26         {
27             cin >> nodes[j].l >> nodes[j].w;
28             nodes[j].isUsed = false;
29         }
30 
31         sort(nodes, nodes + n, cmp);
32         node cur = nodes[0];//木棍0为当前最后用过的木棍
33         nodes[0].isUsed = true;
34         int c = 0;//启动时间 
35         while (1)
36         {
37             for (int j = 0; j//在未使用的木棍中,将l,w不小于当前木棍的木棍设为使用 
38             {
39                 if (nodes[j].isUsed == false)
40                 {
41                     if (nodes[j].l >= cur.l&&nodes[j].w >= cur.w)
42                     {
43                         nodes[j].isUsed = true;
44                         cur = nodes[j];
45                     }
46                 }
47             }
48             c++;//启动时间+1 
49             int j;
50             for (j = 0; j//寻找没有用过的木棍,标记为最后使用的,退出 
51             {
52                 if (nodes[j].isUsed == false)
53                 {
54                     cur = nodes[j];
55                     nodes[j].isUsed = true;
56                     break;
57                 }
58 
59             }
60             if (j == n)//用完了退出 
61                 break;
62         }
63         cout <<  c << endl;
64     }
65     return 0;
66 }

 

转载于:https://www.cnblogs.com/fudanxi/p/10434759.html

你可能感兴趣的:(POJ 1065 Wooden Sticks)