bzoj

luogu

sol

首先可以把依赖关系转成一个森林。自下而上维护出每个点的\(size\),表示这关解锁以后一共有多少关。

考虑没有重复数字的情况。

直接从小往大贪心把每个数赋给当前已解锁的最后一关就可以了。

有重复?

一样的。重复的数字一起考虑,假设有\(k\)个重复的数,那就把这个数先赋给第\(k\)大的位置,然后是\(k-1\)大。。。直到\(k\)个数全部填满。

code

#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int gi()
{
int x=0,w=1;char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if (ch=='-') w=0,ch=getchar();
while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return w?x:-x;
}
const int N = 5e5+5;
int n,d[N],nxt[N],head[N],fa[N],sz[N],t[N<<2],ans[N];
double k;
void dfs(int u)
{
sz[u]=1;
for (int v=head[u];v;v=nxt[v])
dfs(v),sz[u]+=sz[v];
}
void modify(int x,int l,int r,int p,int v)
{
t[x]+=v;if (l==r) return;
int mid=l+r>>1;
if (p<=mid) modify(x<<1,l,mid,p,v);
else modify(x<<1|1,mid+1,r,p,v);
}
int query(int x,int l,int r,int k)
{
if (l==r) return l;int mid=l+r>>1;
if (k<=t[x<<1|1]) return query(x<<1|1,mid+1,r,k);
else return query(x<<1,l,mid,k-t[x<<1|1]);
}
int main()
{
n=gi();scanf("%lf",&k);
for (int i=1;i<=n;++i)
{
fa[i]=(int)floor(i/k);
if (fa[i]) nxt[i]=head[fa[i]],head[fa[i]]=i;
}
for (int i=1;i<=n&&!fa[i];++i) dfs(i);
for (int i=1;i<=n&&!fa[i];++i) modify(1,1,n,i,sz[i]);
for (int i=1;i<=n;++i) d[i]=gi();sort(d+1,d+n+1);
for (int i=1,j=1;i<=n;i=j)
{
while (j<=n&&d[j]==d[i]) ++j;
for (int k=j-i;k;--k)
{
int u=query(1,1,n,k);ans[u]=d[i];
modify(1,1,n,u,-sz[u]);
for (int v=head[u];v;v=nxt[v]) modify(1,1,n,v,sz[v]);
}
}
for (int i=1;i<=n;++i) printf("%d ",ans[i]);
puts("");return 0;
}

最新文章

  1. POJ 1426 Find The Multiple
  2. unity3d——自带寻路Navmesh (三)(转)
  3. Mac 如何恢复出厂设置
  4. mysql slave 错误解决
  5. php mysql 数据库写入与读取取文件
  6. Unity打包android的apk与数据包.obb分离和apk签名
  7. Unity进阶----AssetBundle_01(2018/10/30)
  8. codechef cook 103 div2
  9. LOJ#6387 「THUPC2018」绿绿与串串 / String (Manacher || hash+二分)
  10. CentOS MPlayer
  11. 最简单安装laravel
  12. 配置 Mysql 支持远程访问 并取消域名解析以提高链接速度
  13. event对象的理解
  14. C# ASCII码排序
  15. Field &#39;id&#39; doesn&#39;t have a default value 原因
  16. Codeforces Round #436 (Div. 2) E. Fire(dp 记录路径)
  17. setMasksToBounds
  18. 第一章:HTTP服务器,客户端简易代码解析
  19. redis入门:介绍、特点、安装、各类型常用操作
  20. tomcat ; nginx ;mysql

热门文章

  1. BIO,NIO和AIO
  2. Python编程-架构、Socket
  3. awk的getline命令
  4. python爬虫之html解析Beautifulsoup和Xpath
  5. Pytorch的gather用法理解
  6. centos安装zabbix监控服务器端
  7. tomcat 日志禁用
  8. apache实现http自动转为https
  9. Codeforces Round #280 (Div. 2) D. Vanya and Computer Game 数学
  10. 国内的Git比GitHub快