求剪枝思路
  • 板块P1657 选书
  • 楼主wangyinghao
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/4/30 21:05
  • 上次更新2023/10/23 17:06:02
查看原帖
求剪枝思路
453759
wangyinghao楼主2023/4/30 21:05

rt,用的状态压缩加set,第三个测试点TLE了,吸氧能过,但是还是希望能不开O2过去

#include<iostream>
#include<set>
using namespace std;
int a[25],b[25];
set<int> s;

int main(){
	int n,x,cnt=0;
	cin>>n;
	x=(1<<n);
	for(int i=0;i<n;i++){
		cin>>a[i]>>b[i];
	}
	for(int i=0;i<x;i++){
		bool flag=0;
		for(int j=0;j<n;j++){
			if((i&(1<<j))>0){
				s.insert(j+1);
			}
		}
		for(int j=0;j<n;j++){
			int cur1=s.count(a[j]);
			int cur2=s.count(b[j]);
			if((cur1==0 && cur2==0) || (cur1==1 && cur2==1)){
				flag=1;
				break;
			} 
		}
		if(flag==0) cnt++;
		s.clear();
	}
	cout<<cnt;
	return 0;
}
2023/4/30 21:05
加载中...