题干解析
- 这题… 与这题 传送门 有区别否?
懒 题干明白,就不说啥了。
具体思路
- 本题可采取贪心,动规,贪心+堆优化的方法,这里只讲贪心
- 考虑设当前佳佳所走的最远走到第 i 个池塘,然后就可以在前 i 个池塘中循环找钓鱼数最多的。这就等价于佳佳先走到第 i 个池塘,然后不停瞬移
好怪的样子 ,最后枚举 i ,取最大。
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,sum,ans,l,f[100001][2],d[100001],t[100001];
int main(){
scanf("%d %d",&n,&m);
m*=60;
m=m/5;
for(int i=1;i<=n;i++)
scanf("%d",&f[i][1]);
for(int i=1;i<=n;i++)
scanf("%d",&d[i]);
for(int i=2;i<=n;i++)
scanf("%d",&t[i]);
for(int i=1;i<=n;i++){
sum=0;l=m;
f[1][2]=f[1][1];
for(int j=2;j<=i;j++){
f[j][2]=f[j][1];
l-=t[j];
}
while(l>0){
int k=0,MAX=0;
for(int j=1;j<=i;j++){
if(f[j][2]>MAX){
k=j;
MAX=f[j][2];
}
}
if(!MAX) break;
sum+=MAX;
f[k][2]-=d[k];
l--;
}
ans=max(sum,ans);
}
cout<<ans<<endl;
return 0;
}