十分求调
查看原帖
十分求调
976405
linklin楼主2024/5/24 22:45
#include<bits/stdc++.h>
using namespace std;
int n,m;
int ans;
pair<string,int> a[100005];
int calc(int bit,int num){
	for(int i=1;i<=n;i++){
		int x=a[i].second>>bit&1;
		if(a[i].first=="OR"){
			num|=x;
		}
		if(a[i].first=="XOR"){
			num^=x;
		}
		else{
			num&=x;
		}
	}
	return num;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i].first>>a[i].second;
	}
	int sum=0;
	for(int i=29;i>=0;i--){
		if(1<<i<=m){
			int ans1=calc(i,0);
			int ans2=calc(i,1);
			if(ans2>ans1){
				sum+=(1<<i);
				ans+=ans2<<i;
			}
			else{
				ans+=ans1<<i;
			} 
		}
	}
	cout<<ans;
	return 0;
}
2024/5/24 22:45
加载中...