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. [CSP-S模拟测试]:antipalindrome(数学)

    题目传送门(内部题58) 输入格式 第一行一个数$T$表示数据组数.接下来每行两个数$n$和$m$. 输出格式 $T$行,每行一个答案,对${10}^9+7$取模. 样例 样例输入: 25 66 5 ...

  2. Java中static修饰类的问题

    Java中static修饰类的问题 众所周知,Java中static关键字可以修饰方法与变量: 修饰变量的时候,这个变量属于类变量,可以直接通过类名.变量名来引用. 修饰方法的时候可以直接通过类名.方 ...

  3. centos挂载移动硬盘ntfs-3g

    yum install ntfs-3g sudo mount -t ntfs-3g /dev/sdc1 /mnt/mobiledisk https://tuxera.com/opensource/nt ...

  4. 杂项-Map:高德地图

    ylbtech-杂项-Map:高德地图 1.返回顶部 1. 开放分类:地图手机软件高德地图(Amap) 是国内一流的免费地图导航产品,也是基于位置的生活服务功能最全面.信息最丰富的手机地图,由国内最大 ...

  5. jenkins插件set build description使用规则

    配置前要注意的点: 先安装插件:set build description 安装该插件后,在[Post-build Actions]栏目中会多出description setter功能,可以实现构建完 ...

  6. Oralce常用系统函数

    dual:Oracle系统内部提供的一个用于实现临时数据计算的特殊表,它只有一个列DUMMY (VARCHAR2(1)) 字符类函数: concat--连接字符串 initcap--每个单词首字母大写 ...

  7. configure error libmcrypt was not found解决方法

    安装到mcrypt的时候出现了问题./configure提示出错,首先提示*** Could not run libmcrypt test program, checking why-*** The ...

  8. HBase最佳实践-读性能优化策略

    任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...

  9. php的注释方法

    注释是每个程序员学习时的基础,我们通过可以注释来备注一信息.增加代码的可读性.下面我们就为大家介绍一下PHP的注释方法. 1, // 这是单行注释 2,# 这也是单行注释 3,/* */多行注释块   ...

  10. 【笔记目录1】ASP.NET Core分布式项目实战

    当前标签: ASP.NET Core分布式项目实战 共2页: 1 2 下一页  35.Docker安装Mysql挂载Host Volume GASA 2019-06-20 22:02 阅读:51 评论 ...