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 ...
随机推荐
- 金蝶特性配置(超级BOM)
特性配置 特性物料 物料和特性的对应关系 自动新增物料的系统设置 特性物料自动新增 自动新增的特性配置方案 相关表 ICPlan_CharacteristicEntry
- 暂时刷完leetcode的一点小体会
两年前,在实习生笔试的时候,笔试百度,对试卷上很多问题感到不知所云,毫无悬念的挂了 读研两年,今年代笔百度,发现算法题都见过,或者有思路,但一时之间居然都想不到很好的解法,而且很少手写思路,手写代码, ...
- 今天看到了一篇文档 app 测试内容记录下来
1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先向 ...
- XML的基礎結構
1.xml是什麼? xml,Extensible Markup Language,扩展性标识语言,後綴名為.xml. 2.xml有什麼功能? xml功能是傳輸和儲存數據,用於不同的應用和平台數據共享和 ...
- js函數
函數是什麼?函數就是被事件驅動或者調用執行的可重複的代碼塊. 函數聲明: 使用關鍵詞function,關鍵詞function大小敏感. function a{代碼塊} 局部變量: 在函數內部聲明的變量 ...
- docker --Docker微容器Alpine Linux
Alpine Linux的官网: http://www.alpinelinux.org/ #官方 https://pkgs.alpinelinux.org/packages #官方提供的安装包 ...
- BZOJ3771 Triple(FFT+容斥原理)
思路比较直观.设A(x)=Σxai.先把只选一种的统计进去.然后考虑选两种,这个直接A(x)自己卷起来就好了,要去掉选同一种的情况然后除以2.现在得到了选两种的每种权值的方案数,再把这个卷上A(x). ...
- JavaScript——根据数组中的某个值进行排序
我这里是根据次数进行倒叙,可根据自己情况进行修改 function sortKey(array,key){ return array.sort(function(a,b){ var x = a[key ...
- 使用JQuery进行DOM操作
获得内容 - text().html() 以及 val() 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元 ...
- day25 上山练习 计算圆练习
# 练习一:在终端输出如下信息 # 小明,10岁,男,上山去砍柴 # 小明,10岁,男,开车去东北 # 小明,10岁,男,最爱大保健 # 老李,90岁,男,上山去砍柴 # 老李,90岁,男,开车去东北 ...