【bzoj1561】[JSOI2009]去括号
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define maxn 100001 using namespace std; char s[maxn];
bool w[maxn];
int S[maxn],n,top,tt,T; bool pd(int l,int r)
{
for (int i=l;i<=r;i++)
{
if (s[i]=='(' && !w[i])
tt++;
if (s[i]==')' && !w[i])
tt--;
if (!tt && (s[i]=='+' || s[i]=='-'))
return 0;
}
return 1;
} int main()
{
scanf("%d",&T);
while (T--)
{
memset(s,0,sizeof(s));
memset(w,0,sizeof(w));
memset(S,0,sizeof(S));
scanf("%s",s+1);
n=strlen(s+1);
for (int i=1,nn;i<=n;i++)
{
if (s[i]=='(')
S[++top]=i;
else if (s[i]==')')
{
nn=S[top--];
if (s[nn-1]=='/'||s[nn-1]=='*'||s[i+1]=='*'||s[i+1]=='/')
{
if (pd(nn+1,i-1))
{
w[nn]=w[i]=1;
if (s[nn-1]=='/')
{
for (int j=nn+1;j<i;j++)
{
if (s[j]=='(' && !w[j])
tt++;
if (s[j]==')' && !w[j])
tt--;
if (!tt)
{
if (s[j]=='*')
s[j]='/';
else if (s[j]=='/')
s[j]='*';
}
}
}
}
}
else
{
w[nn]=w[i]=1;
if (s[nn-1]=='-')
for (int j=nn+1;j<i;j++)
{
if (s[j]=='(' && !w[j])
tt++;
if (s[j]==')' && !w[j])
tt--;
if (!tt)
{
if (s[j]=='+')
s[j]='-';
else if (s[j]=='-')
s[j]='+';
}
}
}
}
}
for (int i=1;i<=n;i++)
if (!w[i])
printf("%c",s[i]);
printf("\n");
}
return 0;
}
【bzoj1561】[JSOI2009]去括号的更多相关文章
- 51Nod 1684 子集价值 (平方和去括号技巧)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1684 题意: 新建一个位运算,求所有子集通过这个位运算后的答案的平方和是 ...
- POJ1690 简单运算去括号
题目大意: 给定一串只含加减和括号的运算,去掉没用的括号和空白字符输出 这里其实只要去找当前括号前面那个运算符是不是减号,如果是减号且这个括号内出现过运算符说明这个括号应该存在 #include &l ...
- bat文件去括号
@Echo Off&SetLocal ENABLEDELAYEDEXPANSION FOR %%a in (*) do ( set "name=%%a" set " ...
- 【jsoi】第一季 [略]精简题解
UPD:好像有两道题的代码逃跑了?= =就先不找了,反正都是水题. 精简题解系列第四弹.(其实也不是那么精简啊= =) [JSOI2008]最大数maxnumber 单点修改,区间最大值查询,裸线段树 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- Java实现带括号优先级的计算器
这个计算器不仅能够进行四则运算,还支持添加括号进行优先级计算,例如下面算式: 10+(2*16-20/5)+7*2=52 Java源代码: import java.awt.BorderLayout; ...
- 带括号的四则混合运算的算符优先算法-----java实现
1:主方法 package com.baidu; import java.text.NumberFormat;import java.util.ArrayList;import java.util.S ...
- 使用python开发一个能够计算带括号的复杂表达式的计算器(只支持加减乘除)
使用到了模块re,正则,字典等 # 实现简单的加减乘除括号等运算 # Calculator def calculator(expression): print(expression) import r ...
- python 简易计算器(只能计算加减乘除和括号)
import re # 格式化字符串函数(消除一些错误的格式) def format_string(string): # 一系列的替换语句 string = string.replace(" ...
随机推荐
- Android获取屏幕大小(Px)
private DisplayMetrics dm = new DisplayMetrics(); TextView tv; Button bu; @Override protected void o ...
- solr中的schema.xml(managed-schema)文件解读
solr 7.2.1版本managed-schema文件示例 <uniqueKey>id</uniqueKey> 唯一键字段,solr对每一个文档都赋予一个唯一标识符字段,避免 ...
- LeetCode(169)Majority Element
题目 Given an array of size n, find the majority element. The majority element is the element that app ...
- Spring拓展接口之BeanPostProcessor,我们来看看它的底层实现
前言 开心一刻 小明:“妈,我被公司开除了”,妈:“啊,为什么呀?”, 小明:“我骂董事长是笨蛋,公司召开高层会议还要起诉我”,妈:“告你诽谤是吧?”,小明:“不是,他们说要告我泄露公司机密” Bea ...
- JustinMind
看到公司老板新请来的兼职产品经理,在讲项目功能设计图是,用的是justinmind这个工具,觉得很好奇,默默记下,或许以后能用到.下面是搜的简单的介绍,只是为了记住这个工具名字,现并没有想要深入探究这 ...
- Leetcode 309.最佳买卖股票时机含冷冻期
最佳买卖股票时机含冷冻期 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格. 设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不 ...
- HDU-2509-Be the Winner,博弈题~~水过~~
Be the Winner Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ht ...
- vscode 打开新文件覆盖窗口,始终显示一个窗口
一直在使用vscode 编辑器,里面的扩展用的比较舒服,但是最近遇到一个小问题,一直也没有找好的解决办法,今天无意中把问题给解决了.具体如下 之前使用编辑器,可以同时打开多个文件,而且是多窗口展示的, ...
- BZOJ 2308 莫队入门经典
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2038 参考博客 https://www.cnblogs.com/Paul-Guderi ...
- Java面试题总结之JDBC 和Hibernate
1.100 用户同时来访数据库,要采取什么技术? 答:采用数据库连接池. 2.什么是ORM? 答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决面向对象与 ...