| ||||||||||
| 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 | |||||||||
poj 1042太诡异,在百练上投是PE,在这儿投是WA附代码:
我是在百练上投的代码,最后输出一个或多个换行符给出的都是PE,输出两个换行符给出了WA。。。。
在poj.org上投,全都是WA.。。我都郁闷了,哪位大神帮我调试一下找到原因,算法思路应该没错,我也和网上的测试数据对过了,都没有错。另外我是在VS2012下写的代码。
#include<iostream>
#include<cstring>
using namespace std;
const int MAXLAKE=26;
int t[MAXLAKE-1];
int d[MAXLAKE];
int f[MAXLAKE];
int fished[MAXLAKE][MAXLAKE]={0};
int n,interval;
int findmax(int island,int &max)
{
int index=1;
max=0;
for(int i=1;i<=island;i++)
{
if(f[i]-fished[island][i]*d[i]>max)
{
max=f[i]-fished[island][i]*d[i];
index=i;
}
}
return index;
}
int maxfish(int island)
{
int max_fish=0;
int time=0;
for(int i=1;i<island;i++)
{
time+=t[i];
}
int remain=interval-time;
while(remain>0)
{
int max_interval;
int target=findmax(island,max_interval);
remain--;
fished[island][target]++;
max_fish+=max_interval;
}
return max_fish;
}
int main()
{
while(1)
{
cin>>n;
if(n==0)
return 0;
cin>>interval;
interval=interval*12;
int max_finish[MAXLAKE]={0};
memset(fished,0,sizeof(fished));
for(int i=1;i<=n;i++)
{
cin>>f[i];
}
for(int i=1;i<=n;i++)
{
cin>>d[i];
}
for(int i=1;i<n;i++)
{
cin>>t[i];
}
for(int i=1;i<=n;i++)
{
int max=maxfish(i);
max_finish[i]=max;
}
int maxfinish=0,maxfinishisland;
for(int i=1;i<=n;i++)
{
if(max_finish[i]>maxfinish)
{
maxfinish=max_finish[i];
maxfinishisland=i;
}
}
for(int i=1;i<=n;i++)
{
if(i!=n)
{
cout<<fished[maxfinishisland][i]*5<<", ";
}
else
{
cout<<fished[maxfinishisland][i]*5<<endl;
}
}
cout<<"Number of fish expected: "<<maxfinish<<endl;
}
}
在这儿投怎么改都是WA,在百练(poj.grids.cn)上投是PE,再加一个换行符就是WA;再加一个换行符又变成PE了。。。。总之,最后换行符是两个的时候,就是WA,不是2个的时候就是PE。。。我都快疯了,和测试数据对过,没什么问题,思路就是主流的枚举+贪心~哪位大神能帮我看一下,我快疯了都
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator