| ||||||||||
| 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 | |||||||||
相同代码C++WA,G++就AC了。。。顺便贴下代码(贪心加枚举)#include<stdio.h>
#include<algorithm>
using namespace std;
int fi[30];
int di[30];
int ti[30];
int cfi[30];
int n,t;
struct st
{
int max;
int num[30];
}s[30];
int getmax(int p[],int i,int j)
{
int t=i,cmax=p[i];
for(int m=i+1;m<=j;m++)
{
if(cmax<p[m])
{
cmax=p[m];
t=m;
}
}
return t;
}
void fishing()
{
int T,v;
for(int i=1;i<=n;i++)
{
s[i].max=0;
for(int j=1;j<=n;j++)
{
s[i].num[j]=0;
}
}
for(int i=1;i<=n;i++)//i表示结束钓鱼时的湖
{
v=0;
T=t*60;
for(int j=1;j<=i;j++)
{
cfi[j]=fi[j];
T=(j<i)?T-ti[j]*5:T;
}
while(v<T)
{
int k=getmax(cfi,1,i);// 找到当前状态下捕鱼最多的湖进行捕鱼
s[i].max+=cfi[k];
s[i].num[k]+=5;
cfi[k]>=di[k]?cfi[k]-=di[k]:cfi[k]=0;
v+=5;
}
}
for(int i;i<=n;i++)//将以编号为1-n的湖为结束钓鱼时,最多钓鱼数存入cfi数组
cfi[i]=s[i].max;
int l=getmax(cfi,1,n);//找到其中钓鱼最多时的l,l即结束钓鱼时的小湖
for(int i=1;i<=n;i++)
{
if(i!=n)
printf("%d, ",s[l].num[i]);
else
printf("%d\n",s[l].num[i]);
}
printf("Number of fish expected: %d\n\n",s[l].max);
}
int main()
{
while(scanf("%d",&n),n)
{
scanf("%d",&t);
for(int i=1;i<=n;i++)
{
scanf("%d",&fi[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&di[i]);
}
for(int i=1;i<n;i++)
{
scanf("%d",&ti[i]);
}
fishing();
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator