题干解析
- 看完题,可分析出以下几点:
1 本题是20年CSP-J 最难的题
2 读入是后缀表达式,用栈存储
3 计算过程要用位运算
大体思路
- 首先,读入,用栈存储
- 其次,求出初始(修改前)结果,并判断各数是否能影响到最终结果 。此处有详细解释
- 最后,判断就好了。
附录
-
位运算顺序不影响结果!!!!!
-
a^=1 是取反运算
代码
#include<bits/stdc++.h>
using namespace std;
int son[200001][2],sum,dis[2000001],a[2000001],f[2000001],n,m,q,t,ans;
char s[2000001];
stack<int>b;
inline int read(){
int k=0,k1=1;
char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)){
k=(k<<1)+(k<<3)+(ch^48);
ch=getchar