第一次參見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 }