传送门

分析

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

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

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

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

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

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

代码

#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. Mac环境下终端(Terminal)用ssh 连接服务器问题 Received disconnect from 120.55.x.x: 2: Too many authentication failures for root

    由于这台Mac配置git生成公钥后,ssh连接就出现来这个问题 Received disconnect from 120.55.x.x: 2: Too many authentication fail ...

  2. Spring入门一----HelloWorld

    知识点: 简介 HelloWorld 简介: 百度百科   HelloWorld 项目结构图:      导入Spring支持包: 然后选中所有包,右键Build Path à Add to Buil ...

  3. 基于INTEL FPGA硬浮点DSP实现卷积运算

    概述 卷积是一种线性运算,其本质是滑动平均思想,广泛应用于图像滤波.而随着人工智能及深度学习的发展,卷积也在神经网络中发挥重要的作用,如卷积神经网络.本参考设计主要介绍如何基于INTEL 硬浮点的DS ...

  4. (转)Inno Setup入门(八)——有选择性的安装文件

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250827 这主要使用[Components]段实现,一个演示的代 ...

  5. python list 列表

    1. 什么是列表 列表是一个可变的数据类型 列表由[]来表示, 每一项元素使用逗号隔开. 列表什么都能装. 能装对象的对象. 列表可以装大量的数据 2. 列表的索引和切片 列表和字符串一样. 也有索引 ...

  6. poj 3977 Subset(折半枚举+二进制枚举+二分)

    Subset Time Limit: 30000MS   Memory Limit: 65536K Total Submissions: 5721   Accepted: 1083 Descripti ...

  7. node+express+socket.io制作一个聊天室功能

    首先是下载包: npm install express npm install socket.io 建立文件: 服务器端代码:server.js var http=require("http ...

  8. 3d标签云(JS版)

    http://www.miaov.com/miaov_demo/3dLable/miaov_demo.html http://www.lijian.net/p/windstagball/index.h ...

  9. 基于JDBC的跨平台数据库管理工具DbVisualizer安装步骤(图文详解)(博主推荐)

    首先,关于跨平台数据库管理工具DbVisualizer是什么?这个不多说,大家自行去看. 这个工具可以自定义连接其他没有驱动的数据库.   公司的项目牵扯到的数据库有mysql,sqlserver,o ...

  10. Dev使用技巧汇总

    C# XtraGrid的行指示器(RowIndicator)行号以及图标设置 参考网址:https://www.cnblogs.com/xuliangxing/p/6775438.html DateE ...