[NOI2015]品酒大会 [SAM]

2024-01-30 01:48
文章标签 sam 大会 noi2015 品酒

本文主要是介绍[NOI2015]品酒大会 [SAM],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

传送门

其实没有想象中难, 我们知道, 两个串的最长公共后缀就是 parent 树上的LCA 的len

对于出现次数, 枚举每一个 LCA, 然后 siz 乘一下

因为如果 len 出现了, len - 1 也出现了, 所以求一个后缀和

对于最大值, 我们维护子树最大与次大, 因为有负数, 所以还要维护次小与最小

同样对最大值也求一个后缀最大


#include<bits/stdc++.h>
#define N 600050
using namespace std;
typedef long long ll;
const ll inf = 900000000000000000;
int n; char s[N]; ll a[N];
struct Node{ int ch[26], link, len, siz;
} t[N];
ll mx1[N], mx2[N], mi1[N], mi2[N];
ll sum[N], ans[N];
int last, tot;
void Extend(int Id, int c){int cur = ++tot, p = last;mx1[cur] = a[Id]; mx2[cur] = -inf; mi1[cur] = a[Id]; mi2[cur] = inf;t[cur].len = t[p].len + 1; t[cur].siz = 1;for(;p && !t[p].ch[c]; p = t[p].link) t[p].ch[c] = cur;if(!p) t[cur].link = 1;else{int q = t[p].ch[c];if(t[q].len == t[p].len + 1) t[cur].link = q;else{int clone = ++tot; mx1[clone] = mx2[clone] = -inf; mi1[clone] = mi2[clone] = inf;t[clone].link = t[q].link;t[clone].len = t[p].len + 1;for(int i=0; i<26; i++) t[clone].ch[i] = t[q].ch[i];for(;p && t[p].ch[c] == q; p = t[p].link) t[p].ch[c] = clone;t[cur].link = t[q].link = clone;}} last = cur;
}vector<int> v[N];
void mxUpt(ll w, int u){ if(w > mx1[u]) mx2[u] = mx1[u], mx1[u] = w; else if(w > mx2[u]) mx2[u] = w;}
void miUpt(ll w, int u){ if(w < mi1[u]) mi2[u] = mi1[u], mi1[u] = w; else if(w < mi2[u]) mi2[u] = w;}
void dfs(int u){for(int i=0; i<v[u].size(); i++){int son = v[u][i]; dfs(son);sum[t[u].len] += 1ll * t[u].siz * t[son].siz;t[u].siz += t[son].siz;mxUpt(mx1[son], u); mxUpt(mx2[son], u);miUpt(mi1[son], u); miUpt(mi2[son], u);} if(t[u].siz < 2) return;if(mx2[u] != -inf && mi2[u] != inf) ans[t[u].len] = max(ans[t[u].len], max(mx1[u] * mx2[u], mi1[u] * mi2[u]));
}
int main(){scanf("%d%s", &n, s+1); last = tot = 1; mx1[1] = mx2[1] = -inf; mi1[1] = mi2[1] = inf;for(int i=1; i<=n; i++) scanf("%lld", &a[i]);for(int i=n; i>=1; i--) Extend(i, s[i] - 'a');for(int i=2; i<=tot; i++) v[t[i].link].push_back(i);for(int i=1; i<=tot; i++) ans[i] = -inf; dfs(1);for(int i=n-1; i>=0; i--) ans[i] = max(ans[i], ans[i+1]), sum[i] += sum[i+1];for(int i=0; i<n; i++){printf("%lld %lld\n", sum[i], sum[i] ? ans[i] : 0);} return 0;
}

 

这篇关于[NOI2015]品酒大会 [SAM]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658759

相关文章

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 `FeatureExtraction` 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算(`calculateSmoothness()`)2. 标记遮挡点(`markOccludedPoints()`)3. 特征提取(`extractF

支付宝开放平台-开发者社区——「外滩大会-AI能为理财做什么」正在直播

《1000天后的AI金融服务—2024蚂蚁财富论坛》 主办机构:蚂蚁财富 论坛简介: AIGC技术加速落地,为金融服务打开了哪些想象空间?本次财富论坛将围绕这一主题,探讨下一代理财服务的新范式。 论坛议程: 1、思想碰撞:用户需求趋势探讨 2、重磅发布:AIGC焕新理财服务 3、深度展望:1000天后AI金融服务 直播链接: 钉钉直播: 直播链接:直播 二维码: 支付宝开发

Segment Anything Model(SAM)中的Adapter是什么?

在META团队发布的Segment Anything Model (SAM) 中,Adapter 是一种用于提升模型在特定任务或领域上的性能的机制。具体来说,SAM 是一个通用的分割模型,能够处理多种不同类型的图像分割任务,而 Adapter 的引入是为了更好地让模型适应不同的任务需求。 Adapter 的主要功能是: 模块化设计:Adapter 是一种小规模的、可插拔的网络模块,可以在不改

2024-MongoDB中国用户大会

周五下午7个小时高铁从深圳赶到上海,周六一天大会,周天飞回深圳。特种兵行动参加“2024-MongoDB中国用户大会”。,缓了两天终于把素材整理出来了。 这也是首次参加MongoDB相关专题会议,MongoDB出现在我接触的大多数项目中,但一直是辅助型数据库的存在,所以并未关注太多,基本上能用就行。 印象里,MongoDB最大的优势就是JSON存储,基本当某些数据不知道存哪里时,就存Mongo吧

乌云白帽大会笔记

发信息“postMessage”方法 otherWindow.postMessage(message, targetOrigin); otherWindow:指目标窗口,也就是给哪个window发信息,是window.frames 属性 window.open 方法创建的窗口 PostMessage 需要特别严谨验证:输入,origin 如:验证domain 是不是等于 “http:/

沃飞长空联合极氪亮相2024世界动力电池大会

9月1日至2日,2024世界动力电池大会在四川·宜宾举办,沃飞长空与同属吉利控股集团旗下的新时代豪华科技品牌极氪汽车一同亮相。 现场,双方携手展出了AE200电动垂直起降航空器、极氪009光辉版、极氪001,以及极氪能源、金砖电池、威睿电机等产品、服务与核心零部件,通过“低空+地面”的交通网络和“产品+技术”的创新应用,打造一幅未来生态出行的立体画卷,引领低空交通新趋势。 展会现场

全球产品经理大会,充满了金钱的气息!9月20日不见不散

全球产品经理大会 是一个专注于产品经理领域的高端会议,旨在汇聚全球的产品经理、行业专家和企业高管,共同探讨产品创新、管理方法、发展趋势等前沿话题。 权威专家分享:大会邀请来自全球顶尖企业的产品经理、行业专家和技术领袖,分享他们的实战经验和独到见解。前沿话题探讨:围绕产品创新、管理、运营等前沿话题展开深入讨论,为参会者提供丰富的灵感和启示。高质量人脉交流:参会者均为来自全球的产品经理和行业精英,