Serval and Parenthesis Sequence CodeForces - 1153C 贪心
题意:给出一个由"(",")","?"三种字符构成的序列,让我们把其中的问号替换成左右括号,使得整个序列变成一个完整地括号序列,也就是括号匹配正确,而且要求不能提前结束的括号序列,比如(())()...这种的就是提前结束的括号序列,一定要让整个序列的最后一个右括号字符正好匹配上字符串的第一个左括号字符。输出任意一种方案。
分析:首先想到奇数长度的时候必定错误,第一个括号是),或最后一个括号是(都会出现错误。因为匹配必定错误
那么如果括号在中间的任何一个地方发现了与第一个左括号匹配也错误,那么相当于尽可能的先写左括号,能写左括号的地方写左括号,直到左括号的数量足够多了,等于n/2的时候再贪心的写右括号。如果能在解题的时候看透这一点,程序就很好写了。
这样贪心正确的原因是:错误的情况必定是左括号太少以至于匹配不了这么多右括号,所以正确的case必定是前面留有足够的空间放置左括号去匹配后面的右括号。所以只要是问号,且当前确定的左括号数量不到n/2,就直接放左括号就行,直到已经确定的左括号数量到n/2再不断放右括号。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
const int maxn = 3e5+10;
char c[maxn];
void fail(){printf(":(");exit(0);}
int main(){int n;scanf("%d%s",&n,c);if((n%2==1)||c[0]==')'||c[n-1]=='(')fail();int bal=0,ll=0;for(int i=0;i<n;i++)if(c[i]=='(')ll++;for(int i=0;i<n;i++){if(c[i]=='(')bal++;if(c[i]==')')bal--;if(c[i]=='?'){if(ll<n/2)c[i]='(',bal++,ll++;else c[i]=')',bal--;}if(i!=n-1&&bal==0)fail();}if(bal!=0)fail();else printf("%s\n",c);return 0;
}
Serval and Parenthesis Sequence CodeForces - 1153C 贪心相关推荐
- Codeforces 1153 C Serval and Parenthesis Sequence
题意: 给一个字符串 只包含 '(' . ')' .和 ' ?' 要求改变 '?' 为 '(' 或 ')' 使最终的字符串满足:从第一位开始到任意一位(非最后一位)的字符串不出现形如 '( )'的情况 ...
- Serval and Parenthesis Sequence
https://codeforces.com/contest/1153/problem/C 题解:贪心+后缀和 /* *@Author: STZG *@Language: C++ */ #includ ...
- 贪心 ---- Codeforces Global Round 8,B. Codeforces Subsequences[贪心,贪的乘法原理]
题目链接 给出字符串,统计子串(子串字母可以跳跃)是codeforces的数量. 本题要求,给出子串最少数量k,构造字符串s,要求字符串s包含的字母数量最少,输出这个最少的字符串s. 题目要求是至少有 ...
- Minimizing Difference CodeForces - 1244E(贪心题)
题目 题意 官方题解: 百度翻译 思路 ac代码 题意 给出一列数,至多n个操作使其中的数+1或-1,要求得到最小的差值(最大值-最小值): You are given a sequence a1_{ ...
- HDU 3916 Sequence Decomposition 【贪心】
这道题目的题意就是使用题目中所给的Gate 函数,模拟出输入的结果 当然我们分析的时候可以倒着来,就是拿输入去减 每次Gate 函数都会有一个有效范围 这道题目求的就是,找出一种模拟方法,使得最小的有 ...
- CodeForces - 93B(贪心+vectorpairint,double +double 的精度操作
题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...
- 枚举 ---- B. Power Sequence[Codeforces Round #666 (Div. 2)][暴力]
B. Power Sequence 有 n 个数,现在要求将这个数列变成一个等比数列的形式 你可以将这 n 个数随意排列 或者将任意一个数加一或者减一操作,每次此类操作都要花费 1,问最少花费是多少 ...
- Codeforces 985C (贪心)
传送门 题面: C. Liebig's Barrels time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Beautiful Sequence CodeForces - 1264B(暴力)
An integer sequence is called beautiful if the difference between any two consecutive numbers is equ ...
最新文章
- 传统的线性降维方法效果不佳。_高压断路器机械故障诊断与定位的新思路:KPCA-SoftMax诊断方法...
- 软件驱动安装在docker_别为Docker本地实现不支持GPU发愁,解决方案在此!
- C++获取exe文件版本号
- ps怎么撤销参考线_入门板绘怎么练习?怎么提高板绘技巧?(干货)
- myeclipse 实现框架 spring+springmvc+springsecurity+myibatis+mysql用户认证和人员增删改查
- View Horizon Mirage安装手册(三)——Mirage Management安装
- 从事IT行业的应该如何学习最高效的休息方式
- 华为鸿蒙系统支持什么手机_华为鸿蒙系统支持的手机型号_华为鸿蒙系统最新消息...
- 另类网站版式设计欣赏
- C#中.snk文件的作用【转】
- 计算机二级电子表格使用技巧36种,Excel表格中最经典的36个小技巧,全在这儿了...
- 最好的科普著作《追寻记忆的痕迹》——神经与精神的历史和未来
- 大数据和云计算技术周报(第81期)
- HttpClient 设置cookie的问题
- 【程序人生】互联网岗位分工;互联网开发流程;职责分工
- TreeSize Free
- MATLAB中fix啥意思,matlab fix函数用法_常见问题解析,matlab
- c语言中英文翻译 毕业设计,c语言中英文翻译资料 毕业设计论文.doc
- 从根上彻底理解各种变换之二:傅里叶变换
- 免费的可视化Web报表工具,JimuReport v1.5.0-beta版本发布
热门文章
- String 类的重要方法与字段
- 说说我最近比较迷的Criminal Minds
- 北航计算机网络 传输层实验,北航研究生计算机网络实验_实验七 传输层实验
- android红米3调用相机,红米3有什么接口?红米3有HDMI接口吗?
- 多线程创建方式 线程池、Future和CompletableFuture
- springboot整合redis修改分区
- 为什么只推荐入主流版本华强北耳机?
- message:MCODE参数不存在,mobile类型mcode参数必需
- android Calendar使用 年月日时分秒
- python根据文件路径获取上级目录路径