| ||||||||||
| 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 | |||||||||
Re:我把所有的,注意是所有的测试数据全部过了,还写了文件来验证。。全部一样,为啥还是不对In Reply To:我把所有的,注意是所有的测试数据全部过了,还写了文件来验证。。全部一样,为啥还是不对 Posted by:boatswain at 2010-08-07 19:23:21 > #include <iostream>
> #include <stdio.h>
> #include <functional>
> #include <string.h>
> #include <algorithm>
> #include <queue>
> using namespace std;
> typedef struct Node
> {
> int fi,ti,di;int loc;int time;
> }node;
> node lake[25];
> node temp[25];
> node temp2[25];
> node boat;
> int n,h,maxtime;int maxfish;
> bool operator<(const Node z,const Node x)
> {if(x.fi==z.fi) return z.loc>x.loc;return x.fi>z.fi;}
> void fish()
> {
> memcpy(temp,lake,sizeof(temp));
> memcpy(temp2,lake,sizeof(temp2));
> maxfish=0;int curfish=0;
> int tt;int _i,_d,_t,_f;
> priority_queue<Node> q;
> for(int k=1;k<=n;k++)
> { curfish=0;
> tt=maxtime;
> for(int i=1;i<=k;i++){tt-=temp[i].ti*5; temp[i]=lake[i]; q.push(temp[i]);}
> while(tt>0)
> {
> boat=q.top();
> q.pop();
> if(boat.fi==0) break;
> curfish+=boat.fi;
> _i=boat.loc;
> temp[_i].time+=5;
> temp[_i].fi-=boat.di;
> if(temp[_i].fi<0) temp[_i].fi=0;
> tt-=5;
> q.push(temp[_i]);
> }
> if(tt>0) temp[1].time+=tt;
> if(curfish>maxfish)
> {
> maxfish=curfish;
> memcpy(temp2,temp,sizeof(temp2));
> }
> else if(curfish==maxfish)
> {
> for(int i=1;i<=n;i++)
> {
> if(temp[i].time>temp2[i].time)
> {
> memcpy(temp2,temp,sizeof(lake));
> break;
> }
> }
> }
>
> while(!q.empty())
> q.pop();
> }
> }
> int main()
> {
> scanf("%d",&n);
> while(n!=0)
> { memset(temp2,0,sizeof(temp2));
> memset(lake,0,sizeof(lake));
> memset(temp,0,sizeof(temp));
> scanf("%d",&h);
> maxtime=h*60;
> for(int i=1;i<=n;i++){ scanf("%d",&lake[i].fi);lake[i].loc=i;}
> for(int i=1;i<=n;i++) scanf("%d",&lake[i].di);
> for(int i=2;i<=n;i++) scanf("%d",&lake[i].ti);
> fish();
> memcpy(lake,temp2,sizeof(lake));
> int i;
>
> for(i=1;i<n;i++)
> printf("%d, ",lake[i].time);
> printf("%d\n",lake[i].time);
> printf("Number of fish expected: %d\n\n",maxfish);
> scanf("%d",&n);
>
> }
> return 0;
> }
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator