P2338 [USACO14JAN]失敗的滑雪Bessie Slows Down
阿新 • • 發佈:2018-12-16
P2338 [USACO14JAN]失敗的滑雪Bessie Slows Down
一道模擬的藍題
資料型別一定不要寫錯啊!!!
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; int N; char err; double T[10005],pret,z1=1; int cnt1; double D[10005],pred,z2=1; int cnt2; int data; double s; double ans; int cnt=1; int main() { // freopen("test.in","r",stdin); scanf("%d",&N); for(int i=1;i<=N;i++) { cin>>err; scanf("%d",&data); if(err=='T') {T[++cnt1] = data;} else {D[++cnt2] = data;} } sort(T+1,T+cnt1+1); sort(D+1,D+cnt2+1); int l=1,r=1; for(int i=1;i<=N;i++) { if((r>cnt2||((D[r]-s)*cnt+ans>=T[l]))&&(l<=cnt1)) { if((T[l]-ans)/cnt+s>1000) {break;} s+=((T[l]-ans)/cnt); ans=T[l]; cnt++; l++; } else { if(D[r]>1000) {break;} ans+=(D[r]-s)*cnt; s=D[r]; cnt++; r++; } } // ans=int((1000-s)*cnt+ans+0.499999); cout<<int((1000-s)*cnt+ans+0.499999)<<endl; return 0; }
之前好像也一直是這個問題
//錯解 for(int i=1;i<=N;i++) { if(z2>cnt2||s+(T[z1]-pret)*(1.0/(cnt+1))<D[z2]) { cnt++; s+=(T[z1]-pret)*(1.0/cnt);//t // pred=(T[z1]-pret)*(1/cnt); ans+=(T[z1]-pret); pret=ans; z1++; } if(z1>cnt1&&z2>cnt2) {break;} if(z1>cnt1||s+(T[z1]-pret)*(1.0/(cnt+1))>D[z2]) { cnt++; ans+=(D[z2]-s)*cnt; s+=(D[z2]-s); pret=ans; z2++; } if(z1>cnt1&&z2>cnt2) {break;} } if(s<1000) ans+=(1000-s)*(cnt+1);