BZOJ 3926: [Zjoi20150]诸神眷顾的幻想乡
3926: [Zjoi20150]诸神眷顾的幻想乡
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 438 Solved: 273
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 <bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 const int maxn = 100010; 5 vector<int>g[maxn]; 6 int du[maxn]; 7 struct SAM { 8 struct node { 9 int son[10],f,len; 10 void init(int _len = 0) { 11 memset(son,-1,sizeof son); 12 f = -1; 13 len = _len; 14 } 15 } e[4000010]; 16 int tot,last; 17 int newnode(int len = 0) { 18 e[tot].init(len); 19 return tot++; 20 } 21 void init() { 22 tot = last = 0; 23 newnode(); 24 } 25 int extend(int p,int c) { 26 int np = newnode(e[p].len + 1); 27 while(p != -1 && e[p].son[c] == -1) { 28 e[p].son[c] = np; 29 p = e[p].f; 30 } 31 if(p == -1) e[np].f = 0; 32 else { 33 int q = e[p].son[c]; 34 if(e[p].len + 1 == e[q].len) e[np].f = q; 35 else { 36 int nq = newnode(); 37 e[nq] = e[q]; 38 e[nq].len = e[p].len + 1; 39 e[np].f = e[q].f = nq; 40 while(p != -1 && e[p].son[c] == q) { 41 e[p].son[c] = nq; 42 p = e[p].f; 43 } 44 } 45 } 46 return np; 47 } 48 LL count(LL ret = 0) { 49 for(int i = 1; i < tot; ++i) 50 ret += e[i].len - e[e[i].f].len; 51 return ret; 52 } 53 } sam; 54 55 int color[maxn]; 56 void dfs(int u,int fa,int p){ 57 int x = sam.extend(p,color[u]); 58 for(int i = g[u].size()-1; i >= 0; --i) 59 if(g[u][i] != fa) dfs(g[u][i],u,x); 60 } 61 int main() { 62 int n,c,u,v; 63 while(~scanf("%d%d",&n,&c)) { 64 sam.init(); 65 for(int i = 0; i <= n; ++i) { 66 g[i].clear(); 67 du[i] = 0; 68 } 69 for(int i = 1; i <= n; ++i) 70 scanf("%d",color + i); 71 for(int i = 1; i < n; ++i){ 72 scanf("%d%d",&u,&v); 73 ++du[u]; 74 ++du[v]; 75 g[u].push_back(v); 76 g[v].push_back(u); 77 } 78 for(int i = 1; i <= n; ++i) 79 if(du[i] == 1) dfs(i,0,0); 80 printf("%lld\n",sam.count()); 81 } 82 return 0; 83 }
View Code
转载于:https://www.cnblogs.com/crackpotisback/p/4912458.html
BZOJ 3926: [Zjoi20150]诸神眷顾的幻想乡相关推荐
- 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 ...
- 【刷题】BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡
Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...
- BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡
这道题首先要读明白题,就是说叶子节点不超过20个,那么我们就可以以每一个叶子节点为根建一个广义后缀自动机,这样就一定能表示出来所有的子串,然后统计一下答案就可以啦. (广义后缀自动机就是把好多串放到一 ...
- 【bzoj3926】[Zjoi20150]诸神眷顾的幻想乡 后缀自动机+trie
Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...
- BZOJ3926: [Zjoi20150]诸神眷顾的幻想乡
这一题有点坑..注意longlong SAM裸题... #include<cstdio> #include<iostream> #include<cstring> ...
- bzoj3926【ZJOI2015】诸神眷顾的幻想乡
3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 790 Solved: 485 [Submit][ ...
- 【BZOJ 3926】【ZJOI 2015】 诸神眷顾的幻想乡
[BZOJ 3926/ZJOI 2015] 诸神眷顾的幻想乡 [广义SA/广义SAM] 没想到陈立杰居然玩旧作- 题意: \;\;\;\;啊?~幻想乡?~一个树状太阳花田上每个点都有人穿着 c c种颜 ...
- [Zjoi2015]诸神眷顾的幻想乡
[Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1537 Solved: 892 Description 幽香 ...
- 【BZOJ3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机
[BZOJ3926][Zjoi2015]诸神眷顾的幻想乡 Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝 ...
最新文章
- 45.2mAP+155FPS! PP-YOLO来了, 精度速度双超YOLOv4
- 【PSO运输优化】基于MATLAB的PSO运输优化算法的仿真
- 如何让FPGA中的SPI与其他模块互动起来
- kafka 集群_单机版kafka集群部署
- PHPStorm自动添加命名空间
- wordvba编程代码大全_面向对象、设计原则、设计模式、编程规范、重构
- leetcode1414. 和为 K 的最少斐波那契数字数目(贪心算法)
- 工作196:注意接收数据的格式
- Continuous Laplacian, Functional Map, Spectral CNN
- 《数据结构》陈越课件重点总结
- 语音信号处理(九)——离散余弦变换
- 计算器如何输出log以2为底的对数(利用对数log换底公式)
- 2022年南京大学计算机考研复试考什么|考研复试时间
- 2022 分布式存储市场调研报告
- 苹果系统备份文件服务器地址,苹果备份文件在哪里?苹果怎样恢复备份
- Flash 特效原理 震动效果
- 优化源于99%的试验和1%的数据决策力
- 动手实践看懂深度学习的DP和DDP
- 友盟 集成到 java web_友盟消息推送SDK集成
- Java实现复数的加减乘除