神奇问题
查看原帖
神奇问题
744853
FChang楼主2024/11/13 15:20

自测AC, 洛谷WA

input

36 968459818 21 51 104 163 301 482 788 1297 2123 3447 5574 9028 14606 23669 38309 61980 100299 162307 262636 424976 687619 1112634 1800259 2912907 4713201 7626142 12339362 19965513 32304910 52270456 84575394 136845869 221421265 358267166 579688458 937955633

output

968459814

#include<bits/stdc++.h>

#define int long long

using namespace std;

const int N = 30 + 5;

int n, C, ans;

int a[N], sum1[N];

void dfs (int x, int sum) {

	if (sum > C) return ;
	
	if (x > n) return void (ans = max (ans, sum));

	if (sum1[x] + sum <= C) return void (ans = max (ans, sum1[x] + sum));
	
	dfs (x + 1, sum + a[x]);
	dfs (x + 1, sum);

	return ;
}

signed main() {
	
	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

	cin >> n >> C;

	for (int i = n; i; -- i) cin >> a[i];
	for (int i = n; i; -- i) sum1[i] = sum1[i + 1] + a[i];

	dfs (1, 0);

	cout << ans << "\n";

	return 0;
}


2024/11/13 15:20
加载中...