wa#3,请大佬帮忙看看
  • 板块P1717 钓鱼
  • 楼主zhouqiyue
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/9/19 20:48
  • 上次更新2023/11/2 19:04:04
查看原帖
wa#3,请大佬帮忙看看
457016
zhouqiyue楼主2023/9/19 20:48
#include<bits/stdc++.h>
using namespace std;
int n,h;
int f[30],s[30],d[30];
int dis[30][1010];
int main()
{
	cin>>n>>h;
	h=h*12;
	for(int i=1;i<=n;i++)
	cin>>f[i];
	for(int i=1;i<=n;i++)
	cin>>d[i];
	for(int i=2;i<=n;i++)
	cin>>s[i];
	for(int i=1;i<=n;i++)
	{
		int x=0;
		if(d[i])
		{
			int y;//循环次数 
			y=f[i]/d[i];
			if(f[i]%d[i]!=0)
			y+=1;
			for(int j=1;j<=y;j++)
    		{
    			x+=f[i]-d[i]*(j-1);
    			for(int z=h;z>=j+s[i];z--)
	        	{
        			dis[i][z]=max(dis[i][z],dis[i-1][z-s[i]-j]+x);
        		}
			}
		}
		else
		for(int j=s[i]+1;j<=h;j++)                            //把d[i]等于零的看作完全背包分开求解 
		dis[i][j]=max(dis[i][j],dis[i-1][j-s[i]-1]+f[i]*j);
	}
	for(int i=1;i<=n;i++)       //求答案 
	for(int j=i+1;j<=n;j++)
	if(dis[i][h]>dis[j][h])
	swap(dis[i][h],dis[j][h]);
	cout<<dis[n][h]<<endl;
}```
2023/9/19 20:48
加载中...