0分TLE了
查看原帖
0分TLE了
672264
doublecrosser楼主2022/1/30 22:24
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int a[100010],zdl[100010],zl[100010];
int maxn;
int szdl=0,szl=0;
void dfs(int dep){
	if(dep>n){
		if(szdl>maxn) maxn=szdl;
	}
	else{
		for(int i=1;i<=2;i++){
			a[dep]=2-i;
			if(szl+zl[dep]*a[dep]<=m){
				szdl=szdl+a[dep]*zdl[dep];
				szl=szl+a[dep]*zl[dep];
				dfs(dep+1);
				szdl=szdl-a[dep]*zdl[dep];
				szl=szl-a[dep]*zl[dep];
			}
		}
	}
}
int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		cin>>zdl[i]>>zl[i];
	}
	dfs(1);
	if(maxn-k<0) {
		cout<<"no"<<endl;
		cout<<maxn;
	}
	else {
		cout<<"yes"<<endl;
		cout<<maxn;
	}
	return 0;
}
2022/1/30 22:24
加载中...