厌氧代码求助(ranklist)
  • 板块灌水区
  • 楼主大不美列坚
  • 当前回复10
  • 已保存回复10
  • 发布时间2021/4/12 17:08
  • 上次更新2023/11/5 00:37:59
查看原帖
厌氧代码求助(ranklist)
373918
大不美列坚楼主2021/4/12 17:08
#include<bits/stdc++.h>
#define ll long long
#define r register
using namespace std;
inline int read(){
	int x=0;
	char ch=getchar();
	while(!isdigit(ch)){
		ch=getchar();
	}
	while(isdigit(ch)){
		x*=10;
		x+=ch-'0';
		ch=getchar();
	}
	return x;
}
bool vis[15];
ll ans;
int n,m;
int a[15];
int aa[15],kk[15];
inline bool dfs(int pos,int pre,int pres,int prep,int sum){
	if(pos==n+1){
		if(sum==m){
			ans++;
			return true;
		}
		return false;
	}
	for(r int i=1;i<=n;i++){
		if(vis[i])continue;
		vis[i]=1;
		aa[pos]=i;
		for(r int k=max(pres+(i>pre?1:0),a[i]+prep);k<=m;k++){
			int p=k-a[i];
			kk[pos]=p;
			if(dfs(pos+1,i,k,p,sum+p))break;
		}
		vis[i]=0;
	}
}
int main(){
// 	freopen("ranklist.in","r",stdin);
// 	freopen("ranklist.out","w",stdout);
	n=read(),m=read();
	r int mx=0,flag;
	for(r int i=1;i<=n;i++){
		a[i]=read();
		if(a[i]>mx){
			flag=i;
			mx=a[i];
		}
	}
	dfs(1,flag,mx,0,0);
	cout<<ans;
} 
2021/4/12 17:08
加载中...