[NOI2015]品酒大会

2023-11-02 04:18
文章标签 大会 noi2015 品酒

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

传送门
先对这个字符串求一下SA
考虑SA数组中第i位,暴力计算贡献就是向后枚举,然后计算枚举到的位与第i位之间height的最小值,然后对r==min(height)的贡献就是这一对数并且可以用他们的权值之积可以更新最大值
考虑height较大的是不会对height较小的有贡献,就可以从height大的到height小的依次计算
可以保证height较大的形成的集合通过当前height连在一起height最小值为当前height(已经排过序了)
可以用并查集维护
时间复杂度O(nlogn)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=300000+20;
typedef long long ll;
ll rnk[maxn],tp[maxn],sa[maxn],c[maxn];
ll height[maxn];
int fa[maxn];
char A[maxn];
ll maxx[maxn];
ll minn[maxn];
ll num[maxn];
ll ans1[maxn];
ll ans2[maxn];
int n;
ll v[maxn];
int tmp[maxn];
inline bool cmp(ll *a,int i,int j){int O1=sa[i]+j<=n?a[sa[i]+j]:-1;int O2=sa[i-1]+j<=n?a[sa[i-1]+j]:-1;return O1==O2&&a[sa[i]]==a[sa[i-1]];
}
inline void get_sa(){int m=256;ll *x=rnk,*y=tp;for(int i=1;i<=n;i++)x[i]=A[i],y[i]=A[i];for(int i=0;i<=m;i++)c[i]=0;for(int i=1;i<=n;i++)c[x[i]]++;for(int i=1;i<=m;i++)c[i]+=c[i-1];for(int i=n;i>=1;i--)sa[c[x[i]]--]=i;for(int j=1;j<=n;j<<=1){ll p=0;for(int i=n-j+1;i<=n;i++)y[++p]=i;for(int i=1;i<=n;i++)if(sa[i]>j)y[++p]=sa[i]-j;for(int i=0;i<=m;i++)c[i]=0;for(int i=1;i<=n;i++)c[x[y[i]]]++;for(int i=1;i<=m;i++)c[i]+=c[i-1];for(int i=n;i>=1;i--)sa[c[x[y[i]]]--]=y[i];p=1;swap(x,y);x[sa[1]]=1;for(int i=2;i<=n;i++)x[sa[i]]=cmp(y,i,j)?p:++p;m=p;if(m>=n){//printf("%d\n",j);break;}}
}
inline bool comp(int x,int y){return height[x]>height[y];
}
inline void get_height(){for(int i=1;i<=n;i++)  rnk[sa[i]]=i;  int h=0;  for(int i=1;i<=n;i++){  --h=h<0?0:h;  int u=sa[rnk[i]-1];  while(A[u+h]==A[i+h])  h++;  height[rnk[i]]=h;  }  
}
inline int find(int x){if(fa[x]==x)return x;return fa[x]=find(fa[fa[fa[x]]]);
}
inline void calc(int x){int l=find(x-1),r=find(x);ans1[height[x]]+=num[l]*num[r];ans2[height[x]]=max(ans2[height[x]],max(maxx[l]*maxx[r],minn[l]*minn[r]));fa[l]=r;maxx[r]=max(maxx[r],maxx[l]);minn[r]=min(minn[r],minn[l]);num[r]+=num[l];
}
int main(){//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);scanf("%d",&n);for(int i=0;i<n;i++)ans2[i]=-(1LL<<61);scanf("%s",A+1);for(int i=1;i<=n;i++)scanf("%lld",&v[i]);get_sa();get_height();for(int i=1;i<=n;i++){fa[i]=tmp[i]=i;maxx[i]=v[sa[i]];num[i]=1;minn[i]=v[sa[i]];}sort(tmp+1,tmp+n+1,comp);for(int i=1;i<=n;i++)calc(tmp[i]);for(int i=n-2;i>=0;i--){ans1[i]+=ans1[i+1];ans2[i]=max(ans2[i],ans2[i+1]);}for(int i=0;i<n;i++){if(!ans1[i])ans2[i]=0;printf("%lld %lld\n",ans1[i],ans2[i]);}
return 0;
}

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



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

相关文章

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

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

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

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

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

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

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日不见不散

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

我司总经理张戈参加第十届中国车联网大会暨智慧交通博览会

我司总经理张戈参加第十届中国车联网大会暨智慧交通博览会 第十届中国(大湾区)车联网大会暨智慧交通博览会于8月23日隆重举行,此次大会聚焦于前沿技术、行业热点、产业生态以及企业创新等多个方面。会议深入探讨了“车路云一体化”、5G技术、人工智能、大数据在车联网和智慧交通中的应用,涉及的热点话题包括低速无人驾驶、汽车数据出海安全和低空产业发展等。为推动产业融合,会议通过展示成果、倡议成立“广东

2024 年 IBM 量子开发者大会:等你来

在 2024 年 IBM Quantum™ 开发者大会上,与会者将获得 IBM Quantum 尖端工具和即将推出的路线图更新的独家、亲身预览,所有这些都围绕一个主题 — — Qiskit 的性能。 2024 年 IBM 量子开发者大会 在此申请 重要日期 7 月 24 日: 开放申请 8 月 12 日: 向参会者发送首轮录取通知书 9 月 30 日: 申请截止 10