POJ1083-Moving Tables

转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299062100

提示:利用房间号分割走廊,每条“子走廊”都设置一个计数器,每经过一次+1,完了最后对计数器快排,最大的次数X10就是答案

初看此题有点像贪心的感觉,因为可能会想到把输入的搬运区间的交点(临界点)进行统计,这是很笨很没效率的方法,而且要考虑一堆可能情况,我按这个思路用栈做过这题,列出了所有可能的例子,结果一致但无限WA。。。。所以呼吁大众:不要误入歧途了。。。

 1 //Memory Time 
2 //232K 0MS
3
4 #include<iostream>
5 #include<algorithm>
6 using namespace std;
7
8 int main(void)
9 {
10 int room[401];
11
12 int test,move_time,i,j,temp;
13 int from[200],to[200];
14
15 cin>>test;
16 for(j=0;j<test;j++)
17 {
18 memset(room,0,sizeof(room)); //注意每次测试都要初始化,而不是在输入测试次数前初始化
19
20 cin>>move_time;
21 for(i=0;i<move_time;i++)
22 {
23 cin>>from[i]>>to[i];
24 if(from[i]>to[i])
25 {
26 temp=from[i];
27 from[i]=to[i];
28 to[i]=temp;
29 }
30 if(from[i]%2!=0)
31 from[i]++;
32 if(to[i]%2!=0)
33 to[i]++;
34 for(temp=from[i];temp<=to[i];temp+=2)
35 {
36 room[temp]++;
37 }
38 }
39 sort(room,room+401);
40 cout<<room[400]*10<<endl;
41 }
42 return 0;
43 }

你可能感兴趣的:(table)