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;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Leetcode][第206题][JAVA][反转一个单链表][递归][迭代]

【问题描述】[简单] 【解答思路】 1. 递归 自底向上 基本条件/终止条件&#xff1a;当前节点或者下一个节点null 递推关系&#xff1a; head.next.next head 在函数内部&#xff0c;改变节点的指向&#xff0c;也就是 head 的下一个节点指向 head 递归函数那句 时间…

3.项目的基本概念

项目的基本概念 项目及其特征

python之各种装饰器的使用

"""    装饰器&#xff0c;带参数的装饰器&#xff0c;类的装饰器    判断是否为可迭代的    from collections import Iterable    print(isinstance([1,2,3],Iterable))    """    # 1、简单的装饰器    def debu…

[剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]

【问题描述】 在一个二维数组中&#xff08;每个一维数组的长度相同&#xff09;&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含…

[CodeForces-1138B] *Circus 解方程|数学

题意&#xff1a;有两场表演&#xff0c;n个艺术家&#xff0c;根据规则找出我们要挑选的人的编号&#xff0c;输出编号。 规则1 保证每个人只能参加一场表演&#xff0c;也就是同一个艺术家不能出现在两场表演中 规则2 两场表演参演的艺术家的数量是相同的 规则3 第一场可以…

概率论与数理统计

记录概率论与数理统计的笔记。课程是中国大学MOOC 浙江大学的《概率论与数理统计》课程。 本系列所有内容来源于&#xff1a;概率论与数理统计的学习内容来源于中国大学MOOC&#xff0c;以及参考书籍《概率论与数理统计》第四版&#xff0c;浙江大学。 必然的、确定性的事件…

[Leetcode][程序员面试金典][面试题08.03][JAVA][魔术索引][递归][优化]

【问题描述】[简单] 【解答思路】 1. 逐个查找 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(1) public int findMagicIndex(int[] nums) {for (int i 0, length nums.length; i < length; i) {if (i nums[i])return i;}return -1;}2. 逐个查找优化 有序升序…

5如何让进行项目管理

项目管理分为五个过程组

python练习题-day25

class Person:  __key123def __init__(self,username,password):self.usernameusernameself.__passwordpassworddef __get_pwd(self):return self.__passworddef login(self):self.__get_pwd() alexPerson("alex","alex3714") print(alex._Person__passw…

第一章 概率论的基本概念

概率论与数理统计的学习内容来源于中国大学MOOC&#xff0c;以及参考书籍《概率论与数理统计》第四版&#xff0c;浙江大学。 随机现象  在一定条件下&#xff0c;有可能出现多种结果&#xff1b;而且在事情发生前不能知道结果。 随机试验  概念&#xff1a;对随机现象的…

【知识导图】数据结构与算法

[基础知识点] 10 个数据结构&#xff1a;数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树&#xff1b; 10 个算法&#xff1a;递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法 [学习技巧] 学习它的“来历”“…

CF 1174 D. Ehab and the Expected XOR Problem 异或技巧

题意就是给我们两个数n,x。让我们构造个数组&#xff0c;数组有三个条件 1.要有尽可能多的元素 2.要其中任何一段数字的异或和不等于0和x 3.元素的范围是[ 1, 2n2^n2n&#xff09; 分析&#xff1a;如果对异或足够敏感的话 应该能想到其中第二个条件的意思&#xff0c;其实…

第三十七期:刷脸支付叫好不叫座,为啥消费者和商家都不愿用先进科技?

移动支付相信大多数人都不陌生&#xff0c;中国移动支付的普及被人称为“新四大发明”&#xff0c;在中国移动支付产品发展如火如荼的今天&#xff0c;刷脸支付成为了新的时尚&#xff0c;然而这个时尚的支付方式却显得叫好不叫座&#xff0c;刷脸支付的问题到底出在哪了? 移动…

Hadoop 配置文件 启动方式

配置文件&#xff1a; 默认的配置文件&#xff1a;相对应的jar 中 core-default.xml hdfs-default.xml yarn-default.xml mapred-default.xml 自定义配置文件$HADOOP_HOME/etc/hadoop/ core.site.xml hdfs-site.xml yarn-site.xml mapredu-site.xml 启动方式&#xff1a; 各个服…

第二章 随机变量

随机变量  目标&#xff1a;将实验结果数量化。实验结构有数字型和非数字型。数字型&#xff1a;降雨量、上车人数等。非数字型&#xff1a;晴天/阴天/下雨、化验结果阴性/阳性等。  定义&#xff1a;随机试验样本空间S&#xff0c;如果XX(e)为定义在S上的实数单值函数&…

[Leetcode][第632题][JAVA][最小区间][堆][滑动窗口]

【问题描述】[困难] 【解答思路】 1. 堆 复杂度 class Solution {public int[] smallestRange(List<List<Integer>> nums) {//区间的左边和右边int rangeLeft 0, rangeRight Integer.MAX_VALUE;//最小范围int minRange rangeRight - rangeLeft;//区间的左边最…

第十期:过去50年间,十大热门语言及发明者大盘点

本文收集了十大热门编程语言背后的程序员和设计者的名字和大家分享。以下是十大热门编程语言及其创建者&#xff0c;排名不分先后。 软件领域有许多编程语言&#xff0c;每年还涌现出越来越的新语言。新发布的语言有Scala、Kotlin、Go和Closure&#xff0c;但历史证明&#xff…

2018-2019-2 20165212《网络攻防技术》Exp5 MSF基础应用

2018-2019-2 20165212《网络攻防技术》Exp5 MSF基础应用 攻击成果 主动攻击的实践 ms17010eternalblue payload windows/x64/meterpreter/reverse_tcp&#xff08;成功&#xff09;payload generic/shellreversetcp&#xff08;成功&#xff09;ms17010psexec&#xff08;成功且…