找回密码
 中文实名注册
查看: 246|回复: 0

LG2114 pts100

[复制链接]

12

主题

21

帖子

1510

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1510
发表于 2024-1-14 18:35:55 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include<iostream>
using namespace std;
struct f
{
	string op;
	long long t;
}a[100001];
long long n,m,ans,val;
long long calc(int bit,int k)
{
	for(int i=1;i<=n;i++)
	{
		long long x=a[i].t>>bit&1;
		if(a[i].op=="AND") k&=x;
		if(a[i].op=="OR") k|=x;
		if(a[i].op=="XOR") k^=x;
	}
	return k;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i].op>>a[i].t;
	for(int i=30;i>=0;i--)
	{
		long long r0=calc(i,0);
		long long r1=calc(i,1);
		if(val+(1<<i)<=m&&r0<r1) val+=1<<i,ans+=r1<<i;
		else ans+=r0<<i;
	}
	cout<<ans;
	return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

小黑屋|东台市机器人学会 ( 苏ICP备2021035350号-1;苏ICP备2021035350号-2;苏ICP备2021035350号-3 )

GMT+8, 2024-11-1 06:50 , Processed in 0.040332 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表