传送门

分析

我们先考虑如果所有数都不相同我们应该怎么办

我们可以直接贪心的在每个点放可行的最大权值

但是题目要求可以有相同的数

我们可以考虑每次让当前节点可发且尽量大的同时给兄弟节点留的数尽量大

我们用线段树维护每个点比它大的点还剩几个

对于每个点要给它的子树预留足够的点即可

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
int n,fa[],siz[],d[],col[];
int a[],ans[],cnt[];
double f;
inline bool cmp(const int x,const int y){return x>y;}
inline void build(int le,int ri,int wh){
if(le==ri){
d[wh]=le;
return;
}
int mid=(le+ri)>>;
build(le,mid,wh<<);
build(mid+,ri,wh<<|);
d[wh]=min(d[wh<<],d[wh<<|]);
}
inline void update(int le,int ri,int wh,int x,int y,int k){
if(le>=x&&ri<=y){
d[wh]+=k;
col[wh]+=k;
return;
}
int mid=(le+ri)>>;
if(col[wh]!=){
d[wh<<]+=col[wh];
d[wh<<|]+=col[wh];
col[wh<<]+=col[wh];
col[wh<<|]+=col[wh];
col[wh]=;
}
if(mid>=x)update(le,mid,wh<<,x,y,k);
if(mid<y)update(mid+,ri,wh<<|,x,y,k);
d[wh]=min(d[wh<<],d[wh<<|]);
}
inline int q(int le,int ri,int wh,int k){
if(le==ri)return d[wh]>=k?le:le+;
int mid=(le+ri)>>;
if(col[wh]!=){
d[wh<<]+=col[wh];
d[wh<<|]+=col[wh];
col[wh<<]+=col[wh];
col[wh<<|]+=col[wh];
col[wh]=;
}
if(d[wh<<|]>=k)return q(le,mid,wh<<,k);
else return q(mid+,ri,wh<<|,k);
}
int main(){
int i,j,k;
scanf("%d",&n);
cin>>f;
for(i=;i<=n;i++)scanf("%d",&a[i]);
for(i=;i<=n;i++)fa[i]=i/f,siz[i]=;
sort(a+,a+n+,cmp);
for(i=n;i>;i--)siz[fa[i]]+=siz[i];
for(i=n-;i>;i--)cnt[i]=(a[i]==a[i+]?cnt[i+]+:);
build(,n,);
for(i=;i<=n;i++){
if(fa[i]&&fa[i]!=fa[i-])update(,n,,ans[fa[i]],n,siz[fa[i]]-);
int x=q(,n,,siz[i]);
x+=cnt[x];
++cnt[x];
ans[i]=x;
update(,n,,x,n,-siz[i]);
}
for(i=;i<=n;i++)printf("%d ",a[ans[i]]);
return ;
}

p4364 [九省联考2018]IIIDX的更多相关文章

  1. [luogu] P4364 [九省联考2018]IIIDX(贪心)

    P4364 [九省联考2018]IIIDX 题目背景 Osu 听过没?那是Konano 最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐游戏.现在,他在世界知名游戏公司KONMAI ...

  2. 洛谷P4364 [九省联考2018]IIIDX 【线段树】

    题目 [题目背景] Osu听过没?那是Konano最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐游戏.现在 ,他在世界知名游戏公司KONMAI内工作,离他的梦想也越来越近了.这款 ...

  3. [luogu]P4364 [九省联考2018]IIIDX

    题目背景 Osu 听过没?那是Konano 最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐游戏.现在,他在世界知名游戏公司KONMAI 内工作,离他的梦想也越来越近了. 这款音乐 ...

  4. 洛谷P4364 [九省联考2018]IIIDX(线段树)

    传送门 题解看得……很……迷? 因为取完一个数后,它的子树中只能取权值小于等于它的数.我们先把权值从大到小排序,然后记$a_i$为他左边(包括自己)所有取完他还能取的数的个数.那么当取完一个点$x$的 ...

  5. 洛谷 4364 [九省联考2018]IIIDX——“预留”的思路

    题目:https://www.luogu.org/problemnew/show/P4364 原来想了一个错误的思路,就是这样: solve( cr , l , r ) 表示 cr 为根的子树填 [ ...

  6. [BZOJ5249][九省联考2018]IIIDX(线段树)

    5249: [2018多省省队联测]IIIDX Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 32  Solved: 17[Submit][Statu ...

  7. BZOJ5249:[九省联考2018]IIIDX——题解

    https://www.luogu.org/problemnew/show/P4364#sub https://www.lydsy.com/JudgeOnline/problem.php?id=524 ...

  8. [九省联考2018]IIIDX

    题目描述 这一天,Konano接到了一个任务,他需要给正在制作中的游戏<IIIDX>安排曲目的解锁顺序.游戏内共有n首曲目 ,每首曲目都会有一个难度d,游戏内第i首曲目会在玩家Pass第t ...

  9. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)

    BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...

随机推荐

  1. VMware下安装的Mac OS X如何修改显示分辨率 (转)

    我在Win7下利用VMware安装了苹果的OS x 10.8系统,安装成功启动后,发现分辨率为1024*768,而宿机的分辨率是1440*900,我想让虚拟机全屏显示,也就是想在雪豹下屏幕的分辨率也能 ...

  2. mac下finder子目录直接打开终端

    macstore下载go2shell,放你喜欢的目录,按住command,拖动到finder顶部的工具栏即可 终端直接打开finder,终端输入 open . 注意,后面红色的点,表明当前目录

  3. [Java.web]Web应用结构

    以Web应用放在 Tomcat\webapps\ 目录下为例 day01 目录   |    |------------- html.jsp.css.js 文件等    |------------- ...

  4. 安装配置limesurvey

    下载limesurvey地址:http://www.limesurvey.org/en/stable-release 选择下载 limesurvey200plus-build131122.zip 解压 ...

  5. ERROR无法从静态上下文中引用非静态变量

    ERROR无法从静态上下文中引用非静态变量 2012-06-16 20:58:52 分类: Java 什么是“static”? 学习过java.C++或C的人都应该认识这个关键字.用这个关键字修饰的变 ...

  6. PHP5.3安装Zend Guard Loader代替Zend Optimizer

    Zend Optimizer/3.3.3   解密加代码优化,提高PHP应用程序的执行速度,显著降低服务器的CPU负载. Zend Guard Loader/5.5.0/6.0   解密加代码优化,提 ...

  7. JavaScript数据类型的检测

    主要有一下四种方法: 1.typeof 2.instanceof 3.constructor 4.Object.prototype.toString.call() 1.typeof 不能具体细分是什么 ...

  8. wkhtmktopdf

    1: sudo apt-get install wkhtmltopdf   2: sudo apt-get xvfb   3: 切换到root用户: echo 'xvfb-run --server-a ...

  9. litecoin源码

    安装钱包 http://www.laiteb.com/92 莱特币基于比特币的v0.9.0rc2修改而来,从比较两者最新源码的分支图可以看出

  10. 用CSS制作小三角提示符号

    今天在项目中遇到了如下图的切图要求. 对,重点就是那个小三角提示符号. html 结构如下 <div class="wrap"> <div class=" ...