csp-j t2 25ptsTLE求记搜思路
  • 板块灌水区
  • 楼主CompileEasily
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/10/21 22:57
  • 上次更新2023/11/2 12:04:31
查看原帖
csp-j t2 25ptsTLE求记搜思路
1031575
CompileEasily楼主2023/10/21 22:57

悬一关

code

#include<bits/stdc++.h>
using namespace std;
int n,d,need;
int cnt = 1008600;
int v[100005];
int a[100005];
void dfs(int oil,int cost,int step)
{
	if(cost >= cnt) return; 
	if(oil >= need)
	{
		cnt = min(cnt,cost);
		return;
	}
	if(oil * d < step) return;
	int cntt = 0;
	int k = 1;
	for(int i = 1;i <=n;i++)
	{
		if(step > cntt) k++,cntt+=v[i];
	}
	for(int i = 0;i <= need - oil;i++)
	{
		dfs(oil + i,cost + a[k] * i,step + v[k]);
	}
	return;
}
int main()
{
	cin >> n >> d;
	for(int i = 1;i <= n - 1;i++) scanf("%d",&v[i]),need += v[i];
	for(int i = 1;i <= n;i++) scanf("%d",&a[i]);
	if(need % d == 0) need /= d;
	else need = need / d + 1;
	dfs(0,0,0);
	cout << cnt;
	return 0;
}
/*
5 4
10 10 10 10
9 8 9 6 5
*/
2023/10/21 22:57
加载中...