小明放學


第一次參見CSP考試認證,第二題竟然只得到60。仔細檢查以后發現原來是數據溢出了,唉,經驗不足,基礎薄弱!

10^6*10^5為10^11,肯定溢出呀!

題目思路倒是不難

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     //0    1 2    3
 7     //紅綠黃循環 0,r     r,r+g      r+g,r+g+y     根據pos的位置判斷當前狀態 
 8     //             r,0    g,0        y,0
 9     int r,y,g,n;    //紅 黃 綠燈的設置 ,經過的道路段數和紅綠燈數
10     cin>>r>>y>>g>>n; 
11     int k,t,pos;
12     long long time=0;    
13     int a[]={0,r,r+g+y,r+g};
14     for(int i=0;i<n;i++)
15     {
16         cin>>k>>t;
17         if(k==0)
18             time+=t;
19         else
20         {
21             pos=(a[k]-t+time)%(r+g+y);    //根據耗時計算當前pos的位置 
22             if(pos<r)    //此刻為紅燈
23                 time+=(r-pos);     //紅燈  等待
24             else if(pos<r+g)     //綠燈    直接通過
25                 ;
26             else                //黃燈 等待
27                 time+=(r+g+y-pos+r);
28         }
29     }
30     cout<<time;
31     return 0;
32 } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM