社区讨论
蒟蒻WA on #6求调
P2114[NOI2014] 起床困难综合症参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo10r0fe
- 此快照首次捕获于
- 2023/10/22 13:19 2 年前
- 此快照最后确认于
- 2023/11/02 12:48 2 年前
rt,感谢神犇!!!
CPPAns:131071
Output:131070
CPP#include <bits/stdc++.h>
#define in inline
#define rint register int
#define r(a) runtimerror(a)
#define w(a) wronganswer(a)
#define wl(a) wronganswer(a),putchar('\n')
#define ws(a) wronganswer(a),putchar(' ')
using namespace std;
typedef long long ll;
int n,m,x,len;
string opt[100010];
bitset <30> t[100010],num,ans;
template <typename t> in void runtimerror(t &a){
bool flag=false;char ch=getchar();a=0;
for(;!isdigit(ch);ch=getchar()) if(ch=='-') flag=true;
for(;isdigit(ch);ch=getchar()) a=(a<<3)+(a<<1)+(ch^48);
a=flag?~a+1:a;
}
template <typename t> void compilerror(t a){
if(a>9) compilerror(a/10);
putchar(a%10^48);
}
template <typename t> in void wronganswer(t a){
if(a<0) a=-a,putchar('-');
compilerror(a);
}
in int trans(){
for(rint i=1;i<=n;i++){
if(opt[i]=="AND") ans&=t[i];
else if(opt[i]=="OR") ans|=t[i];
else ans^=t[i];
}
return ans.to_ulong();
}
int dp(int pos,bool lim){
if(!pos) return trans();
if(lim&&num[pos]==0) return dp(pos-1,lim);
int want=1;
for(rint i=n;i;i--){
if(opt[i]=="AND"&&!t[i][pos]){want=0;break;}
else if(opt[i]=="OR"&&t[i][pos]){want=0;break;}
else if(opt[i]=="XOR"&&t[i][pos]) want^=1;
}
ans[pos]=want;
return dp(pos-1,lim&&want==num[pos]);
}
int main(){
r(n),r(m);
num=m;
for(rint i=1;i<=n;i++){
cin>>opt[i],r(x);
t[i]=x;
}
w(dp(30,true));
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...