BZOJ5484: [Usaco2018 Dec]Sort It Out
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的更多相关文章
- BZOJ5487: [Usaco2018 Dec]Cowpatibility
Description 研究证明,有一个因素在两头奶牛能否作为朋友和谐共处这方面比其他任何因素都来得重要--她们是不是喜欢同 一种口味的冰激凌!Farmer John的N头奶牛(2≤N≤50,000) ...
- USACO2018 DEC (Gold) (dp,容斥+哈希,最短路)
\(T1\) 传送门 解题思路 傻逼\(dp\)..直接\(ST\)表处理最大值\(O(n^2)\)艹过了. 代码 #include<bits/stdc++.h> using namesp ...
- 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 ...
- [bzoj5483][Usaco2018 Dec]Balance Beam_凸包_概率期望
bzoj5483 Usaco2018Dec Balance Beam 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=5483 数据范围:略. 题解 ...
- USACO2018 DEC(Platinum) (树上乱搞,期望+凸包)
发现这跟\(Gold\)难度简直天差地别啊.. \(T1\) 传送门 解题思路 这道题还是很可做的,发现题意可以传化成一棵树每次从叶子节点删边,然后有\(m\)条限制,形如\(a\)在\(b\)前面删 ...
- [Usaco2018 Dec]Teamwork 题解
题目描述 题目描述 在Farmer John最喜欢的节日里,他想要给他的朋友们赠送一些礼物.由于他并不擅长包装礼物,他想要获得他的 奶牛们的帮助.你可能能够想到,奶牛们本身也不是很擅长包装礼物,而Fa ...
- sort排序命令常见用法
sort -n 按数字排序 [root@test88 ~]# cat test.txt 19036 6111 24039 3660 20610 10937 32408 20744 8248 28255 ...
- USACO比赛题泛刷
随时可能弃坑. 因为不知道最近要刷啥所以就决定刷下usaco. 优先级排在学习新算法和打比赛之后. 仅有一句话题解.难一点的可能有代码. 优先级是Gold>Silver.Platinum刷不动. ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
随机推荐
- paper 155:face/head pose estimation
参考来源:http://www.cnblogs.com/lanye/p/5312620.html 人脸姿态估计:pitch,yaw,roll三种角度,分别代表上下翻转,左右翻转,平面内旋转的角度. ...
- LOJ 3093 「BJOI2019」光线——数学+思路
题目:https://loj.ac/problem/3093 考虑经过种种反射,最终射下去的光线总和.往下的光线就是这个总和 * a[ i ] . 比如只有两层的话,设射到第二层的光线是 lst ,那 ...
- poj-1021--2D-Nim--点阵图同构
2D-Nim Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4136 Accepted: 1882 Descriptio ...
- Elasticsearch后台运行步骤
Elasticsearch后台运行步骤 1.cmd 到elasticsearch 中bin目录下 2.elasticsearch-service 出现 3.安装服务 elasticsearch-se ...
- 如果你突然被裁员了,你的Plan B是什么?
保持学习的状态 很多人在30岁之前,或者说成家之前都还挺努力的,但之后就会懈怠.长期下去会让自己的退路变得越来越少.年龄大了学东西不比以前快,体力也不比以前好,仅仅维持现状都需要付出很多努力,所以这个 ...
- md5加密报错解决方法(TypeError: Unicode-objects must be encoded before hashing)
update()必须指定要加密的字符串的字符编码
- java中封装的使用方法(工具myeclipse)
封装可以实现属性私有化,将类的属性修饰符由public改为private,如此做者,其他类就无法访问该类中被private修饰的对象,一般我们会使用setter/getter()方法实现对这些对象的访 ...
- 帮助_NOI导刊2010提高(03)
题目描述 Bubu的书架乱成一团了!帮他一下吧! 他的书架上一共有n本书.我们定义混乱值是连续相同高度书本的段数.例如,如果书的高度是30,30,31,31,32,那么混乱值为3,30,32,32,3 ...
- notepad++编辑软件
官网:http://notepad-plus-plus.org/ 官网截图(2015/4/29): 版本: Notepad++ 6.7.7 下载地址:http://notepad-plus-plus. ...
- AtCoder Beginner Contest 130 F Minimum Bounding Box 三分法求极值(WA)
题意:给n个点的起始坐标以及他们的行走方向,每一单位时间每个点往它的方向移动一单位.问最小能包围所有点的矩形. 解法:看到题目求极值,想了想好像可以用三分法求极值,虽然我也不能证明面积是个单峰函数. ...