数据过水
查看原帖
数据过水
691641
Grow_楼主2024/10/11 14:11

暴搜可过。

code:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,h[45],g[45],ans,f[45],s[45];
void dfs(int x,int p){
	if(p>=k){
		ans+=f[x];
		return;
	}
	if(s[x]+p<k)return;
	for(int i = x+1;i<=n;i++){
		if(h[i]>=h[x])dfs(i,p+g[i]);
	}
	return;
}
signed main(){
	cin >> n >> k;
	for(int i = 1;i<=n;i++)cin >> h[i] >> g[i];
	for(int i = n;i>=1;i--)s[i] = s[i+1]+g[i];
	f[n] = 1;
	for(int i = n-1;i>=1;i--){
		f[i] = 1;
		for(int j = i+1;j<=n;j++)if(h[i]<=h[j])f[i]+=f[j];
	}
	for(int i = 1;i<=n;i++)if(s[i]+g[i]>=k)dfs(i,g[i]);
	cout << ans; 
	return 0;
} 

hack 数据:

40 20
1 1
2 1
3 1
4 1
5 1
6 1
7 1
...
40 1

这组数据可以把上面的代码卡满。

2024/10/11 14:11
加载中...