UVALive - 7637 E - Balanced String(构造)
题意:给出一个打乱顺序的序列,问是否能构造出一个括号匹配的字符串。每个数字为此前读取到的左括号数减去右括号数。
分析:有左括号开始构造,不够的话就找右括号。注意特殊情况待处理。详情看代码
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdlib>
#include<climits>
#include<ctype.h>
#include<set>
#include<map>
#define pi acos(-1.0)
#define mem(a) memset(a,0,sizeof(a))
#define mems(a,b) memset((a),(b),sizeof(a))
#define ll long long
#define ull unsigned long long
//#define LOCAL
#define ls root<<1
#define rs root<<1|1
#define Ls root<<1,l,mid
#define Rs root<<1|1,mid+1,r
using namespace std;
const int maxn=1e5+;
const int inf=0x3f3f3f3f;
const int mod=1e9+;
map<int,int>mp;
int a[maxn];
int main()
{
int t;
scanf("%d",&t);
int kase=;
while(t--){
int n;
scanf("%d",&n);
mp.clear();
for(int i=;i<n;i++) scanf("%d",&a[i]),mp[a[i]]++;
printf("Case %d: ",++kase);
if((n&)&&!mp.count()){
puts("invalid");
continue;
}
mp[]--;
int pos=,flag=;
for(int i=;i<n&&!flag;i++){
if(mp[pos+]&&mp.count(pos+)){
pos++;
mp[pos]--;
}else if(mp[pos-]&&mp.count(pos-)){
pos--;
mp[pos]--;
}
else flag=;
}
if(flag&&pos){
puts("invalid");
continue;
}
mp.clear();
for(int i=;i<n;i++) mp[a[i]]++;
printf("(");
pos=;
for(int i=;i<n;i++){
if(mp[pos+]&&mp.count(pos+)){
printf("(");
pos++;
mp[pos]--;
}else if(mp[pos-]&&mp.count(pos-)){
pos--;
mp[pos]--;
printf(")");
}
}
puts("");
}
return ;
}
UVALive - 7637 E - Balanced String(构造)的更多相关文章
- UVaLive 7637 Balanced String (构造)
题意:给定一个括号的序列,原先的序列是碰到左括号加1,碰到右括号减1,然后把序列打乱,让你找出字典序最小的一个答案. 析:直接从第一个括号判断就好了,优先判断左括号,如果不行就加右括号. 代码如下: ...
- uva live 7637 Balanced String (贪心)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- codeforces 709D D. Recover the String(构造)
题目链接: D. Recover the String time limit per test 1 second memory limit per test 256 megabytes input s ...
- java的String构造对象的几种方法以及内存运行过程
String类创建对象的方法可以分为以下三种 1.String a = "123"; 2.String b = new String("123"); 3.Str ...
- AIM Tech Round 3 (Div. 1) B. Recover the String 构造
B. Recover the String 题目连接: http://www.codeforces.com/contest/708/problem/B Description For each str ...
- UVaLive 6588 && Gym 100299I (贪心+构造)
题意:给定一个序列,让你经过不超过9的6次方次操作,变成一个有序的,操作只有在一个连续区间,交换前一半和后一半. 析:这是一个构造题,我们可以对第 i 个位置找 i 在哪,假设 i 在pos 位置, ...
- LeetCode 1234. Replace the Substring for Balanced String
原题链接在这里:https://leetcode.com/problems/replace-the-substring-for-balanced-string/ 题目: You are given a ...
- AtCoder Grand Contest 032 B - Balanced Neighbors——构造
题意 B - Balanced Neighbors 给定一个整数 $N$($3\leq N \leq 100$),构造一个顶点编号为 $1...N$ 的无向图,需满足如下两个条件: 简单图且连通 存在 ...
- 【leetcode】1234. Replace the Substring for Balanced String
题目如下: You are given a string containing only 4 kinds of characters 'Q', 'W', 'E' and 'R'. A string i ...
随机推荐
- Docker(十六)-Docker的daemon.json的作用
docker安装后默认没有daemon.json这个配置文件,需要进行手动创建.配置文件的默认路径:/etc/docker/daemon.json 一般情况,配置文件 daemon.json中配置的项 ...
- CentOS 关闭烦人的屏保
1. VNC连接到服务器 2.打开 system tools - settings 在power处 将 Power Saving 设置改一下
- 转《canvas实现滤镜效果》
<code class="language-html"><html> <head> <style type="text/css& ...
- loadrunner基础学习笔记四
在loadrunner中,通过将一系列操作标记为事务,可以将它们指定为要评测的操作. loadrunner收集关于事务执行时间长度的信息,并将结果显示在用不同单色标识的图和报告中. 可以这些信息了解应 ...
- Python面向对象静态方法,类方法,属性方法
Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...
- docker --swarm创建一个集群
如果搭建错误可以强制脱离集群网络: docker swarm leave --force 初始化集群网络管理节点: docker swarm init --advertise-addr 10.101. ...
- BZOJ2141排队——树状数组套权值线段树(带修改的主席树)
题目描述 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家 乐和和.红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们的身高有所区别 ...
- 【阿里云】云服务器 ECS部署网站
我是广告!!! https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=hgk32vx5 领券更优惠,老板看着来~ 1.服务器 ...
- Dominator Tree & Lengauer-Tarjan Algorithm
问题描述 给出一张有向图,可能存在环,对于所有的i,求出从1号点到i点的所有路径上的必经点集合. 什么是支配树 两个简单的小性质—— 1.如果i是j的必经点,而j又是k的必经点,则i也是k的必经点. ...
- Java_io体系之RandomAccessFile简介、走进源码及示例——20
Java_io体系之RandomAccessFile简介.走进源码及示例——20 RandomAccessFile 1. 类功能简介: 文件随机访问流.关心几个特点: 1.他实现的接口不再 ...