首页 > 其他分享 >CSP-J 逻辑表达式

CSP-J 逻辑表达式

时间:2022-11-15 11:23:13浏览次数:34  
标签:逻辑 int 短路 cnt stack 次数 CSP 表达式

对于a&b这种形式,如果是0&,则b的值不重要,发生依次短路,新的额结构体的短路次数=a的短路次数+1
如果是1&,新的结构体的短路次数=a和b的短路次数之和,把新的结构体压入栈中

#include<bits/stdc++.h>
#define N 1000005
using namespace std;
struct Node{
	int v, y, h;
};
stack<Node> t;
stack<char> q;

int w[N],  k, cnt_y, cnt_h, l, r[N], f[N];
char s[N];

int main(){
	scanf("%s",s+1); l = strlen(s+1);
	s[0] = '('; s[l+1] = ')'; 
	
	w['|'] = 1; w['&'] = 2;
	
	for(int i = 0; i <= l+1; i++){
		if(s[i] == '('){ //如果是'(',就往右边的栈放 
			q.push(s[i]);
		}
		else if(s[i] == '0' || s[i] == '1'){ //如果是数字就往左边的栈放 
			t.push((Node){s[i] - '0', 0, 0});
		}
		else{
			while(!q.empty() && w[s[i]] <= w[q.top()])
			{//如果是符号,且当前优先级小,那就得先算之前的 
				if(s[i] == ')'){ 
					if(q.top() == '('){
						q.pop(); break;
					} 
				} 
				char z = q.top(); q.pop();
				Node a = t.top(); t.pop(); 
				Node b = t.top(); t.pop(); Node c = {0,0,0};
//				cout<<i<<" "<<endl;
				c.y=b.y; c.h=b.h;
				if(z == '&'){
					if(b.v == 0) c.y++;
					else c.y+=a.y,c.h+=a.h;
					c.v = a.v & b.v;
				} 
				else if(z == '|'){
					if(b.v == 1) c.h++;
					else c.h+=a.h,c.y+=a.y;
					c.v = b.v | a.v; 	
				} 
				t.push(c); 
			}
			if(s[i] != ')') q.push(s[i]);
		}
	}
	
//	cout<<t.size()<<endl; 
	printf("%d \n%d %d", t.top().v, t.top().y, t.top().h);
	return 0;
}

标签:逻辑,int,短路,cnt,stack,次数,CSP,表达式
From: https://www.cnblogs.com/caterpillor/p/16891771.html

相关文章

  • P8816 [CSP-J 2022] 上升点列 题解
    题目传送门:luoguP8816[CSP-J2022]上升点列这是一道简单的dp题。定义到达指两点的曼哈顿距离是\(1\)。我们考虑设状态\(f(i,j)\)表示考虑结尾是第\(i\)个点,增......
  • 字体大小自适应宽度功能核心逻辑
    项目中用到,故做了下整理字体大小自适应宽度功能核心逻辑通过文字面积与div面积进行比较,从而对字体大小进行自适应处理如果小于12px,使用css缩放(transform:scale)效果如......
  • 思维分析逻辑 2 DAY
    目录数据分析多元思维模型微观能力中观能力宏观能力电商平台分析整体数据漏斗模型互联网金融分析授信模型了解芝麻信用分结构数据源的数据变量数据处理游戏数据分析常规指......
  • C# 正则表达式Regex专题
    1、ReplaceC#执行一次替换,可以使用这则表达式来实现,正则的Replace有6中重载版本,可以指定替换次数Regex构造函数Regex(stringpattern)Regex(stringpattern,RegexOptio......
  • CSP-S退役记2
    今天三调,不过和我们没有关系,毕竟也不参考。终于可以考一次年级倒第一了。中午403的化奥大佬说我们宿舍被通报没有值日,苗要在考完试后停他们两位的课,他觉得停不了我们的课......
  • CSP-S退役记3
    中午全体去吃火锅,谁知道以后还会不会有呢?这好像是第一次在12:40的铃声之后回到宿舍的吧。下午开会前做核酸,偌大的大厅只有我们信奥,在那里等待的四五名蓝衣医务人员,问虎哥......
  • CSP-S游记
    今天出发去石家庄,大家都很开心,于是在上午考完了学长出的三道IOI题后,大多改完T1就开始颓了。不久后,虎哥通过对讲机说,陶主任让smtwy在1:45其他学生起床后,带两个人去宿舍扫厕......
  • CSP-S初赛退役记
    下午13:55到考场下候场,约十几分钟后进场,之后处理特别像写轮眼的录屏软件,发每个人的考号和密码,进网站。开考第一件事干什么?登录。第二件呢?睡觉!发下来的网址登不上去,一直显......
  • CSP-S退役记0
    自从我第一次有意识以来,眼前是一个昏暗的道路,路上敌军挡道,数量众多,我听到一道声音,“这些对她来说,不过是螳臂当车罢了”,果然,身为那为女主人公,一袭白衣,手持长刀,眼前的敌人也......
  • 函数式编程-Lambda表达式
    函数式编程-Stream流1.概述1.1为什么学?能够看懂公司里的代码大数量下处理集合效率高代码可读性高消灭嵌套地狱##############################################......