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. k-近邻算法(kNN)测试算法:作为完整程序验证分类器

    #测试算法:作为完整程序验证分类器 def datingClassTest(): hoRatio = 0.10 #设置测试集比重,前10%作为测试集,后90%作为训练集 datingDataMat,d ...

  2. 【2019 Multi-University Training Contest 2】

    01: 02: 03: 04: 05:https://www.cnblogs.com/myx12345/p/11584100.html 06: 07: 08:https://www.cnblogs.c ...

  3. BZOJ 2547: [Ctsc2002]玩具兵(二分答案+二分图匹配)

    传送门 解题思路 可以发现天兵不用管,答案的一个上界是\(2*k\),就是天兵一个个换.刚开始写了个拆\(6\)点的网络流,调了半天发现自己假了..说说正解,首先可以发现交换士兵其实就是种类的交换,那 ...

  4. iOS 开发加密做法

    一般做法是这样的: 客户端 每一个请求的URL中加上时间的参数.对url中的参数是排序好的. 然后对这个URL进行MD5.将这个MD5作为最后一个参数(sign)拼接到url最后. 服务端 收到请求后 ...

  5. python打印9宫格,25宫格等奇数格,且横竖斜相加和相等

    代码如下: #!/usr/bin/env python3#-*- coding:utf-8 -*-num = int(input('请输入一个奇数:'))# 定义一个长为num的列表high = [[ ...

  6. TypeScript躬行记(5)——类型兼容性

    TypeScript是一种基于结构类型的语言,可根据其成员来描述类型.以结构相同的Person接口和Programmer类为例,如下所示. interface Person { name: strin ...

  7. Asp.Net Core 第02局:Program

    总目录 前言 本文介绍Program,它包含程序的入口Main方法.从这里开始... 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 第一手:Program ...

  8. vim可视模式

    参考: http://xw2423.byr.edu.cn/blog/archives/232 http://www.pythonclub.org/linux/vim/visual-mode Vim的多 ...

  9. 存取cookies

    保存: Response.Cookies["OpenID"].Value = wxobj.openid; Response.Cookies["NickName" ...

  10. this关键字与super关键字区别

        this super 1 访问属性 访问本类中属性,如果本类中没有此属性,就从父类继承过来的属性中查找 (遵循就近原则) 访问父类中的属性 2 调用方法 访问本类中方法 直接访问父类中方法 3 ...