[Zjoi2015]诸神眷顾的幻想乡
[Zjoi2015]诸神眷顾的幻想乡
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 1537 Solved: 892
Description
幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。
Input
第一行两个正整数n,c。表示空地数量和颜色数量。
Output
一行,输出一个整数,表示答案。
Sample Input
0 2 1 2 1 0 0
1 2
3 4
3 5
4 6
5 7
2 5
Sample Output
HINT
对于所有数据,1<=n<=100000, 1<=c<=10。
思路
代码实现
1 #include<cstdio> 2 const int maxn=1e5+1; 3 int n,m,l,tot; 4 int r[maxn],c[maxn]; 5 int t[maxn<<1],next[maxn<<1],last[maxn]; 6 struct note{int son[12],pr,len;}sam[maxn*20]; 7 void add(int x,int y){t[++l]=y,next[l]=last[x],last[x]=l;} 8 int extend(int x,int p){ 9 int np=++tot; 10 sam[np].len=sam[p].len+1; 11 while(!sam[p].son[x]&&p) sam[p].son[x]=np,p=sam[p].pr; 12 if(p){ 13 int q=sam[p].son[x]; 14 if(sam[q].len==sam[p].len+1) sam[np].pr=q; 15 else{ 16 int nq=++tot; 17 sam[nq]=sam[q]; 18 sam[nq].len=sam[p].len+1; 19 sam[q].pr=sam[np].pr=nq; 20 while(p&&sam[p].son[x]==q) sam[p].son[x]=nq,p=sam[p].pr; 21 } 22 } 23 else sam[np].pr=1; 24 return np; 25 } 26 void dfs(int x,int y,int l){ 27 int la=extend(c[x],l); 28 for(int i=last[x];i;i=next[i]) 29 if(t[i]!=y) dfs(t[i],x,la); 30 } 31 int main(){ 32 int a,b; 33 scanf("%d%d",&n,&m); 34 tot=1; 35 for(int i=1;i<=n;i++) scanf("%d",&c[i]); 36 for(int i=1;i<n;i++){ 37 scanf("%d%d",&a,&b); 38 add(a,b),add(b,a); 39 r[a]++,r[b]++; 40 } 41 for(int i=1;i<=n;i++) if(r[i]==1) dfs(i,0,1); 42 long long ans=0; 43 for(int i=1;i<=tot;i++) ans+=sam[i].len-sam[sam[i].pr].len; 44 printf("%lld\n",ans); 45 return 0; 46 }
转载于:https://www.cnblogs.com/J-william/p/7351597.html
[Zjoi2015]诸神眷顾的幻想乡相关推荐
- 【BZOJ3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机
[BZOJ3926][Zjoi2015]诸神眷顾的幻想乡 Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝 ...
- bzoj 3926 [Zjoi2015]诸神眷顾的幻想乡
3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1381 Solved: 811 [ Subm ...
- bzoj 3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)
3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1009 Solved: 596 [ Subm ...
- [ZJOI2015] 诸神眷顾的幻想乡
P3256[ZJOI2015 Day1]诸神眷顾的幻想乡 时间限制 : 20000 MS 空间限制 : 524288 KB 问题描述 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生 ...
- [bzoj3926][Zjoi2015]诸神眷顾的幻想乡
来自FallDream的博客,未经允许, 请勿转载,谢谢. 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情 ...
- 【刷题】BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡
Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...
- [洛谷P3346][ZJOI2015]诸神眷顾的幻想乡
题目大意:给你一棵$n$个点的树,最多有$20$个叶子节点,问共有几个不同的子串 题解:广义$SAM$,对每个叶子节点深搜一次,每个节点的$lst$设为这个节点当时的父亲,这样就可以时建出来的$SAM ...
- Luogu P3346 [ZJOI2015]诸神眷顾的幻想乡 广义SAM 后缀自动机
题目链接 \(Click\) \(Here\) 真的是好题啊-不过在说做法之前先强调几个自己总是掉的坑点. 更新节点永远记不住往上跳\(p = fa[p]\) 新建节点永远记不住\(len[y] = ...
- BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡
这道题首先要读明白题,就是说叶子节点不超过20个,那么我们就可以以每一个叶子节点为根建一个广义后缀自动机,这样就一定能表示出来所有的子串,然后统计一下答案就可以啦. (广义后缀自动机就是把好多串放到一 ...
最新文章
- word2010多级列表编号变成黑块的解决方案
- [转帖]最值得了解的10大开源技术
- linux 查看cpu_作为高级Java,你应该了解的Linux知识
- Taro+react开发(30)引入静态资源地址
- webview代码实例化_WebView常用类和基本方法详解
- c语言删标点,C程序中文标点惹的祸,你可长点儿心吧
- Google人工智能面试·真·题(附参考答案+攻略)
- php没有输出报错信息的解决
- Iplimage设置感兴趣区域(ROI)
- [T-ARA/筷子兄弟][Little Apple]
- 网友在各自领域中所用到的芯片总结(转载)
- 创建局域网Git服务器
- 头条App项目测试实战(七)实名认证功能用例设计
- 揭秘 手机群控 带来的利益
- 怎么改锁定计算机的背景,电脑修改登录界面背景壁纸的操作方法
- Variant类型在各语言中的参数传递
- ajax传递数组怎么办?
- 望尽天涯路--从理财角度看高可用
- uni-app 使用 jsencrypt
- 关于c语言中 scanf 对多行字符的输入问题
热门文章
- 【建站系列教程】6、.htaccess文件的url重写规则-网页伪静态化
- 人群计数--Single-Image Crowd Counting via Multi-Column Convolutional Neural Network
- vscode 使用ssh密钥登录远程Linux -- vscode remote linux ssh key
- oracle 开窗子句,分析函数和开窗函数
- APUE(第九章)进程关系
- linux磁盘i o跟踪,利用zabbix动态监控磁盘I/O
- 【RocketMQ工作原理】订阅关系的一致性
- Elasticsearch之Mapping
- vue 拷贝 数组_Vue实现对数组、对象的深拷贝、复制
- oracle procedures批量删除带索引条件数据很慢_见微知著,数据库应用设计优化浅谈...