| ||||||||||
| 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>
using namespace std;
int main()
{
int h,n,fi[25],di[25],ti[25],leave[25],total;
int tempfi[25],temptotal,use[25],temptime,i,j,k,f,top,pos;
cin>>n;
while (n)
{
cin>>h;
h *= 60;
total = f = 0;
memset(leave, 0, sizeof(leave));
memset(fi, 0, sizeof(fi));
memset(di, 0, sizeof(di));
memset(ti, 0, sizeof(ti));
for (i=0; i<n; i++)
{
cin>>fi[i];
f += fi[i];
}
for (i=0; i<n; i++)
{
cin>>di[i];
}
ti[0] = 0;
for (i=1; i<n; i++)
{
cin>>ti[i];
ti[i] += ti[0];
ti[0] = ti[i];
}
ti[0] = 0;
if (!f)
{
leave[0] = h;
for (i=0; i<n-1; i++)
{
cout<<leave[i]<<", ";
}
cout<<leave[n-1]<<"\nNumber of fish expected: "<<0<<endl<<endl;
cin>>n;
continue;
}
for (i=0; i<n; i++)
{
memcpy(tempfi, fi, sizeof(fi));
memset(use, 0, sizeof(use));
temptotal = 0;
temptime = h-ti[i]*5;
for (j=0; j<temptime/5; j++)
{
top = tempfi[0];
pos = 0;
for (k=1; k<=i; k++)
{
if (tempfi[k]>top)
{
pos = k;
top = tempfi[k];
}
}
if (top==0)
{
use[0] += (temptime-j*5);
break;
}
temptotal += top;
tempfi[pos] -= di[pos];
if (tempfi[pos] < 0)
{
tempfi[pos] = 0;
}
top = tempfi[pos];
use[pos] += 5;
}
if (total<temptotal)
{
total=temptotal;
memcpy(leave, use, sizeof(use));
}
}
for (i=0; i<n-1; i++)
{
cout<<leave[i]<<", ";
}
cout<<leave[n-1]<<"\nNumber of fish expected: "<<total<<endl<<endl;
cin>>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