今天想做做图论,于是点开了这道题。。。。(是二分图染色然而我没看出来)

四种操作及条件:

  1. s1.push() 需满足 待push的元素小于栈顶 && {

    若在原序列中,待push元素的后面存在一个比 待push元素大 且比 s2.top() 大的元素,记为a ,那么显然在a被push以前,待push元素和s2.top(),一定会被pop()掉

    那么如果此时在a后,有一个比 待push元素 小的数,那么一定不能把这个待push的元素 push到 s1 中

  } 则ans[++cnt]='a'

  2.s1.pop() 需满足 s1.top()=应该pop()的元素 则ans[++cnt]='b'

  3.s2.push() 需满足 待push的元素小于栈顶 则ans[++cnt]='c'

  4.s2.pop() 需满足 s2.top()=应该pop()的元素 则ans[++cnt]='d'

否则,无解。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#define R register int
#define getchar() *S++
#define pc(x) putchar(x)
using namespace std;
char RR[],*S=RR;
const int M=;
inline int g() {
R ret=; register char ch; while(!isdigit(ch=getchar())) ;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret;
}
int n,cnt,crt=,pos=;
int s1[M],tp1,s2[M],tp2,a[M];
char ans[M<<];
bool flg;
inline bool ck(int pos) {
if(!tp2) return true; R i;
for(i=pos+;i<=n;++i) if(a[i]>a[pos]&&a[i]>s2[tp2]) break;
for(R j=i+;j<=n;++j) if(a[j]<a[pos]) return false; return true;
}
signed main() {
//freopen("in.in","r",stdin);
fread(RR,sizeof(RR),,stdin);
n=g(); s2[]=s1[]=M<<; //cout<<n<<endl;
for(R i=;i<=n;++i) a[i]=g();//,cout<<a[i]<<endl;
for(R i=;i<=(n<<);++i) {
if(pos<=n&&a[pos]<s1[tp1]&&ck(pos)) {
s1[++tp1]=a[pos]; ans[i]='a',++pos;
} else if(s1[tp1]==crt) {
++crt,--tp1; ans[i]='b';
} else if(pos<=n&&a[pos]<s2[tp2]) {
s2[++tp2]=a[pos]; ans[i]='c',++pos;
} else if(s2[tp2]==crt) {
++crt,--tp2; ans[i]='d';
} else {flg=true; break;}
} if(flg) pc(''); else for(R i=;i<=(n<<);++i) pc(ans[i]),pc(' '); pc('\n');
}

Luogu P1155 双栈排序 图论?模拟吧。。的更多相关文章

  1. 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)

    洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...

  2. P1155 双栈排序(二分图染色)

    P1155 双栈排序(二分图染色) 题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一 ...

  3. [NOIP2008] 提高组 洛谷P1155 双栈排序

    题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...

  4. P1155 双栈排序

    题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作aaa 如果输入序列不为空,将第一个元素压入栈S1​ 操作b 如果 ...

  5. 洛谷——P1155 双栈排序

    题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...

  6. LOJ P1155 双栈排序 二分图染色 图论

    https://www.luogu.org/problem/show?pid=P1155 题解: https://www.byvoid.com/zhs/blog/noip2008-twostack 开 ...

  7. 洛谷P1155 双栈排序

    这题什么毒瘤......之前看一直没思路,然后心说写个暴搜看能有多少分,然后就A了??! 题意:给你一个n排列,求它们能不能通过双栈来完成排序.如果能输出最小字典序方案. [update]这里面加了一 ...

  8. 【Luogu】P1155双栈排序(二分图)

    题目链接在此 此题一开始写了个深搜,过了30%的数据,也就是n<=10的那一段.... 然后看了题解发现这是个二分图的判断. 我们先举例子找到不能放进一个栈里的规律.设有数列[2,3,1,4] ...

  9. 洛谷P1155 双栈排序——思路题

    题目:https://www.luogu.org/problemnew/show/P1155 思路... 看博客:https://www.cnblogs.com/Narh/p/9213825.html ...

随机推荐

  1. zabbix simple check

    摘自: http://www.ttlsa.com/zabbix/zabbix-simple-checks/ 1. 开始 Simple checks通常用来检查远程未安装代理或者客户端的服务 使用sim ...

  2. CSS3实现自定义Checkbox动画

    CSS3实现自定义Checkbox动画是一款CSS3自定义checkbox,而且这款checkbox还带有动画效果,当你选中checkbox的时候,会以动画的方式打上一个大大的勾. 源码下载:http ...

  3. linux应用之yum命令

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

  4. jupyter-notebook重设项目工作路径

    一. . Anaconda Prompt 命令(方法没生效) 1 选择一个用于存放config文件的文件夹(先创建) 2 在cmd中进入该文件夹的路径 3在cmd中 输入​命令 jupyter not ...

  5. VijosP1100:加分二叉树

    描述 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一 ...

  6. AI-Info-Micron-Insight:高速数据:第四次工业革命的助推引擎

    ylbtech-AI-Info-Micron-Insight:高速数据:第四次工业革命的助推引擎 1.返回顶部 1. 高速数据:第四次工业革命的助推引擎 第四次工业革命已然来临,因为数字技术几乎连接了 ...

  7. ACM之Java技巧

    一.Java之ACM注意点 关于四舍五入 小数保留几位:  DecimalFormat df = new DecimalFormat("0.00"); String num = d ...

  8. JVM中的Hello World运行机制:

    栗子: package zagoo; public class HelloWorld { public static String HELLOWORLD="Hello World" ...

  9. AngularJs(Part 4)--Modules depending on other Modules

    Angular does an excellent job of managing object dependencies. it can even take care of module depen ...

  10. 2-3 Flutter开发环境与iOS开发环境设置(Mac)

    Mac下环境搭建 先不看了 都是Mac下的环境搭建