本文主要是介绍AcWing1262.鱼塘钓鱼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题目链接】1262. 鱼塘钓鱼 - AcWing题库
输入样例:
5
10 14 20 16 9
2 4 6 5 3
3 5 4 4
14
输出样例:
76
【代码及详细注释】
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=110;
int a[N],b[N],sp[N],d[N],n,t,cost[N];
int get_yu(int k)
{return max(0,a[k]-b[k]*cost[k]);
}
ll solve(int x,int tt)
{ll res=0;memset(cost,0,sizeof cost);//初始化在每个鱼塘上花费的时间为0for(int i=0;i<tt;i++)//遍历每一次钓鱼的点 {int t1=1;for(int j=2;j<=x;j++){if(get_yu(j)>get_yu(t1))//如果从第j个鱼塘能钓到更多的鱼就去第j个鱼塘{t1=j;} }res+=get_yu(t1);cost[t1]++;} return res;
}
int main()
{cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)cin>>b[i];for(int i=2;i<=n;i++){cin>>sp[i];sp[i]+=sp[i-1];//前缀和处理到每个鱼塘所需要花费的时间 }cin>>t;ll res=0;for(int i=1;i<=n;i++){res=max(res,solve(i,t-sp[i]));//路线中包括前i个点,花费t-sp[i]时间去钓鱼 }cout<<res<<endl;return 0;
}
这篇关于AcWing1262.鱼塘钓鱼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!