#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]去括号的更多相关文章

  1. 51Nod 1684 子集价值 (平方和去括号技巧)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1684 题意: 新建一个位运算,求所有子集通过这个位运算后的答案的平方和是 ...

  2. POJ1690 简单运算去括号

    题目大意: 给定一串只含加减和括号的运算,去掉没用的括号和空白字符输出 这里其实只要去找当前括号前面那个运算符是不是减号,如果是减号且这个括号内出现过运算符说明这个括号应该存在 #include &l ...

  3. bat文件去括号

    @Echo Off&SetLocal ENABLEDELAYEDEXPANSION FOR %%a in (*) do ( set "name=%%a" set " ...

  4. 【jsoi】第一季 [略]精简题解

    UPD:好像有两道题的代码逃跑了?= =就先不找了,反正都是水题. 精简题解系列第四弹.(其实也不是那么精简啊= =) [JSOI2008]最大数maxnumber 单点修改,区间最大值查询,裸线段树 ...

  5. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  6. Java实现带括号优先级的计算器

    这个计算器不仅能够进行四则运算,还支持添加括号进行优先级计算,例如下面算式: 10+(2*16-20/5)+7*2=52 Java源代码: import java.awt.BorderLayout; ...

  7. 带括号的四则混合运算的算符优先算法-----java实现

    1:主方法 package com.baidu; import java.text.NumberFormat;import java.util.ArrayList;import java.util.S ...

  8. 使用python开发一个能够计算带括号的复杂表达式的计算器(只支持加减乘除)

    使用到了模块re,正则,字典等 # 实现简单的加减乘除括号等运算 # Calculator def calculator(expression): print(expression) import r ...

  9. python 简易计算器(只能计算加减乘除和括号)

    import re # 格式化字符串函数(消除一些错误的格式) def format_string(string): # 一系列的替换语句 string = string.replace(" ...

随机推荐

  1. flume介绍及应用

    版权声明:本文为yunshuxueyuan原创文章.如需转载请标明出处: http://www.cnblogs.com/sxt-zkys/QQ技术交流群:299142667 flume的概念 1.   ...

  2. Tao Tao要吃鸡(01背包)

    题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了,和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包之后可以多携带h(h为0代表没有装备背包)重量的东 ...

  3. 选课(codevs 1378)

    题目描述 Description 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修 ...

  4. [NOIP2002] 提高组 洛谷P1033 自由落体

    题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公式为 d=1/2*g* ...

  5. [NOIP2000] 提高组 洛谷P1022 计算器的改良

    题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了一个刚进入的新手ZL先生. ...

  6. ibatis中的xml配置文件

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-/ ...

  7. php之memcache学习

    php之memcache学习 简介: memcache是一个分布式高速缓存系统. 分布式是说可以部署在多台服务器上,实现集群效果: 高速是因为数据都是维护在内存中的: 特点和使用场景: 1.非持久化存 ...

  8. C/C++ (一)

    c语言中的逻辑运算符都是短路运算,一旦能够确定整个表达式的值就不再计算,配合c的定义的灵活性,可以写出很多漂亮的程序. 例如 如果要在一个长为n的数列s中找到第k个没被标记过的数 for(i=1,j= ...

  9. 洛谷——P2865 [USACO06NOV]路障Roadblocks

    P2865 [USACO06NOV]路障Roadblocks 题目描述 Bessie has moved to a small farm and sometimes enjoys returning ...

  10. 洛谷—— P1536 村村通

    P1536 村村通 题目描述 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府“村村通工程”的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连, ...