bzoj4928: 第二题
Description
Input
Output
#include<cstdio>
#include<cstring>
#define Fe(i,l,r) for(int i=l;i<=r;++i)
typedef unsigned long long u64;
const int N=,P=;
void maxs(int&a,int b){if(a<b)a=b;}
u64 H(u64 x){return (x^x>>^x<<)+;}
char buf[],*ptr=buf+;
int G(){
if(ptr-buf==)fread(ptr=buf,,,stdin);
return *ptr++;
}
int _(){
int x=;
if(ptr-buf<){
while(*ptr<)++ptr;
while(*ptr>)x=x*+*ptr++-;
}else{
int c=G();
while(c<)c=G();
while(c>)x=x*+c-,c=G();
}
return x;
}
int n,ans=;
int mem[N],*mp=mem,*e[N],ep[N],fa[][N],fas[N],id[N],_fa[N],_son[N];
int q[N],ql=,qr=,dep[N],md[N];
u64 h[][N],h2[N],_h[N];
u64 hx[P];
int ht[P],tk=;
bool ins(u64 x){
int w=(unsigned(x)^unsigned(x>>))%P;
while(ht[w]==tk){
if(hx[w]==x)return ;
if((w+=)>=P)w-=P;
}
hx[w]=x;ht[w]=tk;
return ;
}
template<class T>
void cpy(T*a,T*b){memcpy(a+,b+,sizeof(T)*n);}
void getson(){
memset(_son+,,sizeof(int)*n);
Fe(t,,qr){
int w=q[t],f=fas[w];
if(!_son[f])_son[f]=t;
}
}
void cal(int _i){
cpy(_h,h[_i]);
cpy(_fa,fa[_i]);
for(int i=_i-;i>=;--i){
++tk;
cpy(h2,_h);
getson();
Fe(t,,qr){
int w=q[t],f=_fa[w];
if(f)h2[f]=h2[f]*+h[i][w]+(id[fa[][w]]-_son[f]);
}
bool is=;
int mn=ans+(<<i);
Fe(w,,n)if(md[w]+>=mn&&ins(h2[w])){
is=;
break;
}
if(is){
ans=mn;
Fe(w,,n){
_h[w]=H(h2[w]);
_fa[w]=fa[i][_fa[w]];
fas[w]=fa[i][fas[w]];
}
}
}
}
void cal(){
Fe(w,,n)h[][w]=;
for(int i=;i<;++i){
++tk;
cpy(h2,h[i]);
getson();
Fe(t,,qr){
int w=q[t],f=fa[i][w];
if(f)h2[f]=h2[f]*+h[i][w]+(id[fa[][w]]-_son[f]);
}
bool is=;
int mn=ans+(<<i);
Fe(w,,n)if(md[w]+>=mn&&ins(h2[w])){
is=;
break;
}
if(is){
ans=mn;
Fe(w,,n){
h[i+][w]=H(h2[w]);
fa[i+][w]=fa[i][fa[i][w]];
fas[w]=fa[i][fas[w]];
}
}else return cal(i);
}
}
int main(){
n=_();
for(int i=;i<=n;++i){
fas[i]=i;
e[i]=mp;
mp+=ep[i]=_();
for(int j=;j<ep[i];++j)fa[][e[i][j]=_()]=i;
}
for(q[++qr]=;fa[][q[]];++q[]);
while(ql!=qr){
int w=q[++ql];
id[w]=ql;
for(int*l=e[w],*r=l+ep[w];l!=r;++l)dep[q[++qr]=*l]=dep[w]+;
}
for(int i=qr;i;--i){
int w=q[i];
maxs(md[fa[][w]],md[w]+);
}
cal();
printf("%d\n",ans-);
return ;
}
bzoj4928: 第二题的更多相关文章
- 【BZOJ4928】第二题 树hash+倍增
[BZOJ4928]第二题 Description 对于一棵有根树,定义一个点u的k-子树为u的子树中距离u不超过k的部分. 注意,假如u的子树中不存在距离u为k的点,则u的k-子树是不存在的. 定义 ...
- 05:统计单词数【NOIP2011复赛普及组第二题】
05:统计单词数 总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
- 常见面试第二题之什么是Context
今天的面试题,也就是我们常见面试题系列的第二题,我们来讲一讲android中的context.我相信大家android开发者一定对于这个context非常熟悉,肯定都有使用过,肯定没有没使用过的.但是 ...
- 《学习OpenCV》练习题第五章第二题abc
代码: #include <stdio.h> #include <opencv/highgui.h> #include <opencv/cv.h> #include ...
- 《学习OpenCV》练习题第四章第二题
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- CSDN挑战编程——《金色十月线上编程比赛第二题:解密》
金色十月线上编程比赛第二题:解密 题目详情: 小强是一名学生, 同一时候他也是一个黑客. 考试结束后不久.他吃惊的发现自己的高等数学科目竟然挂了,于是他果断入侵了学校教务部站点. 在入侵的过程中.他发 ...
- NOIP2005-普及组复赛-第二题-校门外的树
题目描述 Description 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...
- 【gdoi2018 day2】第二题 滑稽子图(subgraph)(性质DP+多项式)
题目大意 [gdoi2018 day2]第二题 滑稽子图(subgraph) 给你一颗树\(T\),以及一个常数\(K\),对于\(T\)的点集\(V\)的子集\(S\). 定义\(f(S)\)为点集 ...
- 【LOJ#6066】「2017 山东一轮集训 Day3」第二题(哈希,二分)
[LOJ#6066]「2017 山东一轮集训 Day3」第二题(哈希,二分) 题面 LOJ 题解 要哈希是很显然的,那么就考虑哈希什么... 要找一个东西可以表示一棵树,所以我们找到了括号序列. 那么 ...
随机推荐
- 软工实践团队项目-"智能聊天机器人"简介
"智能聊天机器人"项目 目前已确定的团队人员:张扬.俊彦.韫月.地秀.泽波.李翔.文婧.俞明.加伟(排名不分先后) 队伍已满,没有再招人的打算(#^.^#) 我们的想法 你有用过智 ...
- mdadm 创建md 删除md步骤
最近在使用mdadm创建和删除RAID设备.但是在创建和删除过程中会出现创建md0重启后变成md127,删除md127重启后又重新出现的状况.在网上搜索了一下,总结如下: 创建: 1. mdad ...
- Linux IO模式-阻塞io、非阻塞io、多路复用io
一 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进程的阻塞 - 文件描述符 - 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对3 ...
- 3.1 shell简介、变量、运算符
小知识: ipcs可以查看系统中创建的ipc进程间通信资源,例如信号量.共享内存等.示例如下: 什么是shell? shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程 ...
- magento的必备插件(转)
标签: 插件 magento magento插件 必备插件 Magento插件 ,插件,我要常见Magento必备插件 .. 都是免费的Magento插件,多而杂,乡亲们自己挑~~ [因收集而强大 & ...
- chapter02 K近邻分类器对Iris数据进行分类预测
寻找与待分类的样本在特征空间中距离最近的K个已知样本作为参考,来帮助进行分类决策. 与其他模型最大的不同在于:该模型没有参数训练过程.无参模型,高计算复杂度和内存消耗. #coding=utf8 # ...
- exec函数簇
转自:http://www.cppblog.com/prayer/archive/2009/04/15/80077.html 也许有不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既 ...
- 93服务器上获取json数据
jdf u -p上传html文件,上传到page域名下:jdf u 上传css和js 上传到misc域名下: json数据放在html下,因为ajax请求是按照html路径走的,所以json数据放在h ...
- 转-spring boot web相关配置
spring boot web相关配置 80436 spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何w ...
- MySQL表类型MyISAM/InnoDB的区别(解决事务不回滚的问题)(转)
本文参考: http://mysqlpub.com/thread-5383-1-1.html http://blog.csdn.net/c466254931/article/details/53463 ...