[bzoj3926][广义SAM]诸神眷顾的幻想乡

SAP MIRO过账后凭证行项目拆分实战:用SMOD增强FMRESERV解决多行应付拆分与尾差处理 本文详细介绍了在SAP财务模块中,如何通过SMOD增强FMRESERV实现MIRO过账后的会计凭证行项目拆分,特别是针对多行应付拆分与尾差处理的解决方案。文章深入解析了业务场景、技术架构设计要点,并提供了完整的实现代码和实战技巧,帮助财务人员提升数据处理效率和准确性。 阅读详情

Description

幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。

粉丝们非常热情,自发组织表演了一系列节目给幽香看。幽香当然也非常高兴啦。
这时幽香发现了一件非常有趣的事情,太阳花田有n块空地。在过去,幽香为了方便,在这n块空地之间修建了n-1条边将它们连通起来。也就是说,这n块空地形成了一个树的结构。
有n个粉丝们来到了太阳花田上。为了表达对幽香生日的祝贺,他们选择了c中颜色的衣服,每种颜色恰好可以用一个0到c-1之间的整数来表示。并且每个人都站在一个空地上,每个空地上也只有一个人。这样整个太阳花田就花花绿绿了。幽香看到了,感觉也非常开心。
粉丝们策划的一个节目是这样的,选中两个粉丝A和B(A和B可以相同),然后A所在的空地到B所在的空地的路径上的粉丝依次跳起来(包括端点),幽香就能看到一个长度为A到B之间路径上的所有粉丝的数目(包括A和B)的颜色序列。一开始大家打算让人一两个粉丝(注意:A,B和B,A是不同的,他们形成的序列刚好相反,比如红绿蓝和蓝绿红)都来一次,但是有人指出这样可能会出现一些一模一样的颜色序列,会导致审美疲劳。
于是他们想要问题,在这个树上,一共有多少可能的不同的颜色序列(子串)幽香可以看到呢?
太阳花田的结构比较特殊,只与一个空地相邻的空地数量不超过20个。

Input

第一行两个正整数n,c。表示空地数量和颜色数量。

第二行有n个0到c-1之间,由空格隔开的整数,依次表示第i块空地上的粉丝的衣服颜色。(这里我们按照节点标号从小到大的顺序依次给出每块空地上粉丝的衣服颜色)。
接下来n-1行,每行两个正整数u,v,表示有一条连接空地u和空地v的边。

Output

一行,输出一个整数,表示答案。

Sample Input

7 3

0 2 1 2 1 0 0

1 2

3 4

3 5

4 6

5 7

2 5

Sample Output

30

HINT

对于所有数据,1<=n<=100000, 1<=c<=10。

对于15%的数据,n<=2000。

另有5%的数据,所有空地都至多与两个空地相邻。

另有5%的数据,除一块空地与三个空地相邻外,其他空地都分别至多与两个空地相邻。

另有5%的数据,除某两块空地与三个空地相邻外,其他空地都分别至多与两个空地相邻

题解

广义SAM裸题
题里有一个很有趣的性质:叶子节点不超过20个
我们可以把每个叶子节点都作为根,那么原树就变成了一棵“Tire”树(假装他是吧2333)。由于广义SAM可以识别Tire节点到根的所有串。再想想,能走的路径其实就是叶子节点到树内任意一点中的子串啦。这时候叶子节点作为Tire的根,树内任意一点作为Tire节点。对于这20个Tire构建广义后缀自动机,直接建在一起就可以了
广义后缀自动机:你就BFS建图,搜到一个节点的时候把last设为这个节点的父亲,然后跟狭义后缀自动机一样讨论建
最后枚举每个状态处理一下该状态下有的子串数即可

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
struct SAM
{
    int dep,parent,son[11];
}tr[4100000];int cnt,root,LAST;
int add(int x)
{
    int np=++cnt,p=LAST;
    tr[np].dep=tr[p].dep+1;
    while(p && tr[p].son[x]==0)tr[p].son[x]=np,p=tr[p].parent;
    if(p==0)tr[np].parent=root;
    else
    {
        int q=tr[p].son[x];
        if(tr[q].dep==tr[p].dep+1)tr[np].parent=q;
        else
        {
            int nq=++cnt;
            tr[nq]=tr[q];tr[nq].dep=tr[p].dep+1;
            tr[q].parent=tr[np].parent=nq;
            while(p && tr[p].son[x]==q)tr[p].son[x]=nq,p=tr[p].parent;
        }
    }
    return np;
}
struct node
{
    int x,y,next;
}a[210000];int len,last[110000];
void ins(int x,int y)
{
    len++;
    a[len].x=x;a[len].y=y;
    a[len].next=last[x];last[x]=len;
}
int n,c,col[110000],ru[110000];
struct Anode
{
    int pos,x;
}list[210000];
int head,tail;
bool vis[210000];
void add_SAM(int st)
{
    memset(vis,true,sizeof(vis));
    LAST=root;head=1;tail=2;
    vis[st]=false;
    Anode tmp;tmp.x=st;
    tmp.pos=add(col[st]);
    list[1]=tmp;head=1;tail=2;
    while(head!=tail)
    {
        tmp=list[head];
        int x=tmp.x;
        for(int k=last[x];k;k=a[k].next)
        {
            int y=a[k].y;
            if(vis[y]==true)
            {
                vis[y]=false;
                Anode num;num.x=y;LAST=tmp.pos;
                num.pos=add(col[y]);
                list[tail++]=num;
            }
        }
        head++;
    }
}
int main()
{
    len=0;memset(last,0,sizeof(last));
    scanf("%d%d",&n,&c);
    for(int i=1;i<=n;i++)scanf("%d",&col[i]);
    for(int i=1;i<n;i++)
    {
        int x,y;scanf("%d%d",&x,&y);ru[x]++;ru[y]++;
        ins(x,y);ins(y,x);
    }
    root=LAST=++cnt;
    for(int i=1;i<=n;i++)if(ru[i]==1)add_SAM(i);
    LL ans=0;
    for(int i=1;i<=cnt;i++)ans+=(LL)tr[i].dep-tr[tr[i].parent].dep;
    printf("%lld\n",ans);
    return 0;
}
SAP MIRO批量发票校验后,应付科目金额拆分与尾差处理的完整配置流程(SMOD FMRESERV + BTE) 本文详细解析了SAP MIRO批量发票校验中应付科目金额拆分与尾差处理的完整配置流程,通过SMOD FMRESERV和BTE增强点实现智能化行项目拆分。文章涵盖业务场景分析、核心实现逻辑、关键配置及性能优化,帮助财务部门高效处理海量采购发票校验,提升核算准确性和工作效率。 阅读详情

相关推荐

Nano 11 25H2 极限精简版 Win11 安装与优化完全指南

当老旧设备或虚拟机运行完整版 Windows 11 显得吃力时,系统精简便成为提升性能的有效手段。精简版系统通过移除 Edge、Cortana、OneDrive 等冗杂组件,大幅降低磁盘占用和后台资源消耗,让轻量化体验成为可能。从 Tiny11 到体积更极致的 Nano 11 25H2,这类方案不仅为老电脑续命,也为特定场景提供了高性价比选择。然而,精简也意味着功能取舍与兼容性挑战,比如驱动安装、运行库补全以及系统更新限制都需要提前了解。本文基于完整实测,详细梳理 Nano 11 25H2 的安装准备、U盘

weixin_34101784的博客 309

BZOJ 3926: [Zjoi20150]诸神眷顾的幻想乡

3926: [Zjoi20150]诸神眷顾的幻想乡 Time Limit:10 SecMemory Limit:512 MBSubmit:438Solved:273 Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。 粉丝们非常热情,自发组织表演了一系列节目给...

weixin_30715523的博客 244

基于SAP的MIRO发票行拆分与科目替代的技术实现

内容概要:本文主要探讨了如何通过对SAP系统的增强,在MIRO(供应商发票输入)过程中解决发票过账或冲销时生成的会计凭证中应付账款行无法按采购订单行拆分的问题。文中详细描述了两个关键增强点的功能与具体实施方法,即在SPLIT_VENDORLINE函数中的增强用于应付行拆分,在FMRESERV中的增强用于应付科目替代,实现了根据不同供应商的账户组设置,从配置表读取并替换原始凭证中相应的应付科目和总账科目,以此满足客户精确记账的需求。

SAP ABAP BAPI_ACC_DOCUMENT_POST 会计凭证抬头和行项目增强ACC_DOCUMENT

BAPI_ACC_DOCUMENT_POST增强抬头和行项目

weixin_45293769的博客 1176

zjoi2015.zip

浙江省选 2015 zjoi 数据 题目zjoi2015.zip 2015浙江省省赛数据。

手把手教你用.NET Reactor 7.3.0保护跨平台.NET应用(含macOS/Rider配置)

本文详细介绍了如何使用.NET Reactor 7.3.0为跨平台.NET应用提供代码保护。文章重点涵盖了在macOS环境下的GUI工具安装、与JetBrains Rider的深度集成配置,并针对Avalonia UI框架提供了专项保护策略和避坑指南,帮助开发者有效防止代码被反编译和破解。

coffee的博客 594

【bzoj3926- [Zjoi2015]诸神眷顾的幻想乡】广义sam

【bzoj3926- [Zjoi2015]诸神眷顾的幻想乡】广义sam 题意:给定一棵树,每个节点有一个颜色,问树上有多少种子串(定义子串为某两个点上的路径),保证叶子节点数<=20。n<=10^5 题解: 叶子节点小于等于20,考虑将每个叶子节点作为根把树给提起来形成一棵trie,然后定义这棵树的子串为从上到下的一个串(深度...

qq_25768269的博客 123

word2vector入门教程

摘要: 网上已经有许多对w2v的介绍了,这里只是做一个简单的概括。下面这篇文章我认为是关于W2V写的比较好的文章,读者有兴趣可以先参考一下: w2v参考文章1 另外一篇是关于Skip-Gram和CBow的介绍。 Skip-Gram&CBOW 逻辑比较清晰的综述文章: 综述文章 数学原理很清晰很短的一篇文章(也有关于负采样的简单说明) 参考文章 1.什么

SCUT_Sam 1万+

bzoj3926 [Zjoi2015]诸神眷顾的幻想乡(广义SAM)

广义后缀自动机,就是多主串后缀自动机,一般是先把多个串建出Trie,然后把Trie树建成SAM,这里的R集合定义为Trie上的节点。至于如何构建,与普通SAM差不多,只不过每次的last是Trie上的父亲在SAM中的节点即可。 但是你如果没建出Trie树,直接去构建SAM,有可能会有在Trie树上重复的节点,你需要把它判掉,否则在SAM上会存在重复的点,统计一些信息时就可能会出锅(对于此题而言,...

Icefox的博客 368

避坑指南:RK3588视频编码与SRT推流实战中,我遇到的5个典型问题及解决方案

本文深度解析RK3588平台视频编码与SRT推流实战中的五个典型问题,包括MIPI摄像头内存对齐、多线程数据传递、FFmpeg时间戳设置、SRT连接参数调优及系统资源监控。提供具体解决方案和优化技巧,帮助开发者高效实现实时视频网络传输。

weixin_28718793的博客 324

python 抖音采集_python爬取抖音视频的实例详解

import requestsimport jsonimport reimport osfrom pprint import pprint as ppimport queueclass DouYin:header = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*...

weixin_35795675的博客 1864

[BZOJ3926][Zjoi2015]诸神眷顾的幻想乡(广义SAM)

如果任意选一个点为根,那么对于一个点uuu,不停地往下走,总会走到一个度数为111的点。 再注意到题目条件:度数为111的点不超过202020个。 这就意味着可以分别以每个度数为111的点为根,在Trie树上构建后缀自动机。 在Trie树上构建后缀自动机,加入点uuu时,需要把lastlastlast设为uuu的父亲对应的节点,其他操作与一般SAM无异。 全部构建后,本质不同的子串个数就是...

女装的你,如此好看! 382

从仿真到现实:BeamDojo双足机器人项目实战指南(附完整配置清单)

本文提供了一份基于BeamDojo项目的双足机器人从仿真训练到现实部署的完整实战指南。详细拆解了硬件选型(如宇树G1、Jetson Orin NX、Livox Mid-360)、Isaac Gym仿真环境搭建、强化学习训练技巧(如双评论家架构、课程学习)以及关键的Sim2Real迁移策略,旨在帮助开发者将前沿研究成果转化为可落地的工程实践。

hhh00的博客 877

bzoj3926: [Zjoi2015]诸神眷顾的幻想乡(广义SAM)

3926: [Zjoi2015]诸神眷顾的幻想乡 题目:传送门 简要题意:给出一棵树,每个点有编号和权值,问任意两个节点直接的路径上所有权值按顺序连起来形成的数列不同的个数(A到B和B到A是不一样的) 题解:    一道广义SAM的入门题目:和之前的生成魔咒差不多,主要在于对SAM的构造。    一开始想dfs把每条链插入,很显然发现是错的,不知道根而且会漏情况。...

weixin_30483495的博客 123

基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端

【代码】基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端。

weixin_42300449的博客 166

SiC MOSFET 失效机制详解

TDDB 指在相对较低电场(通常接近或略高于器件工作电压)下,长时间施加电压导致介电层(如栅氧化物)逐渐退化并最终击穿的现象。与即时击穿(Immediate Breakdown,由强电场直接引起)不同,TDDB 是时间相关的渐进过程,通常发生在数小时、几天甚至数年之后。核心过程:在 MOSFET 中,栅极与衬底之间施加电压时,电子通过量子隧道效应(Tunneling)注入介电层,形成缺陷或陷阱。这些缺陷积累,最终在介电层中形成导电路径(Conductive Path),导致短路和器件失效。统计特性。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 382

【BZOJ 3926】 [Zjoi2015]诸神眷顾的幻想乡 (广义SAM)

3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit:10 SecMemory Limit:512 MBSubmit:974Solved:573 Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。 粉丝们非常热情,自发组织表演了一系列节目...

weixin_30919235的博客 74

Windows原生与WSL2环境下OpenClaw性能与兼容性的对比分析研究

本文对比分析了Windows原生环境与WSL2环境下运行OpenClaw的性能与兼容性。Windows原生环境提供深度系统集成、图形界面支持和硬件加速优势,适合需要Windows生态集成的用户;WSL2则提供接近原生Linux的性能体验,兼容Linux工具链,适合开发者和跨平台需求。文章详细介绍了两种环境下的推荐硬件配置、系统版本选择及必备工具,并提供了具体的部署步骤指南。研究表明,两种环境各有适用场景,用户可根据需求选择最适合的部署方式。

一键难忘的博客 1218

BZOJ3926:[ZJOI2015]诸神眷顾的幻想乡(广义SAM)

Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。 粉丝们非常热情,自发组织表演了一系列节目给幽香看。幽香当然也非常高兴啦。 这时幽香发现了一件非常有趣的事情,太阳花田有n块空地。在过去,幽香为了方便,在这n块空地之间修建了n-1条边将它们连通起来。也就是说,这n块空地形成了一个树的结...

weixin_33998125的博客 85

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【bzoj3926】【Zjoi2015】诸神眷顾的幻想乡

题解: 如果树上某个路径串的端点不是叶子,那么一定是另一个串的子串; 这样只对叶子$dfs$把$20*20$个串插入广义$SAM$就是统计本质不同的串的个数的模板了; 我不太会分析广义$SAM$的空间,但是我知道似乎完全图是有$n-1$条欧拉回路的,所以长度不会超过$2n*(20-1)$,需要卡一卡; 可能后面会补广义的坑吧。。。。 1 #in...

weixin_34163741的博客 138

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【BZOJ 3926】【ZJOI 2015】 诸神眷顾的幻想乡

【BZOJ 3926】【ZJOI 2015】 诸神眷顾的幻想乡没想到陈立杰居然玩旧作… 题意:\;\;\;\;啊?~幻想乡?~一个树状太阳花田上每个点都有人穿着cc种颜色之一的衣服,求让一条树链上的人从一端开始跳起能够带给2600岁生日的幽香多少种不同的惊喜 \;\;\;\;其实就是求这棵树上有多少种不同的字符串…1.1.\;\;\;\;如何对敌?题目告诉我们叶子节点不超过20个, 那么我们以每一

Jazengm的博客 611

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

bzoj3926 [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)

bzoj3926 [Zjoi2015]诸神眷顾的幻想乡 原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=3926 题意: 给定一棵n个节点的树,每个节点有颜色c[i],求这棵树上有多少种不同的子串。叶子结点的数量不超过20。 数据范围 1 题解: 给的就是一棵trie。 因为叶子结点数不超过20,可以依次把每个叶节点提成根,

Bfk的博客 433

【BZOJ3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机

【BZOJ3926】[Zjoi2015]诸神眷顾的幻想乡 Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。 粉丝们非常热情,自发组织表演了一系列节目给幽香看。幽香当然也非常高兴啦。 这时幽香发现了一件非常有趣的事情,太阳花田有n块空地。在过去,幽香为了方便,在这n块空地之...

aodanchui1057的博客 145
上一篇: [bzoj5165][树上倍增]树上倍增
下一篇: [bzoj4010][乱搞]菜肴制作
Rose_max
博客等级 码龄10年 97粉丝 610原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值