洛谷P1155 双栈排序
这题什么毒瘤......之前看一直没思路,然后心说写个暴搜看能有多少分,然后就A了??!
题意:给你一个n排列,求它们能不能通过双栈来完成排序。如果能输出最小字典序方案。
[update]这里面加了一个错误的剪枝。这是个假算法。
解:首先我们发现有一个策略,就是可以出栈的时候出栈,否则就在两个栈中选栈顶大于它且栈顶尽量小的那个入栈。如果这样还GG就无解。
但是这样不能保证字典序最小。因为入栈栈顶较小的可以保证决策包容性,但是可能你入另一个栈不会引起冲突。
于是想到搜索,T飞。
加上剪枝:如果先入的栈顶较小,那么不用入另一个栈。AC。
然后发现过不了hack数据:
这组数据在最后要先入栈5,再出栈4。
稍微调整一下搜索顺序就行了。AC。
#include <cstdio>
#include <algorithm> const int N = , INF = 0x3f3f3f3f; int a[N], b[N], c[N], d[N], ta, tb, tc, td, p[N << ], tp, n; void DFS(int k) {
/*
printf("k = %d tb = %d tc = %d td = %d \n", k, tb, tc, td);
printf("b: ");
for(int i = 1; i <= tb; i++) {
printf("%d ", b[i]);
}
printf("\nc: ");
for(int i = 1; i <= tc; i++) {
printf("%d ", c[i]);
}
printf("\ned: ");
printf("%d \n", td); */ if(td == n) {
//
for(int i = ; i <= tp; i++) {
putchar(p[i] + 'a' - );
if(i < tp) {
putchar(' ');
}
}
exit();
return;
}
if(a[k] == d[td] + ) {
d[++td] = a[k];
p[++tp] = ;
p[++tp] = ;
DFS(k + );
td--;
tp--;
tp--;
return;
} if(a[k] < b[tb] && k <= n) {
b[++tb] = a[k];
p[++tp] = ;
DFS(k + );
tp--;
tb--;
if(b[tb] < c[tc]) {
return;
}
} if(b[tb] == d[td] + ) {
d[++td] = b[tb];
tb--;
p[++tp] = ;
DFS(k);
tp--;
b[++tb] = d[td];
td--;
return;
} if(a[k] < c[tc] && k <= n) {
c[++tc] = a[k];
p[++tp] = ;
DFS(k + );
tp--;
tc--;
return;
}
if(c[tc] == d[td] + ) {
d[++td] = c[tc];
tc--;
p[++tp] = ;
DFS(k);
tp--;
c[++tc] = d[td];
td--;
return;
} return;
} int main() {
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf("%d", &a[i]);
} b[] = INF;
c[] = INF + ; DFS(); printf("");
return ;
}
/**
10
10 2 8 1 7 9 3 4 5 6 a a c a b b c a a b a b a b a b d d b b */
AC代码
洛谷P1155 双栈排序的更多相关文章
- 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)
洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...
- [NOIP2008] 提高组 洛谷P1155 双栈排序
题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...
- 洛谷——P1155 双栈排序
题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...
- 洛谷P1155 双栈排序(贪心)
题意 题目链接 Sol 首先不难想到一种贪心策略:能弹则弹,优先放A 然后xjb写了写发现只有\(40\),原因是存在需要决策的情况 比如 \(A = {10}\) \(B = {8}\) 现在进来一 ...
- 洛谷P1155 双栈排序——思路题
题目:https://www.luogu.org/problemnew/show/P1155 思路... 看博客:https://www.cnblogs.com/Narh/p/9213825.html ...
- 洛谷 P1155 双栈排序
题面 解题思路 这道题乍一看还以为是个模拟..怒写一发30分(noip提高组t4有模拟吗?). 其实很好hack,如 10 10 2 8 1 7 9 3 4 5 6 按模拟的思路,应该是10入第一个栈 ...
- 洛谷$P1155$ 双栈排序 贪心+二分图匹配
正解:贪心+二分图匹配 解题报告: 传送门$QwQ$ 跪了,,,我本来以为我$NOIp$做得差不多了,,,然后康了一眼发现没做多少啊其实$QAQ$ 然后来康题趴$QwQ$ 首先考虑如果只有一个栈的情况 ...
- P1155 双栈排序(二分图染色)
P1155 双栈排序(二分图染色) 题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一 ...
- P1155 双栈排序
题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作aaa 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果 ...
随机推荐
- Exp7:网络欺诈防范
Exp7:网络欺诈防范 基础问题回答 通常在什么场景下容易受到DNS spoof攻击? 答:同一局域网下,以及各种公共网络. 在日常生活工作中如何防范以上两攻击方法? 答: 使用最新版本的DNS服务器 ...
- Android开发——Android多进程以及使用场景介绍
个层级,具体可以查看Android开发--Android进程保活招式大全中1.1部分的内容,这里就不赘述了. 根据进程中当前活动组件的重要程度,Android 会将进程评定为它可能达到的最高级别.例如 ...
- 预定义的类型“System.Object”未定义或未导入
打开一个以前的程序 ,发现报这个错误.检查了程序,发现程序的引用 System 不见了 ,尝试 引用失败.. 查了有人说重新建立 Sln文件有用.. 一头雾水,随后 尝试操作 ,程序有用了 具体步骤: ...
- Windows下TeX Live + Sublime Text 3 + Sumatra PDF配置
本文写给我的师弟们,如何自己动手配置LaTeX环境(通过LeX Live + Sublime Text 3 + Sumatra PDF). 1.TeX Live 配置 首先从TeX Live 下载IS ...
- [2016北京集训试题15]cot-[分块]
Description Solution 如图,假如我们知道了以任何一个点为顶点的135-180度的前缀和和90-180度的前缀和,我们就可以搞出三角形的面积. 差分.add[i][j]和dev[i] ...
- USART_GetITStatus和USART_GetFlagStatus的区别
USART_GetITStatus()和USART_GetFlagStatus()的区别 都是访问串口的SR状态寄存器,唯一不同是,USART_GetITStatus()会判断中断是否开启,如果没开启 ...
- Dynamics 365 支持使用Web Api 通过名称来检索元数据
关键检索元数据我在之前的一篇博文中稍有提及,当时是为了取实体的picklist字段的属性,但当时的版本只支持通过metadataid检索,而在365中又增加了名称的检索,方便了很多. 本篇依旧用之前博 ...
- R绘图 第八篇:绘制饼图(ggplot2)
geom_bar()函数不仅可以绘制条形图,还能绘制饼图,跟绘制条形图的区别是坐标系不同,绘制饼图使用的坐标系polar,并且设置theta="y": coord_polar(th ...
- ECS centos7 使用外部邮件服务商的465加密端口
ECS centos7 使用外部邮件服务商的465加密端口发送邮件. 1.修改/etc/mail.rc 文件中添加以下的 set smtp="smtps://smtp.163.com:465 ...
- Windows 10无法使用debug的解决方案
在学习汇编语言的时候,XP系统或者更早版本的默认在Dos命令下敲入debug即可进入汇编指令模式下,而在Windows 7及更高版本下,这些功能似乎都被阉割了,所以今天我们讲带大家处理一下如何解决这个 ...