社区讨论

60pts,求调

P2114[NOI2014] 起床困难综合症参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m3wzo07q
此快照首次捕获于
2024/11/25 20:13
去年
此快照最后确认于
2025/11/04 13:56
4 个月前
查看原帖
代码
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
string a[100010];
int b[100010];
bool check(int now,int x){
	for(int i=1;i<=n;i++){
		if(a[i]=="AND")
			now&=b[i];
		else if(a[i]=="OR")
			now|=b[i];
		else
			now^=b[i];
	}
	return (now>>x)&1;
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		cin>>a[i]>>b[i];
	int now=0,ans=0;
	for(int i=32;i>=0;i--){
		if(now+(1<<i)>m)
			continue;
		if(check(0,i))
			ans+=1<<i;
		else if(check(1<<i,i))
			ans+=1<<i,now+=1<<i;
	}
	cout<<ans<<endl;
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...