POJ1484 Blowing Fuses(簡單模擬)

題目連接:http://poj.org/problem?id=1484node

這題直接簡單模擬便可。給你n個容器,m個操做,最大容量C。模擬每個對器件的開關操做。若是原來是關閉的,則打開,同時最大功耗加上這個器件的功耗。若是原來是打開的,就關了它,同時目前的功耗值減去這個器件所消耗的。這個最大功耗時時更新。若是大於C,輸出Fuse was blown.不然輸出所到達的最大功耗。這個模擬算法很簡單,可是我卻WA了好久(..........)。直到ios

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<vector>
 6 #include<stack>
 7 #include<map>
 8 #include<set>
 9 #include<list>
10 #include<queue>
11 #include<string>
12 #include<algorithm>
13 #include<iomanip>
14 using namespace std;
15 #define MAX 50
16 
17 struct node
18 {
19     int sta;
20     int power;
21 };
22 
23 node arr[MAX] ;
24 
25 int n,m ,c;
26 
27 int main()
28 {
29     int p = 1;
30     while(cin>>n>>m>>c &&  n!= 0 && m!= 0 && c != 0)
31     {
32         int t = 0;//功耗警告
33         int sum = 0;
34         int max = 0;
35         int x;
36         for(int i = 0;i <n;i++)
37         {
38             cin>>arr[i].power;
39             arr[i].sta = 0;//初始爲關閉狀態
40         }
41         for(int i = 0; i < m;i++)
42         {
43             cin>>x;
44             if(arr[x-1].sta == 0)//當前爲關閉狀態
45             {
46                 arr[x-1].sta = 1;//打開
47                 sum += arr[x-1].power;
48                 if(sum > max){max = sum;}
49                 if(sum > c)
50                 {
51                     t = 1;
52                     //break;   //加了這個會一直WA,WA 
53                 }
54             }
55             else//當前爲打開狀態
56             {
57                 arr[x-1].sta = 0;
58                 sum -= arr[x-1].power;
59             }
60         }
61         if(t == 1)
62         {
63             cout<<"Sequence "<<p++<<endl<<"Fuse was blown."<<endl;
64         }
65         else
66         {
67             cout<<"Sequence "<<p++<<endl<<"Fuse was not blown."<<endl<<"Maximal power consumption was "<<max<<" amperes."<<endl;
68         }
69         cout<<endl;//注意格式要求,沒有這個換行會 PE
70     }
71     return 0;
72 }
View Code

中間判斷功耗大於C時,我將標記置爲1,直接break掉,致使WA了半天,其實刪掉就能夠了(原本就不該該加上去)。由於題目意思把m個操做所有讀入才能進行最終判斷。中途break掉,雖然邏輯沒有什麼錯誤,可是後面的數據實際沒有讀入,程序不容許這樣。算法

最後,題目的輸出格式也要注意下,每一個Sequence間有一行間隔ide

相關文章
相關標籤/搜索