这题就是让你求字典序第k小的最短乱序子序列

转换一下,其实就是字典序第k大的最长上升子序列

就统计一下以i结尾的最长上升子序列\(f[i]\),长度为i的上升子序列的开头组成的集合\(v[i]\),转移时贪心转移就行了

然而并不是很懂为什么计算\(f[i]\)时要倒着计算……

代码:

#include <bits/stdc++.h>
#define N 100005
#define ll long long
#define inf 1e18
using namespace std;

vector<int>v[N];
int a[N],b[N],n;
ll f[N];
bool use[N];
struct node{ int l;ll tot; }c[N];

node query(int x){
    node tmp={0,1};
    for(int i=x;i<=n;i+=(i&-i)){
        if(c[i].l>tmp.l) tmp.l=c[i].l,tmp.tot=c[i].tot;
        else if(c[i].l==tmp.l) tmp.tot=min((ll)inf,c[i].tot+tmp.tot);
    }tmp.l++;
    return tmp;
}
void add(node tmp,int x){
    for(int i=x;i;i-=(i&-i)){
        if(c[i].l<tmp.l) c[i].l=tmp.l,c[i].tot=tmp.tot;
        else if(c[i].l==tmp.l) c[i].tot=min((ll)inf,c[i].tot+tmp.tot);
    }
}

int main(){
    ll k;
    int mx=0,i,j,ans=0;
    scanf("%d%lld",&n,&k);
    for(i=1;i<=n;++i) scanf("%d",&a[i]),b[a[i]]=i;
    for(i=n;i>=1;--i){
        node x=query(b[i]+1);
        v[x.l].push_back(i),f[i]=x.tot;
        add(x,b[i]),mx=max(mx,x.l);
    }
    int val=0,pos=0;
    for(i=mx;i;--i){
        for(j=0;j<v[i].size();++j){
            int x=v[i][j];
            if(b[x]<val || x<pos) continue;
            if(f[x]<k) k-=f[x];
            else{ val=b[x],pos=x,use[x]=1;break; }
        }
    }
    printf("%d\n",n-mx);
    for(i=1;i<=n;++i) if(!use[i]) printf("%d\n",i);
}

洛谷P5156 [USACO18DEC]Sort It Out的更多相关文章

  1. 洛谷P5155 [USACO18DEC]Balance Beam(期望,凸包)

    你以为它是一个期望dp,其实它是一个凸包哒! 设平衡木长度为\(L\),把向右走平衡木那个式子写一下: \[dp[i]=\frac{dp[i+1]+dp[i-1]}{2}\] 然后会发现这是一个等差数 ...

  2. p5156 [USACO18DEC]Sort It Out

    传送门 分析 我们发现对于没有发现的点相对位置不会发生改变 于是我们可以吧问题转化为求一个lis 于是我们字典序第k小的答案就是字典序第k大的lis 代码 #include<iostream&g ...

  3. 洛谷 SP9722 CODESPTB - Insertion Sort

    洛谷 SP9722 CODESPTB - Insertion Sort 洛谷传送门 题目描述 Insertion Sort is a classical sorting technique. One ...

  4. 洛谷P1214 [USACO1.4]等差数列 Arithmetic Progressions

    P1214 [USACO1.4]等差数列 Arithmetic Progressions• o 156通过o 463提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题 ...

  5. 洛谷 P1156 垃圾陷阱

    2016-05-31 09:54:03 题目链接 :洛谷 P1156 垃圾陷阱 题目大意: 奶牛掉坑里了,给定坑的深度和方块的个数,每个方块都可以垫脚或者吃掉维持生命(初始为10) 若可以出来,求奶牛 ...

  6. 洛谷 P2279 03湖南 消防局的设立

    2016-05-30 16:18:17 题目链接: 洛谷 P2279 03湖南 消防局的设立 题目大意: 给定一棵树,选定一个节点的集合,使得所有点都与集合中的点的距离在2以内 解法1: 贪心 首先D ...

  7. 洛谷P1120 小木棍

    洛谷1120 小木棍 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50.     现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长 ...

  8. 洛谷2344 奶牛抗议(DP+BIT+离散化)

    洛谷2344 奶牛抗议 本题地址:http://www.luogu.org/problem/show?pid=2344 题目背景 Generic Cow Protests, 2011 Feb 题目描述 ...

  9. 洛谷4月月赛R2

    洛谷4月月赛R2 打酱油... A.koishi的数学题  线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...

随机推荐

  1. Redis清理

    Redis登录: Redis目录: redis-cli.exe -h 127.0.0.1 -p 6739 login:  auth “password”      flushall

  2. idea升级maven工程jar包版本和解决jar包冲突

    原来用过eclipse的都知道,想要升级maven工程的jar包版本或者解决jar包冲突,直接在pom文件下的dependency hierarchy视图下右击冲突的jar包,将其exclude掉,然 ...

  3. Nginx概述、安装及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  4. spring aop博客记录

    1.spring aop和事务失效 解决办法: http://blog.csdn.net/z2007130205/article/details/41284381 http://blog.csdn.n ...

  5. Native2Ascii文件转换 -- 待完善

    摘自:https://www.oschina.net/code/snippet_87799_1612 Native2Ascii文件转换 -- 待完善 package com.xxx.xxx.Util; ...

  6. 第一次用FontLad~

    FontLad 是一款制作字体的工具 使用流程: 1. 下载.安装软件FontLab Studio2.   File->New菜单,创建一个工程文件,会自动创建一个ASCII码表对应的字体表3. ...

  7. springboot启动正常,访问restController报404

    原因:spring boot只会扫描启动类当前包和以下的包 比如以下: 主类:Application放在包com.springboot.main controller类放在包com.springboo ...

  8. 9.29学习的js基础

    js基础 1.三种js引入方式    a).<input type="button" value="点击事件" onClick="documen ...

  9. Windows GDI绘图基础知识

    一.Windows可以画直线.椭圆线(椭圆圆周上的曲线)和贝塞尔曲线.////////////7 个画线函式是:(1)画直线LineTo    BOOL LineTo(HDC hdc,int nXEn ...

  10. Javascript基础编程の面向对象编程

    javascript是解释型的语言,在编译时和运行时之间没有明显区别,因此需要更动态的方法.javascript没有正式的类的概念,我们可以使用在运行时创建新的对象类型来替代,并且可以随时更改已有对象 ...