NOIP 2008 双栈排序 二分图

LDRA Testbed软件静态分析_常见问题及处理 通过前面的几篇文章,LDRA Testbed软件静态分析的内容基本讲解完了,本篇文章将针对使用Testbed进行软件静态分析的常见问题进行介绍。 到此为止,LDRA Testbed软件静态分析的内容已经全部讲完,如果有问题,欢迎私信提问(不经常登录,回复可能不及时,见谅)。下一篇文章将开始讲解如何使用Testbed进行单元测试。 阅读详情

其实不得不说真的不会做…完全没有联系到二分图…
现在想一想…这道题的特殊性质很巧妙…比较难发现…


对于这个序列不能进行双栈排序当且仅当存在这样的三元组:
i < j < k&&a[k] < a[i] < a[j]…
这就证明ij是一定要压入栈中的,但是又不能压入一个栈中…
所以我们找出所有的满足条件的ij…在ij之间连边…
欸…貌似这是二分图…二分图的两部分是两个栈…二分图内侧不能连边…就是说ij如果有边不能放入同一个栈中…
至于为什么如果不存在这样的三元组就可以的证明我不会…
戳这里QAQ
输出答案的时候就染色标号…标号相同的翻入同一个栈中…


代码如下:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
//by NeighThorn
using namespace std;
const int maxn=1000+5;
int n,a[maxn];
int minnum[maxn],hd[maxn],to[maxn*maxn*2],nxt[maxn*maxn*2];
int st1[maxn],cnt,st2[maxn],co[maxn],tail1,tail2,num;
char stk[maxn*2];
inline void add(int x,int y){
    to[cnt]=y;nxt[cnt]=hd[x];hd[x]=cnt++;
}
inline void dfs(int root){
    for(int i=hd[root];i!=-1;i=nxt[i]){
        if(!co[to[i]])
            co[to[i]]=(co[root]^1),dfs(to[i]);
        else if(co[to[i]]!=(co[root]^1)){
            puts("0");exit(0);
        }
    }
}
signed main(void){
    cnt=tail1=tail2=0;num=1;
    memset(co,0,sizeof(co));
    memset(hd,-1,sizeof(hd));
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);minnum[n-1]=a[n];
    for(int i=n-2;i>=1;i--)
        minnum[i]=min(a[i+1],minnum[i+1]);
    for(int i=1;i<=n-2;i++)
        for(int j=i+1;j<n;j++)  
            if(a[i]<a[j]&&minnum[j]<a[i])
                add(i,j),add(j,i);
    for(int i=1;i<=n;i++)
        if(!co[i])
            co[i]=2,dfs(i);cnt=0;
    for(int i=1;i<=n;i++){
        if(co[i]==2)
            stk[++cnt]='a',st1[++tail1]=i;
        else
            stk[++cnt]='c',st2[++tail2]=i;
        while((tail1>0&&a[st1[tail1]]==num)||(tail2>0&&a[st2[tail2]]==num)){
            if(a[st1[tail1]]==num)
                stk[++cnt]='b',tail1--,num++;
            if(a[st2[tail2]]==num)
                stk[++cnt]='d',tail2--,num++;
        }
    }
    for(int i=1;i<cnt;i++)
        if(stk[i]=='d'&&stk[i+1]=='a')
            swap(stk[i],stk[i+1]);
    for(int i=1;i<cnt;i++)
        cout<<stk[i]<<" ";
    cout<<stk[cnt]<<endl;
    return 0;
}

by >_< NeighThorn

读懂 ABAP CDS 注解的直接、继承与派生 本文系统梳理了ABAP CDS注解的评估逻辑,重点解析直接注解(Direct)、继承注解(Inherited)和派生注解(Derived)的差异及其在CL_DD_DDL_ANNOTATION_SERVICE中的处理方式。通过视图注解@Metadata.ignorePropagatedAnnotations可调控注解传播行为,避免下游语义影响上层视图。文章还提供了基于标准表的完整示例(包含底层视图、消费视图和ABAP报告程序),帮助开发者在实际系统中验证三层注解的叠加效果与阻断机制。关键点包括:派生注解的数据 阅读详情

相关推荐

国家大地2000坐标系投影坐标转高德地图经纬度坐标-【高斯投影坐标】

国家大地2000坐标系投影坐标转换成高德经纬度坐标显示画图。

devil_zhuzhu的博客 1万+

双栈排序

http://icpc.upc.edu.cn/problem.php?cid=1675&amp;pid=3 注:此题有多种解题版本,但网上代码质量参差不齐,有待检验,对于初学者很难分辨正误,容易误入歧途,况且有些方法较为复杂,没有必要学习。因此,本文以一个初学者角度,对双栈排序进行详细解析。在此声明:本文代码已通过sicily评测, 文章内容相关引用已用带有底色方框标记。 1.Introduc...

Amber的博客 1044

电影台词预测类型:NLP小样本多标签分类实战

电影类型预测本质上是短文本语义建模问题,核心在于从高度碎片化、低语义密度的台词(平均仅12.7词)中挖掘隐含的类型学编码规则。其技术难点在于:需应对省略主语、倒装、拟声词等非规范表达;处理Drama与Comedy等类型强共现的多标签耦合;并克服领域迁移障碍——维基文本预训练模型在台词上性能骤降0.11。解决方案聚焦RoBERTa微调、类型感知注意力机制与标签平滑策略,兼顾小样本鲁棒性与业务可解释性,广泛适用于影视元数据标注、智能推荐系统及NLP教学实践。

weixin_33309048的博客 286

双栈排序(洛谷 P1155)

双栈排序 题目链接 这道题可以说是二分图的极致运用了; 两个栈来实现元素的排序,首先要能推出 a[j]>a[i],a[k]<a[i] (i<j<k),这样的a[i]和a[j]是不能放在一个栈里面的,必须放在不同的栈里才能实现排序; 知道了这个,我们就可以找出序列里所有的这几对元素,把它们连起来,看是否是一个二分图,也就是说看它们是否可以分为两个栈;这道题也就写完了; 判...

不知所云的博客 639

SAP子公司财务账套配置实战:从公司代码到记账期间变式的关键步骤

本文详细介绍了为SAP子公司快速配置财务账套的实战步骤。通过复用母公司成熟配置,重点阐述了从创建公司代码、关联控制范围到分配记账期间变式的核心流程,帮助顾问在一两个小时内完成核心骨架搭建,实现高效集团财务管控。

cake8的博客 165

CPU也能跑大模型?手把手教你用vLLM离线部署Qwen2.5-7B-Instruct(附性能优化技巧)

本文详细介绍了如何在CPU服务器上高效部署Qwen2.5-7B-Instruct模型,通过vLLM框架和一系列优化技巧实现离线推理。内容包括环境配置、模型加载优化、性能调优及生产环境部署方案,帮助开发者在资源有限的情况下也能运行大语言模型。

weixin_28691741的博客 489

noip2008 双栈排序题解 二分图染色

双栈排序 推荐题解:https://www.byvoid.com/zhs/blog/noip2008-twostack 结论P: S[i],S[j]两个元素不能进入同一个栈 <=> 存在k,满足i<j<k,使得S[k]<S[i]<S[j]. 把每个元素按照输入序列中的顺序编号,看作一个图中的每个顶点.这时,我们对所有的(i,j)满足i<j...

weixin_30588729的博客 128

【Android Performance】Android CPU调度模式详解:从performance到schedutil的Governor调优指南

本文系统讲解Android/Linux系统中的CPU频率调节策略(Governor),涵盖六大调度模式的底层工作原理:performance(性能优先)、powersave(省电优先)、conservative(保守调频)、ondemand(按需调频)、userspace(手动控制)以及schedutil(调度器驱动)。文中深入拆解每种Governor的调频决策逻辑、上升/下降曲线的差异、适用场景与选型建议,并配以实操命令演示如何查看可用Governor列表、动态切换调度模式以及多Cluster架构下的统一

weixin_44081096的博客 430

noip2008 双栈排序 (二分图染色)

P1605双栈排序 Accepted 标签:图结构 二分图NOIP提高组2008 描述 Tom最近在研究一个有趣的排序问题。如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1不为空,将S1栈顶元素弹出至输出序列

把复杂的事情简单描述 953

Stanford Dogs 犬类识别实战:基于 YOLOv8 的 120 类目标检测与图形界面实现

本项目通过YOLOv8实现了Stanford Dogs数据集的目标检测功能,完整包含了数据准备、模型训练、检测推理、图形界面四大模块。初学者使用YOLOv8n(nano版)加速训练,熟悉流程后可切换到YOLOv8s/m。图像上传与检测可进一步增强,例如显示识别框、标注标签。可以添加模型选择、检测阈值调整等功能,提升实用性。通过网盘分享的文件:基于yolov8的狗类品种识别系统链接: https://pan.baidu.com/s/1UYV4h2WnK1RxWWKoPrS-RA?

FJN110的博客 84

Lumerical 教程目录,说明及个人感悟(共计138篇,持续更新中)

Lumerical---教程说明及个人感悟

u011699626的博客 1万+

[NOIP2008]双栈排序 【二分图 + 模拟】

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

Mychael的无声乐章 370

#systemverilog# 之 event region 和 timeslot 仿真调度(二)例子

由于疫情的关系,一时半会回不了学校了。今天开始,哪怕在家也要克服惰性开始学习了。今天来个的想了很久但都犯懒而没动手的内容,就是关于仿真软件在跑systemverilog的时候,是如果通过将HDL代码分成5个区域来编译,从而实现用软件模拟硬件的运行结果的思想。 首先,是基础概念,systemverilog标准划分了仿真软件的5个跑仿真所要执行的区域,说白了就是规定了软件在跑代码的时候要把代码分成5类,放到5个堆栈里面分别跑,这样才能:明明在软件上是以顺序方式来执行代码的,却能“看似”像在硬件中那样的实现并行

那么菜的博客 1762

双栈排序 2008年NOIP全国联赛提高组(二分图染色)

双栈排序 2008年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述Description Tom最近在研究一个有趣的排序问题。如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。 操作a ...

weixin_30834019的博客 87

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[luogu1155 NOIP2008] 双栈排序 (二分图染色)

[luogu1155 NOIP2008] 双栈排序 (二分图染色) 传送门 Description Input 第一行是一个整数 n 。 第二行有 n 个用空格隔开的正整数,构成一个 1−n 的排列。 Output 共一行,如果输入的排列不是“可双栈排序排列”,输出数字 0 ;否则输出字典序最小的操作序列,每两个操作之间用空格隔开,行尾没有空格。...

Tricksterism 220

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

栈+贪心+二分图染色法,P1155 [NOIP 2008 提高组] 双栈排序

如果 i < j, p[i] < p[j],那么 p[i] 要先比 p[j] 出栈,但如果 存在 k > j 并且 p[k] < p[i],就无法单栈排序了(这是2026年408数据结构大题T2,沟槽的408还在追我)也就是说,我们可以按照从小到大的方式遍历下标i,然后枚举j,如果存在suf[j + 1] < p[i] < p[j],那么我们将i, j 连边,然后跑二分图染色,如果是二分图,那么一定可双栈排序,否则不能。预处理suf[i] 代表 [i..n - 1] 的最小值。

EQUINOX1的博客 221

洛谷 1155 双栈排序 NOIP2008 图论 二分图染色

NOIP2008 二分图染色 心机

Leowner 390

[NOIP2008 提高组] 双栈排序 简要题解

本题解展现了较为简略的思路,若需查阅完整思路,可以查看作者博文https://blog.youkuaiyun.com/hexu2010/article/details/139346448。

hexu2010的博客 836

P1155 [NOIP2008 提高组] 双栈排序(二分图)

P1155 [NOIP2008 提高组] 双栈排序(二分图) 大佬的题解,大概看懂了。 因为i<j,a[i]>a[j]i<j,a[i]>a[j]i<j,a[i]>a[j],所以必须用一个栈暂存a[i]a[i]a[i],不然a[i]a[i]a[i]比a[j]a[j]a[j]先进栈,但是要求a[i]a[i]a[i]比a[j]a[j]a[j]先出栈,所以不能满足。 然后三个的话,首先i<k,a[i]>a[k]i<k,a[i]>a[k]i<k,a[

Harris-H的博客 565

Luogu1155 NOIP2008 双栈排序 【二分图染色】【模拟】

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

Dream_maker的博客 433

LG1155 「NOIP2008」双栈排序 二分图判定

问题描述 LG1155 题解 \(i,j\)如果不能进入一个栈,要满足存在\(k\),使得\(i<j<k\)且\(a_k<a_i<a_j\) 如果\(i,j\)不能进入一个栈,在\(i,j\)之间连边。 判定这个图是不是二分图。 如果是二分图,则可以,否则不行。 这样时间复杂度是\(O(n^3)\),可以卡过去,但是也可以利用\(DP\)优化到\(O(n^2)\...

LIUZHH2088的博客 220

【二分图+栈排序】题解:P1155 [NOIP2008 提高组] 双栈排序_二分图染色_贪心_模拟_C++算法竞赛

本文研究了双栈排序问题,通过二分图染色和贪心策略给出了解决方案。首先分析单栈排序的限制条件,引入后缀最小值优化冲突检测。然后将问题转化为二分图染色问题,确保冲突元素进入不同栈。在模拟过程中,采用贪心策略保证字典序最小的操作序列。算法主要包括预处理、二分图判定、栈模拟三个阶段,时间复杂度为O(n²)。对于无法排序的情况输出0,否则输出字典序最小的操作序列。

YLCHUP的博客 1145

NOIP2008双栈排序[二分图染色|栈|DP]

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

weixin_33795093的博客 194

[栈 二分图染色] NOIP2008 双栈排序

一道远古时期的联赛题,比较经典。 由于联赛快到了,这里就写一写有理有据的思考过程: 首先,这种题目应该手玩几次。我们想让字典序最小,肯定尽量往 S1S1 放。而什么时候需要用第二个栈呢?所以我们考虑当只有一个栈时,什么情况下不能排序。自己试一试之后,发现只有这种情况: 存在 i<j<k, ak<ai<aj,i<j<k,\ a_k<a_i<a_j, 。这种情况下,因为后面有 kk 要先出来,导致

Lynstery's blog 428
上一篇: BZOJ 1127: [POI2008]KUP 最大子矩阵
下一篇: Spring学习——IOC&DI学习笔记
NeighThorn
博客等级 码龄11年 20粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值