CF508E (贪心+搜索+构造)
题目大意:让你构造一个括号序列,括号匹配的方式类似于栈,给出从左数每个括号 到和它匹配的右括号的 最小和最大距离,让你输出一个合法括号序列
看错题了以为是二分图,然后写了搜索
贪心发现如果距离往小了填,不会影响结果
括号必须套完整的括号,所以距离必须是2的整数倍+1
如果一个括号匹配上了,那么两个括号之间不能有其它的半个括号
如果第一个能匹配的右括号的位置被占上了,那么就把前面的左括号相匹配的右括号往右挪,如果超过了能移动的最大范围,说明不合法
细节比较多
#include <map>
#include <vector>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 2000
#define ll long long
#define dd double
using namespace std;
//re
int gint()
{
int ret=,fh=;char c=getchar();
while(c<''||c>''){if(c=='-')fh=-;c=getchar();}
while(c>=''&&c<=''){ret=ret*+c-'';c=getchar();}
return ret*fh;
}
int n,cte,tp;
int l[N],r[N],pos[N],w[N],mch[N];
int move(int x)
{
int y=mch[x];
if(!y) return ;
if(x+>*n) return ;
if(x+<=pos[y]+r[y])
{
if(!mch[x+]||move(x+)) mch[x+]=mch[x],mch[x]=;
else return ;
}else return ;
return ;
} int main()
{
freopen("a2.in","r",stdin);
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d%d",&l[i],&r[i]);
int k=;cte=;int ma=*n;
for(int i=;i<=n;i++)
{
while(mch[k]) w[k]=,k++;
int st=k+l[i]+(l[i]&?:);
if(st>k+r[i]) {printf("IMPOSSIBLE\n");return ;}
for(int j=k+;j<=st;j++)
if(mch[j]){
int flag=move(j);
if(!flag) {printf("IMPOSSIBLE\n");return ;}
}
int flag=;
for(int j=st;j<=k+r[i]&&j<=*n;j+=)
if(!mch[j]) {mch[j]=i,pos[i]=k,k++;flag=;break;}
if(flag) continue;
flag=move(st);
if(!flag) {printf("IMPOSSIBLE\n");return ;}
mch[st]=i,pos[i]=k,k++;
}
while(mch[k]) w[k]=,k++;
for(int i=;i<=*n;i++)
if(w[i]==) printf(")");
else printf("(");
puts("");
return ;
}
CF508E (贪心+搜索+构造)的更多相关文章
- 【NLP】选择目标序列:贪心搜索和Beam search
构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...
- 集束搜索beam search和贪心搜索greedy search
贪心搜索(greedy search) 贪心搜索最为简单,直接选择每个输出的最大概率,直到出现终结符或最大句子长度. 集束搜索(beam search) 集束搜索可以认为是维特比算法的贪心形式,在维特 ...
- [DeeplearningAI笔记]序列模型3.2有条件的语言模型与贪心搜索的不可行性
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.2选择最可能的句子 Picking the most likely sentence condition lan ...
- 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)
科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...
- CF #296 (Div. 1) B. Clique Problem 贪心(构造)
B. Clique Problem time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- 【HDOJ5527】Too Rich(贪心,构造)
题意:给定10种面额的货币和它们的数量上限,问构造出恰好总额为P的最小张数,无解输出-1 T=2e4,p<=1e9,c[i]<=1e5 思路:From https://blog.csdn. ...
- noip 2010 引水入城 贪心 + 搜索
不难分析出如果有解则每个蓄水厂所能覆盖到的干旱城市一定是连续的.否则,中间那些没被覆盖的部分永远都不能被覆盖到. 当然,每个蓄水厂所覆盖的城市有可能不连续,不过既然有解,则一定都是连续的.我们可以开一 ...
- HDU 5527---Too Rich(贪心+搜索)
题目链接 Problem Description You are a rich person, and you think your wallet is too heavy and full now. ...
- 2018.11.01 bzoj4325: NOIP2015 斗地主(贪心+搜索)
传送门 原来一直以为是一道大模拟. 没想到是一道搜索+最优性剪枝 如何搜最优呢? 我们考虑怎么最快出完. 大概是应该尽量出当前能出出去最多的吧. 于是我们选择优先出顺子. 这样做有什么好处呢? 我们会 ...
随机推荐
- IOS - 零碎
---恢复内容开始--- 1.模拟器目录: ProjectNameApk.documents.library(cache.preference.cookies).temp 2.Edit-Refacto ...
- ios风格的时间选择插件
1.起因 在上个项目中,客户希望时间选择插件可以是ios风格的那种,但是找了很久,发现并没有用vue的ios风格时间插件,于是自己便自己造了一个轮子. 2.插件效果 3.插件依赖以及安装使用 插件依赖 ...
- Code VS 1002 搭桥
题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建 ...
- 3、用js文件写mongo命令+update命令
一.用js写一个模拟用户登录日志表的信息 var userName = "chengxiang"; //声明一个登录名 var timeStamp = Date.parse(new ...
- java使用Thumbnailator处理图片
Thumbnailator是一款不可多得的处理图片的第三方工具包,它写法简单到让人无法相信,Java本身也有处理图片压缩的方法,但是代码冗长到让人痛不欲生,在篇末会给出Java本身的实现方式,做下对比 ...
- 工具-VS插件Resharper快捷键
编辑Ctrl + Space 代码完成 Ctrl + Shift + Space代码完成Ctrl + Alt + Space代码完成Ctrl + P 显示参数信息Alt + Insert 生成构造函数 ...
- BA--空调静压箱的作用
空调静压箱的主要作用有两个,一个是降低噪音:一个是提高送风距离.工作原理如下:空调出风从空调风机里面出来的时候,具有很大的风速,同时由于空调风机自身的结构原因,空调的出风并不均衡,空气在风管中相互摩擦 ...
- 在SAE上使用Ueditor的图片上传功能
SAE上是没有文件夹读写权限的,所以要在SAE使用Ueditor的图片上传功能须要借助SAE的Storage服务. 一.开通Storage服务 在SAE控制台开通Storage服务,并新增一个doma ...
- unity3d Pathfinding插件使用
Overview The central script of the A* Pathfinding Project is the script 'astarpath.cs', it acts as a ...
- hdoj--1248--寒冰王座(完全背包)
寒冰王座 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...