| ||||||||||
| 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 | |||||||||
我把所有的,注意是所有的测试数据全部过了,还写了文件来验证。。全部一样,为啥还是不对#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