求字典序方法:

f[i]表示i位数字的最长上升子序列长度,len为最长上升子序列长度,ans[t]为第t位答案,maxn为ans[t+1](初始化为最大值)
倒序查找f[i]==t&&a[i]<maxn的a[i],每找到一个则存入答案,t--;
 g[i]表示排名i的最小的数
原理:显然a[i]前不可能有一个a[j]<a[i]&&f[j]>=f[i]的a[j],所以倒序可行
 
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int bn=;
int n,len;
long long a[bn]={},f[bn]={},g[bn]={},ans[bn]={};
inline int search(int x){
int left=,right=len,mid;
while(left+<right){
mid=(left+right)/;
if(a[g[mid]]<x){
left=mid;
}
else{
right=mid;
}
}
if(a[g[right]]<x){
left=right;
}
return left;
}
int main(){
//freopen("wtf.in","r",stdin);
int i=;
while(cin>>a[i]){
i++;
}
n=i-;
a[]=-9999999999LL;
f[]=;
g[]=;
len=;
for(int i=;i<=n;i++){
if(a[i]>a[g[len]]){
len++;
g[len]=i;
f[i]=len;
}
else{
int t=search(a[i]);
f[i]=t+;
if(a[g[t+]]>a[i]){
g[t+]=i;
}
}
}
int t=len;
long long maxn=9999999999LL;
for(int i=n;i>=;i--){
if(!t){
break;
}
if(f[i]==t&&a[i]<maxn){
maxn=a[i];
ans[t]=a[i];
t--;
}
}
for(int i=;i<=len;i++){
printf("%d ",ans[i]);
}
cout<<endl;
return ;
}

JZYZOJ1261 字典序最小的lis的更多相关文章

  1. 3532: [Sdoi2014]Lis 最小字典序最小割

    3532: [Sdoi2014]Lis Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 865  Solved: 311[Submit][Status] ...

  2. BZOJ1046 [HAOI2007]上升序列 【LIS + 字典序最小】

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 5410  Solved: 1877 [Submit][St ...

  3. [poj2337]求字典序最小欧拉回路

    注意:找出一条欧拉回路,与判定这个图能不能一笔联通...是不同的概念 c++奇怪的编译规则...生不如死啊... string怎么用啊...cincout来救? 可以直接.length()我也是长见识 ...

  4. POJ1815 Friendship(字典序最小最小割割边集)

    看了题解.当时也觉得用邻接矩阵挺好写的,直接memset:然而邻接矩阵不懂得改,于是就放开那个模板,写了Dinic.. 方法是,按字典序枚举每一条满流的边,然后令其容量减1,如果最大流改变了,这条边就 ...

  5. poj 1815 Friendship 字典序最小+最小割

    题目链接:http://poj.org/problem?id=1815 In modern society, each person has his own friends. Since all th ...

  6. UVa 1599 (字典序最小的最短路) Ideal Path

    题意: 给出一个图(图中可能含平行边,可能含环),每条边有一个颜色标号.在从节点1到节点n的最短路的前提下,找到一条字典序最小的路径. 分析: 首先从节点n到节点1倒着BFS一次,算出每个节点到节点n ...

  7. ZOJ-1456 Minimum Transport Cost---Floyd变形+路径输出字典序最小

    题目链接: https://vjudge.net/problem/ZOJ-1456 题目大意: Spring国家有N个城市,每队城市之间也许有运输路线,也可能没有.现在有一些货物要从一个城市运到另一个 ...

  8. HDU 1385 Minimum Transport Cost (输出字典序最小路径)【最短路】

    <题目链接> 题目大意:给你一张图,有n个点,每个点都有需要缴的税,两个直接相连点之间的道路也有需要花费的费用.现在进行多次询问,给定起点和终点,输出给定起点和终点之间最少花费是多少,并且 ...

  9. POJ 2337 Catenyms (有向图欧拉路径,求字典序最小的解)

    Catenyms Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8756   Accepted: 2306 Descript ...

随机推荐

  1. js中字符串和json数组的相互转换

    //示例 var a={"name":"tom","sex":"男","age":"24& ...

  2. c语言学习笔记.内存管理.

    内存: 每个程序的内存是分区的:堆区.栈区.静态区.代码区. 1.代码区:放置所有的可执行代码,包括main函数. 2.静态区:存放所有的全局变量和静态变量. 3.栈区:栈(stack),先进后出.存 ...

  3. zedboard学习记录.3.oled,创建IP

    环境:win7 .vivado 2017.4 .zedboard rev.d 首先建立工程. 1.Tools -> Create and Package New IP 2.Create AXI4 ...

  4. 大图片上传(ImageIO,注意有的图片不能上传时因为他是tiff格式)

    一下是必要的: 1.enctype="multipart/form-data" 2. //不要使用myeclipse自动生成的get.set方法(struts2中的用法) publ ...

  5. MongoDB之python简单交互(三)

    python连接mongodb有多种orm,主流的有pymongo和mongoengine. pymongo 安装相关模块 pip install pymongo pymongo操作 主要对象 Mon ...

  6. django框架之中间件

    中间件简介 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在djang ...

  7. Tutorial 5: Relationships & Hyperlinked APIs

    转载自:http://www.django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis/ Tutorial 5: ...

  8. 到底什么是Upnp?[转载]

    本文出自:http://www.cnblogs.com/nehu/archive/2006/05/13/399342.html 解释一. 准确地说,UPnP(Universal Plug and Pl ...

  9. C# String.Format用法和格式说明

    1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...

  10. Linux自身安全SElinux

    查看SELinux状态: 1./usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态 SELinux status:         ...