题目大意:
  给定一个$n(n\le10^6)$个结点的有根树,从根结点开始染色。每次可以染和已染色结点相邻的任意$k$个结点。$q(q\le10^6)$组询问,每次给定$k$,问至少需要染几次?

思路:
  显然$ans=\max\left\{i+\left\lceil\frac{sum[i]}k\right\rceil\right\}$。而这样做是$O(nq)$的,观察到原式$=\left\lceil\frac{\max\left\{ki+sum[i]\right\}}k\right\rceil$。$\max$中是关于$k$的一次函数,考虑使用斜率优化,做到$O(n+q)$。

 #include<cmath>
#include<cstdio>
#include<cctype>
#include<algorithm>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
const int N=1e6+;
int k[N],sum[N],h[N],head=,tail,sz,max,ans[N],q[N];
struct Edge {
int to,next;
};
Edge e[N<<];
inline void add_edge(const int &u,const int &v) {
e[++sz]=(Edge){v,h[u]};h[u]=sz;
}
void dfs(const int &x,const int &dep) {
sum[dep]++;
max=std::max(max,dep);
for(int i=h[x];i;i=e[i].next) {
const int &y=e[i].to;
dfs(y,dep+);
}
}
inline double calc (const int &i,const int &j) {
return (double)(sum[j]-sum[i])/(i-j);
}
int main() {
const int n=getint();
for(register int i=;i<=k[];i++) k[i]=getint();
for(register int i=;i<=n;i++) {
add_edge(getint(),i);
}
dfs(,);
for(register int i=max;~i;i--) sum[i]+=sum[i+];
for(register int i=max;~i;i--) {
while(head<tail&&calc(q[tail-],q[tail])<=calc(q[tail],i)) tail--;
q[++tail]=i;
}
for(register int i=n;i;i--) {
while(head<tail&&calc(q[head],q[head+])>=i) head++;
ans[i]=q[head]+ceil((double)sum[q[head]]/i);
}
for(register int i=;i<=k[];i++) {
printf("%d%c",k[i]<=n?ans[k[i]]:max+," \n"[i==k[]]);
}
return ;
}

[POI2014]Supercomputer的更多相关文章

  1. BZOJ3835: [Poi2014]Supercomputer

    Description Byteasar has designed a supercomputer of novel architecture. It may comprise of many (id ...

  2. BZOJ3835[Poi2014]Supercomputer——斜率优化

    题目描述 Byteasar has designed a supercomputer of novel architecture. It may comprise of many (identical ...

  3. 【BZOJ】3835: [Poi2014]Supercomputer

    题意 \(n(1 \le 1000000)\)个点的有根树,\(1\)号点为根,\(q(1 \le 1000000)\)次询问,每次给一个\(k\),每一次可以选择\(k\)个未访问的点,且父亲是访问 ...

  4. 题解-POI2014 Supercomputer

    Problem 辣鸡bzoj权限题,洛谷链接 题意概要:一棵 \(n\) 个点有根树.\(Q\) 次询问给出一个 \(K\),回答遍历完整棵树所需最少操作次数.每次操作可以选择访问不超过 \(K\) ...

  5. BZOJ3835 [Poi2014]Supercomputer 【斜率优化】

    题目链接 BZOJ3835 题解 对于\(k\),设\(s[i]\)为深度大于\(i\)的点数 \[ans = max\{i + \lceil \frac{s[i]}{k}\} \rceil\] 最优 ...

  6. POI2014题解

    POI2014题解 [BZOJ3521][Poi2014]Salad Bar 把p当作\(1\),把j当作\(-1\),然后做一遍前缀和. 一个合法区间\([l,r]\)要满足条件就需要满足所有前缀和 ...

  7. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  8. BZOJ 3524: [Poi2014]Couriers [主席树]

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1892  Solved: 683[Submit][St ...

  9. BZOJ 3524: [Poi2014]Couriers

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1905  Solved: 691[Submit][St ...

随机推荐

  1. C++ 11 智能指针 lamda 以及一个 围棋程序

    lamda表达式使用 char* p = "Hello world"; ,nl = ; for_each(p,p+, [&](char i){ if(i=='e') ne+ ...

  2. java值转递?引用传递?

    值传递是传递的是原值的副本,引用传递传递的是原值. 在Java中,如果是基本数据类型,传递的是该参数字面量值的拷贝.如果是引用数据类型,传递的是该参数所引用对象在堆中地址的拷贝. swap(int a ...

  3. CSS3 em && rem 详细教程

    1 # mobile css & rem & em & px > 1 rem === 16px 任意浏览器的默认字体高都是 16px, 所有未经调整的浏览器都符合: 1e ...

  4. DP石子合并问题

    转自:http://www.hnyzsz.net/Article/ShowArticle.asp?ArticleID=735 [石子合并]    在一个圆形操场的四周摆放着n 堆石子.现要将石子有次序 ...

  5. Spark on Yarn——spark1.5.1集群配置

    写在前面: spark只是一种计算框架,如果要搭建集群要依托与一定的组织模式. 目前来说,Spark集群的组织形式有三种: 1.      Standalone:使用akka作为网络IO组件,mast ...

  6. git项目初始化的问题汇总

    转:https://blog.csdn.net/Free_Wind22/article/details/81628721 1.在Git官网上点击New repository新建项目: 2.在本地新建一 ...

  7. linux--lsof

    lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 ...

  8. C 随机不重复元素~转

    随机产生不重复元素:如何高效产生m个n范围内的不重复随机数(m<=n) 如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生.这 ...

  9. error C4996: ‘Json::Reader::Char’: Use CharReader and CharReaderBuilder instead

    1.编译下面代码时,遇到标题中的错误 const char* str = "{\"name\":\"xiaoming\",\"age\&qu ...

  10. 1.2.3 创建Cocos2D-iPhone的帮助文档

    http://book.51cto.com/art/201303/383957.htm <Cocos2D权威指南>第1章开始前的准备工作,本章我们将介绍什么是Cocos2D以及有关Coco ...