题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5170

  我们会发现,经过一轮冒泡后,若a[i]的前面有比它大的数,就一定会有一个被丢到后面去,即a[i]会前移一位。而那些前面没有能被丢的数,它们是按照顺序从小到大排序好的。于是我们可以用树状数组处理出在他前面比他大的数个数>=k的数先插到前移k位的位置上,然后剩下的数从小到大插进空位。

  代码:

#include<cstdio>
#include<algorithm>
#define ll long long
#define maxn 200010
ll read()
{
ll x=; char f=,c=getchar();
for(;c<''||''<c;c=getchar())f=(c=='-'?:f);
for(;''<=c&&c<='';c=getchar())x=x*+c-'';
return f?x:-x;
}
using namespace std;
int bit[maxn];
struct data{
int x,id;
}a[maxn];
int rk[maxn],f[maxn],ans[maxn];
int n,k;
bool cmp(data a,data b){return a.x<b.x;}
void add(int x,int k){for(;x<=n;x+=x&(-x))bit[x]+=k;}
int getsum(int x){int sum=; for(;x;x-=x&(-x))sum+=bit[x]; return sum;}
int main()
{
n=read(); k=read();
for(int i=;i<=n;i++)
a[i].x=read(),a[i].id=i;
sort(a+,a+n+,cmp);
// for(int i=1;i<=n;i++)
// printf("%d %d %d\n",i,a[i].x,a[i].id);
rk[a[].id]=;
for(int i=;i<=n;i++)
if(a[i].x==a[i-].x)rk[a[i].id]=rk[a[i-].id];
else rk[a[i].id]=i;
for(int i=;i<=n;i++){
add(rk[i],);
f[i]=getsum(n)-getsum(rk[i]);
if(f[i]>k)ans[i-k]=a[rk[i]].x;
}
int tmp=;
for(int i=;i<=n;i++)
if(f[a[i].id]<=k){
while(tmp<=n&&ans[tmp])++tmp;
ans[tmp]=a[i].x;
}
for(int i=;i<=n;i++)
printf("%d\n",ans[i]);
// for(int i=1;i<=n;i++)
// printf("%d %d %d\n",i,rk[i],f[i]);
}

bzoj5170

【bzoj5170】Fable(树状数组)的更多相关文章

  1. BZOJ5170: Fable 树状数组

    Description 有这么一则传闻,O(nlogn)的排序发明之前,滋滋国的排序都是采用的冒泡排序.即使是冒泡排序,对当时的国民 来说也太复杂太难以理解,于是滋滋国出现了这样一个职业——排序使,收 ...

  2. BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2221  Solved: 1179[Submit][Sta ...

  3. bzoj1878--离线+树状数组

    这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...

  4. codeforces 597C C. Subsequences(dp+树状数组)

    题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...

  5. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  6. BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]

    3529: [Sdoi2014]数表 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1399  Solved: 694[Submit][Status] ...

  7. BZOJ 3289: Mato的文件管理[莫队算法 树状数组]

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Di ...

  8. 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组

    E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  9. 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 508  Solved: 158[Submit][Sta ...

随机推荐

  1. Android SharedPreferences保存第一次的信息

    private void setHomeTimeZone() { SharedPreferences prefs = PreferenceManager.getDefaultSharedPrefere ...

  2. CodeForces - 512B Fox And Jumping[map优化dp]

    B. Fox And Jumping time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. c# SQL Server数据库操作-管理命令参数的类:SqlParameter

    使用SqlCommand类来执行Transact-SQL语句或存储过程时,有时需要用参数传值或作为返回值,SqlParameter类正是为了此需要而设计的类.下面介绍如何使用该类为SqlCommand ...

  4. android异常:Can not perform this action after onSaveInstanc

    extends:http://zhiweiofli.iteye.com/blog/1539467 本人某个android项目开发阶段一直运行良好,直到上线前夕,在某款跑着android 4.03系统的 ...

  5. Android自定义类似ProgressDialog效果的Dialog

    Android自定义类似ProgressDialog效果的Dialog. 方法如下: 1.首先准备两张自己要定义成哪样子的效果的图片和背景图片(也可以不要背景). 如我要的效果: 2.定义loadin ...

  6. 输入一个网站地址到网站展现的过程以及APR协议(鬼知道中间经历了什么)

    以前只知道输入一个网站,然后看着返回琳琅满目的内容,其实中间经历的过程和步骤太多了.为了满足好奇心以及学习需要,特查阅了资料将其记录下来以备后续自己复习. 从我在地址栏输入www.zhihu.com ...

  7. SaltStack生产案例-系统初始化

    需求分析 一,系统初始化 1.1  关闭SELinux 1.2  关闭默认iptables 1.3  时间同步(配置NTP)  1.4  文件描述符(必备/etc/security/limmits.c ...

  8. 朴素贝叶斯算法的python实现 -- 机器学习实战

    import numpy as np import re #词表到向量的转换函数 def loadDataSet(): postingList = [['my', 'dog', 'has', 'fle ...

  9. Python爬虫框架Scrapy实例(二)

    目标任务:使用Scrapy框架爬取新浪网导航页所有大类.小类.小类里的子链接.以及子链接页面的新闻内容,最后保存到本地. 大类小类如下图所示: 点击国内这个小类,进入页面后效果如下图(部分截图): 查 ...

  10. B - Network---UVA 315(无向图求割点)

        A Telephone Line Company (TLC) is establishing a new telephone cable network. They are connectin ...