CodeForces 937C Save Energy! 水題
阿新 • • 發佈:2018-06-28
true 回來 sig spa \n cas highlight CP fine
題意:
一個爐子烤雞,爐子打開的時候一共$T$分鐘可以烤完,關閉的時候一共$2T$分鐘可以烤完,爐子每$K$分鐘自動關閉,廚師每$D$分鐘回來檢查,打開爐子
問多長時間烤完..
題解:
用整數寫比較穩妥..
顯然,整個過程是呈周期性的.
$K>D , t_r = D*(\left \lfloor\frac{K}{D} \right \rfloor +1) $
$K<=D, t_r =D$
將總時間$T*2$,那每個周期提供的完成度 $C=K+D$
答案就可以出來了..
輸出的時候除以二 判斷一下余數即可;
#include <bits/stdc++.h> #define ull unsigned long long using namespace std; int casn,n,m,k; int main(){ ull k,d,t; cin>>k>>d>>t; t*=2; ull ans; ull ck=0; if(k>=d&&k%d==0){ ans=t; }else if(k>d){ ull rnd=d*(k/d+1); ull ck=rnd+k; ans=2*rnd*(t/ck); ull ckt=ck*(t/ck); if(t%ck){ if(t%ck<=k*2) ans+=(t-ckt); else ans+=2*(k+(t-ckt-k*2)); } }else { ull ck=d+k; ans=2*d*(t/ck); ull ckt=ck*(t/ck); if(t%ck){ if(t%ck<=k*2) ans+=(t-ckt); else ans+=2*(k+(t-ckt-k*2)); } } cout<<ans/2; if(ans%2) cout<<".5\n"; else cout<<".0\n"; return 0; }
CodeForces 937C Save Energy! 水題