CF508E
贪心题是很有趣的...
首先,本题为括号匹配问题,那么可以考虑进行栈模拟
然后,我们思考一下如何匹配:虽然题目中仅对右括号的位置提出了区域性要求,但可以发现,对能匹配上的栈顶括号立刻进行匹配一定是一种最优解!
为什么?
根据括号匹配原则,如果栈顶括号未被匹配,那么其他括号将无法被匹配,那么栈顶括号越长时间不被匹配,栈内括号失配的可能就越大。相反,如果我们对能匹配的栈顶括号立刻进行匹配,不会存在反例使得本能匹配上的其他括号未能被匹配。
所以这题的剩余部分就变成了一个模拟...
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;
int l[605],r[605];
int n;
int my_stack[605];
int posi[605];
int ttop=0;
int typ[1205];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&l[i],&r[i]);
}
int pos=2;
int cnt=1;
typ[1]=1;
my_stack[++ttop]=1;
posi[ttop]=1;
while(pos<=2*n)
{
int t=my_stack[ttop];
int p=posi[ttop];
if(p+l[t]<=pos&&p+r[t]>=pos)
{
typ[pos]=2;
ttop--;
pos++;
}else
{
my_stack[++ttop]=++cnt;
posi[ttop]=pos;
typ[pos]=1;
pos++;
}
}
if(ttop)
{
printf("IMPOSSIBLE\n");
return 0;
}else
{
for(int i=1;i<=2*n;i++)
{
if(typ[i]==1)
{
printf("(");
}else
{
printf(")");
}
}
printf("\n");
}
return 0;
}
CF508E的更多相关文章
- CF508E Arthur and Brackets
题目大意:给出n对括号,并给出每对括号距离的范围.问能否找到这样一个序列. 题解:好多人都用贪心.这么好的题为什么不搜一发呢? 注意:千万不要在dfs里面更新答案. 代码: #include<c ...
- CF508E (贪心+搜索+构造)
题目大意:让你构造一个括号序列,括号匹配的方式类似于栈,给出从左数每个括号 到和它匹配的右括号的 最小和最大距离,让你输出一个合法括号序列 看错题了以为是二分图,然后写了搜索 贪心发现如果距离往小了填 ...
- 2021record
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...
- 遇到括号就是栈(bushi)
CF508E Arthur and Brackets 我在赛场上想都没想直接DP \(O(n^3)\)过了 但别人说正解是栈+贪心 讲讲DP \(bool\) \(dp[i][j]\)表示从第i对括号 ...
随机推荐
- python 数据分析2
本节概要 Numpy详解 安装 Numpy的安装已经不想多说..在确保pip或pip3的路径被添加到系统环境变量里面之后,就可以直接用下面语句进行安装. pip install numpy or pi ...
- javascript常用函数封装——运动、cookie、ajax、获取行内样式兼容写法、拖拽
运动.cookie.ajax.获取行内样式兼容写法.拖拽封装大合集. //url,data,type,timeout,success,error function ajax(options){ //- ...
- mysql 原理 ~ DDL之mdl锁
一 简介: MDL锁 二 具体 1 MDL锁 1 增删查改 申请MDL读锁 2 ddl语句 1. 拿MDL写锁 2. 降级成MDL读锁 3. 真正做DDL ...
- android图片绘制
1.基本圆角.边框 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=& ...
- APACHE - CXF 入门详解
ref: https://www.cnblogs.com/hoojjack/p/6724659.html
- DevExpress VCL 的 cxDBTreeList 的使用方法
DevExpress VCL 的 cxDBTreeList 的使用方法:(假设控件名为: WBSTree) 1.控件WBSTree 通过绑定 DataSet 获取数据记录(Nodes),通过 Col ...
- Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台
Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud
- NOIP提高组—— 问题求解 与 完善程序
问题求解1: 甲乙丙丁四人在考虑周末要不要外出郊游. 已知①如果周末下雨,并且乙不去,则甲一定不去:②如果乙去,则丁一定去:③如果丙去,则丁一定不去:④如果丁不去,而且甲不去,则丙一定不去.如果周末丙 ...
- bigfile tablespace
背景 这次终于有个linux实际迁移oracle的机会了,之前都是学习实验.想起最早时,都是windows搞oracle,又让我想起多年期一个项目,数据量太大及计算逻辑太复杂,我用存储过程 ...
- JSON.stringify与JSON.parse
JSON.stringify(value [, replacer] [, space]) 用于将 对象 --> JSON 字符串. value:对象.数组.类 replacer: 数组时:v ...