传送门

分析

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

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

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

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

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

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

代码

#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. ubuntu :安装一个方便的终端工具,Guake Terminal

    前言: 刚刚用ubuntu不久,就想找点新鲜玩意儿,提高linux能力,当然啦,我喜欢折腾,今天就碰到Guake Terminal这个玩意儿,它的功能很简单,就是一个终端,按F12就出现,再按就隐藏, ...

  2. qt在动态库里面加载widget的例子

    testDll和testExe项目 备注:windows下dll内不需要new QApplication, linux和mac下面需要在动态库里面new QApplication testdll.h ...

  3. 你一定想知道的关于FPGA的那些事

    首先,如果您从未接触过FPGA(现场可编程门阵列),或者有过一点基础想要继续深入了解这个行业,在这里,会向您介绍FPGA,并且向您解释FPGA都能解决什么问题,如何解决这些问题,并讨论如何将设计进行优 ...

  4. Spring Cloud Bus 消息总线 RabbitMQ

    Spring Cloud Bus将分布式系统中各节点通过轻量级消息代理连接起来. 从而实现例如广播状态改变(例如配置改变)或其他的管理指令. 目前唯一的实现是使用AMQP代理作为传输对象. Sprin ...

  5. adb命令记录

    1.杀掉 adb 进程    adb kill-server 2.重启 adb 服务    adb start-server 3.重启手机         adb reboot 4.进 shell 模 ...

  6. Web应用层协议---HTTP

    处于协议栈顶层的应用层协议定义了运行在不同端系统的应用程序进程如何相互传递报文.定义内容如下: 1.交换的报文类型.请求报文和响应报文. 2.各种报文类型的语法,如报文中的各个字段及这这些字段是如何描 ...

  7. Tkinter Radiobutton

    Python GUI - Tkinter Radiobutton: 这个小部件实现了多项选择按钮,这是一种方式向用户提供许多可能的选择,让用户选择只是其中之一.   这个小部件实现了多项选择按钮,这是 ...

  8. vue之vue-router跳转

    vue之vue-router跳转 一.配置 在初始化使用vue-cli的时候会有vue-router的安装选择,选择安装即可. 二.嵌套路由 一般情况下,登录和项目页面属于同级,所以App.vue 只 ...

  9. leetcode529

    public class Solution { //DFS public char[,] UpdateBoard(char[,] board, int[] click) { ), n = board. ...

  10. 「小程序JAVA实战」开发用户redis-session(40)

    转自:https://idig8.com/2018/09/05/xiaochengxujavashizhankaifayonghuredis-session39/ 接下来我们需要在我们的项目里面配置下 ...