pku 1042 Gone Fishing
2010-08-21 20:54
375 查看
http://acm.pku.edu.cn/JudgeOnline/problem?id=1042
题意:在规定的时间内钓鱼的数量最多,枚举加贪心
#include <iostream>
#include <cstdio>
using namespace std;
int n,h,f[30],f1[30],d[30],t[30];
int chazhao(int n)//查找鱼最多的岛
{
int i,falg = 1;
for(i = 1;i <= n;i++)
if(f[falg] < f[i])
{
falg = i;
}
return falg;
}
int main()
{
int i,j,max,Max,falg,time,times;
int count[30],count1[30];
while(scanf("%d",&n) != EOF && n)
{
scanf("%d",&h);
memset(count1,0,sizeof(count1));
memset(f,0,sizeof(f));
memset(d,0,sizeof(d));
memset(t,0,sizeof(t));
for(i = 1;i <= n;i ++)
{
scanf("%d",&f[i]);
f1[i] = f[i];
}
for(i = 1;i <= n;i ++)
scanf("%d",&d[i]);
for(i = 1;i < n;i ++)
scanf("%d",&t[i]);
Max = -1;
for(i = 1;i <= n;i++)
{
time = 0;
max = 0;
memset(count,0,sizeof(count));
for(j = 1;j <= i;j ++)
time += t[j-1]*5;
times = (h * 60 - time)/5;
if(times <= 0)
continue;
while(1)
{
falg = chazhao(i);
if(f[falg] <= 0)
break;
max += f[falg];
count[falg] ++;
times --;
f[falg] -= d[falg];
if(f[falg] < 0)
f[falg] = 0;
if(times == 0)
break;
}
if(times)
count[1] += times;
if(Max < max)
{
Max = max;
for(j = 1;j <= i;j++)
count1[j] = count[j];
}
for(j = 1;j <= n;j++)
f[j] = f1[j];
}
for(i = 1;i < n;i ++)
printf("%d, ",count1[i]*5);
printf("%d/n",count1
*5);
printf("%s%d/n/n","Number of fish expected: ",Max);
}
return 0;
}
/*
2
1
10 1
2 5
2
4
4
10 15 20 17
0 3 4 3
1 2 3
4
4
10 15 50 30
0 3 4 3
1 2 3
0
45, 5
Number of fish expected: 31
240, 0, 0, 0
Number of fish expected: 480
115, 10, 50, 35
Number of fish expected: 724
*/
题意:在规定的时间内钓鱼的数量最多,枚举加贪心
#include <iostream>
#include <cstdio>
using namespace std;
int n,h,f[30],f1[30],d[30],t[30];
int chazhao(int n)//查找鱼最多的岛
{
int i,falg = 1;
for(i = 1;i <= n;i++)
if(f[falg] < f[i])
{
falg = i;
}
return falg;
}
int main()
{
int i,j,max,Max,falg,time,times;
int count[30],count1[30];
while(scanf("%d",&n) != EOF && n)
{
scanf("%d",&h);
memset(count1,0,sizeof(count1));
memset(f,0,sizeof(f));
memset(d,0,sizeof(d));
memset(t,0,sizeof(t));
for(i = 1;i <= n;i ++)
{
scanf("%d",&f[i]);
f1[i] = f[i];
}
for(i = 1;i <= n;i ++)
scanf("%d",&d[i]);
for(i = 1;i < n;i ++)
scanf("%d",&t[i]);
Max = -1;
for(i = 1;i <= n;i++)
{
time = 0;
max = 0;
memset(count,0,sizeof(count));
for(j = 1;j <= i;j ++)
time += t[j-1]*5;
times = (h * 60 - time)/5;
if(times <= 0)
continue;
while(1)
{
falg = chazhao(i);
if(f[falg] <= 0)
break;
max += f[falg];
count[falg] ++;
times --;
f[falg] -= d[falg];
if(f[falg] < 0)
f[falg] = 0;
if(times == 0)
break;
}
if(times)
count[1] += times;
if(Max < max)
{
Max = max;
for(j = 1;j <= i;j++)
count1[j] = count[j];
}
for(j = 1;j <= n;j++)
f[j] = f1[j];
}
for(i = 1;i < n;i ++)
printf("%d, ",count1[i]*5);
printf("%d/n",count1
*5);
printf("%s%d/n/n","Number of fish expected: ",Max);
}
return 0;
}
/*
2
1
10 1
2 5
2
4
4
10 15 20 17
0 3 4 3
1 2 3
4
4
10 15 50 30
0 3 4 3
1 2 3
0
45, 5
Number of fish expected: 31
240, 0, 0, 0
Number of fish expected: 480
115, 10, 50, 35
Number of fish expected: 724
*/
相关文章推荐
- pku 1042 Gone Fishing
- pku1042 Gone Fishing
- PKU 1042 Gone Fishing
- pku acm 1042 Gone Fishing
- PKU1042 gone fishing
- PKUOJ1042 Gone Fishing
- pku 1042 Gone Fishing
- Poj/OpenJudge 1042 Gone Fishing
- poj 1042 gone fishing 贪心+枚举
- poj 1042 Gone Fishing
- POJ1042 Gone Fishing
- POJ-1042 Gone Fishing (贪心法求最佳钓鱼方案
- POJ 1042 Gone Fishing(贪心+枚举)
- poj 1042 Gone Fishing
- poj 1042 Gone Fishing
- POJ1042 Gone Fishing
- poj-1042 && nyoj-30(Gone fishing)
- 【POJ1042】Gone Fishing 黑书上第一道贪心题。
- POJ 1042:Gone Fishing【贪心】
- POJ - 1042 Gone Fishing 钓鱼 动态规划(DP)