求救,超时怎么办
  • 板块CF577B Modulo Sum
  • 楼主Forzz
  • 当前回复12
  • 已保存回复12
  • 发布时间2021/2/20 16:03
  • 上次更新2023/11/5 02:59:23
查看原帖
求救,超时怎么办
341045
Forzz楼主2021/2/20 16:03
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=1000010;
ll n,m,number[maxn];
bool if_chose[maxn],f=false;
void dfs(ll p,ll many){
	if(p>many){
		ll sum=0;
		for(ll i=1;i<=n;i++){
			if(if_chose[i]){
				sum+=number[i];
				sum%=m;
			}
		}
		if(sum==0){
			cout<<"YES";
			f=true;
			return;
		}
	}
	if(f)return;
	for(ll i=1;i<=n;i++){
		if(!if_chose[i]){
			if_chose[i]=true;
			dfs(p+1,many);
			if_chose[i]=false;
		}
	}
}
int main(){
	cin>>n>>m;
	memset(if_chose,false,sizeof(if_chose));
	for(ll i=1;i<=n;i++){
		cin>>number[i];
		number[i]%=m;
	}
	for(ll i=1;i<=n;i++){
		dfs(1,i);
		if(f)return 0;
	}
	cout<<"NO";
	return 0;
}
2021/2/20 16:03
加载中...