5484: [Usaco2018 Dec]Sort It Out

https://www.lydsy.com/JudgeOnline/problem.php?id=5484

Sol.

考虑没有在被喊叫集合中的点,他们一定是上升的。

那么最小的集合大小就是n-最长上升子序列长度。

对于第二问,有个转化:因为给出的是排列,求第k小的集合相当于求第k大的最长上升子序列。

那么可以记f[i]表示以i为头的最长上升子序列长度,g[i]表示方案数,转移时一起转移。

用个vector存最长上升子序列长度为i的开头有哪些,然后从大到小贪心取。

有个技巧:树状数组可以反着用!

我们要把1~x取Max,查询x~n的最小值。

那么可以

for(int i=x;i;i-=i&-i)tr[i]=max(tr[i],v)

for(int i=x;i<=n;i+=i&-ii) sum=max(tr[i],sum)

画个图看看似乎只有取Max可以用

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#define ll long long
#define maxn 100005
#define inf 1e18
using namespace std;
int n,f[maxn],a[maxn],tr[maxn],v,fl[maxn],cnt,p[maxn],ans[maxn];
ll g[maxn],k,way,w[maxn];
vector<int>G[maxn];
void Add(ll &x,ll y){
if(inf-y<x)x=inf;
else x+=y;
}
void ask(int i,int p){
for(;i<=n;i+=i&-i){
if(tr[i]>v)v=tr[i],way=w[i];
else if(tr[i]==v)Add(way,w[i]);
}
}
void add(int i){
for(;i;i-=i&-i){
if(v>tr[i])tr[i]=v,w[i]=way;
else if(v==tr[i])Add(w[i],way);
}
}
bool cmp(int a,int b){return a>b;}
int main(){
cin>>n>>k;
for(int i=;i<=n;i++)scanf("%d",&a[i]),p[a[i]]=i;
for(int i=n;i>=;i--){
v=,way=;
ask(a[i],);
v++;f[i]=v,g[i]=way;
if(f[i]==)g[i]=way=;
add(a[i]);
G[f[i]].push_back(a[i]);
}
for(int i=;i<=n;i++)sort(G[i].begin(),G[i].end(),cmp);
int Max=,mp=;
for(int i=n;i>=;i--){
for(int j=;j<G[i].size();j++){
if(G[i][j]<Max)continue;
int pl=p[G[i][j]];
if(pl<mp)continue;
if(g[pl]>=k){
fl[pl]=;Max=max(Max,G[i][j]);mp=max(mp,pl);
break;
}
k-=g[pl];
}
}
cnt=;
for(int i=;i<=n;i++)if(!fl[i])ans[++cnt]=a[i];
sort(ans+,ans+cnt+);
printf("%d\n",cnt);
for(int i=;i<=cnt;i++)printf("%d\n",ans[i]);
return ;
}

BZOJ5484: [Usaco2018 Dec]Sort It Out的更多相关文章

  1. BZOJ5487: [Usaco2018 Dec]Cowpatibility

    Description 研究证明,有一个因素在两头奶牛能否作为朋友和谐共处这方面比其他任何因素都来得重要--她们是不是喜欢同 一种口味的冰激凌!Farmer John的N头奶牛(2≤N≤50,000) ...

  2. USACO2018 DEC (Gold) (dp,容斥+哈希,最短路)

    \(T1\) 传送门 解题思路 傻逼\(dp\)..直接\(ST\)表处理最大值\(O(n^2)\)艹过了. 代码 #include<bits/stdc++.h> using namesp ...

  3. bzoj5483: [Usaco2018 Dec]Balance Beam

    又又又又又又又被踩爆了 首先容易写出这样的期望方程:f(1)=max(d(1),f(2)/2),f(n)=max(d(n),f(n-1)/2), f(i)=max(d(i),(f(i-1)+f(i+1 ...

  4. [bzoj5483][Usaco2018 Dec]Balance Beam_凸包_概率期望

    bzoj5483 Usaco2018Dec Balance Beam 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=5483 数据范围:略. 题解 ...

  5. USACO2018 DEC(Platinum) (树上乱搞,期望+凸包)

    发现这跟\(Gold\)难度简直天差地别啊.. \(T1\) 传送门 解题思路 这道题还是很可做的,发现题意可以传化成一棵树每次从叶子节点删边,然后有\(m\)条限制,形如\(a\)在\(b\)前面删 ...

  6. [Usaco2018 Dec]Teamwork 题解

    题目描述 题目描述 在Farmer John最喜欢的节日里,他想要给他的朋友们赠送一些礼物.由于他并不擅长包装礼物,他想要获得他的 奶牛们的帮助.你可能能够想到,奶牛们本身也不是很擅长包装礼物,而Fa ...

  7. sort排序命令常见用法

    sort -n 按数字排序 [root@test88 ~]# cat test.txt 19036 6111 24039 3660 20610 10937 32408 20744 8248 28255 ...

  8. USACO比赛题泛刷

    随时可能弃坑. 因为不知道最近要刷啥所以就决定刷下usaco. 优先级排在学习新算法和打比赛之后. 仅有一句话题解.难一点的可能有代码. 优先级是Gold>Silver.Platinum刷不动. ...

  9. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

随机推荐

  1. BZOJ 3456: 城市规划(dp+多项式求逆)

    传送门 解题思路 这道题就是求带标号的无向连通图个数,首先考虑\(O(n^2)\)的做法,设\(f_i\)表示有\(i\)个节点的无向连通图个数,那么考虑容斥,先把所有的无向图求出,即为\(2^{C( ...

  2. vue绑定属性、绑定class及绑定style

    1.绑定属性  v-bind 或者 : 例如:<img :src="pic_src" /> <template> <div id="app& ...

  3. 关于Java中编码集的有趣现象和解释

    这是在整理另一篇博客的时候发现的一个有趣的现象,是这样描述的:我们都知道Java默认使用的是UniCode编码集,我们也知道char类型占用两个字节.所以奇怪的现象又发生了(见代码): @Test p ...

  4. git使用记录九:开发中临时加塞了紧急任务怎么处理

    开发中临时加塞了紧急任务怎么处理 隐藏工作区域 git stash git status 查询隐藏的列表 git stash list 处理完bug,提交之后,再恢复隐藏的工作区域 git stash ...

  5. 爬取拉勾网所有python职位并保存到excel表格 对象方式

    # 1.把之间案例,使用bs4,正则,xpath,进行数据提取. # 2.爬取拉钩网上的所有python职位. from urllib import request,parse import json ...

  6. static_关键字

      static关键字   1.在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所以对象来说,static成员变量只有一份. 2.用stati ...

  7. 使用systemctl管理服务

    系统服务,开机不需要登录就能运行的程序(相当于开机自启)/usr/lib/systemd/system 用户服务,需要登录后才能运行的程序/usr/lib/systemd/user 目录下又存在两种类 ...

  8. 1.etcd

    etcd  v3版接口命令 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt  --cert=/etc/kubernetes/pki/etcd/heal ...

  9. [Fw] assembly code in gas syntax

    Address operand syntax There are up to 4 parameters of an address operand that are presented in the ...

  10. 编译Linux-2.6.23内核中遇见的错误

    编译linux-2.6.23 错误[1]: elf_x86_64: 没有那个文件或目录 原因是 gcc 4.6 不再支持 linker-style 架构.在 arch/x86/vdso/Makefil ...