Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
试了所有数据,包括滑铁卢得学的出题数据,没有错,,却WA了。。#include <iostream> #include <queue> #include <cstdio> #define maxn 30 using namespace std; int n,h; int f[maxn],d[maxn],t[maxn],get[maxn],Time[maxn][maxn]; FILE * p; FILE * ttt; struct node { int lakeLable; int fishNumber; node(int a,int b): lakeLable(a),fishNumber(b) {} }; bool operator < (node a,node b) { if(a.fishNumber == b.fishNumber) return a.lakeLable > b.lakeLable; return a.fishNumber < b.fishNumber; } priority_queue<node> q,temp; bool init() { if(fscanf(p,"%d",&n),!n) return false; fscanf(p,"%d",&h); int i; h*=12; for(i=0;i<n;i++) fscanf(p,"%d",&f[i]); for(i=0;i<n;i++) fscanf(p,"%d",&d[i]); for(i=1;i<n;i++) fscanf(p,"%d",&t[i]); t[0]=0; return true; } void solve() { while(!q.empty()) q.pop(); memset(get,0,sizeof(get)); memset(Time,0,sizeof(Time)); int tt,lake,fish,i; for(i=0;i<n;i++) { h-=t[i]; if(h<0) break; tt=h; q.push(node(i,f[i])); temp=q; while(tt && !temp.empty()) { lake=temp.top().lakeLable; fish=temp.top().fishNumber; temp.pop(); int tmp=1; if(!temp.empty()) { if(!d[lake]) tmp=tt; else tmp=(fish-temp.top().fishNumber)/d[lake]; tmp=max(tmp,1); tmp=min(tmp,tt); } Time[i][lake]+=tmp; get[i]+=(2*fish-(tmp-1)*d[lake])*tmp/2; fish-=tmp*d[lake]; tt-=tmp; if(fish>0) temp.push(node(lake,fish)); } Time[i][0]+=tt; while(!temp.empty()) temp.pop(); } int rec=n-1; for(i=n-2;i>=0;i--) if(get[i]>get[rec]) rec=i; fprintf(ttt,"%d",Time[rec][0]*5); for(int i=1;i<n;i++) fprintf(ttt,", %d",Time[rec][i]*5); fprintf(ttt,"\nNumber of fish expected: %d\n\n",get[rec]); } int main() { char sb1[10]="G.10.dat"; p=fopen(sb1,"r"); ttt=fopen("a.txt","w"); while(init()) solve(); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator