首页 > 其他分享 >[AHOI2013] 差异

[AHOI2013] 差异

时间:2024-01-30 17:22:56浏览次数:29  
标签:int 差异 AHOI2013 long t1 500005

点击查看代码
#include <bits/stdc++.h>
using namespace std;
int sa[500005];
int rk[20][500005],w,p[25],r[500005],h[500005];
stack<int>s1;
stack<int>s2; 
long long n;
struct t1
{
	char c;
	int id;
}t[500005];
bool cmp1(t1 a,t1 b)
{
	return a.c<b.c;
}
bool cmp2(int a,int b)
{
	if(rk[w-1][a]!=rk[w-1][b])
	{
		return rk[w-1][a]<rk[w-1][b];
	}
	return rk[w-1][min(a+p[w-1],(int)n+1)]<rk[w-1][min(b+p[w-1],(int)n+1)];
}
int main()
{
	string s;
	cin>>s;
	n=s.size();
	for(int i=1;i<=n;i++)
	{
		t[i].c=s[i-1];
		t[i].id=i;
		sa[i]=i;
	}
	p[0]=1;
	for(int i=1;i<=20;i++)
	{
		p[i]=p[i-1]*2;
	}
	sort(t+1,t+n+1,cmp1);
	int cnt=0;
	t[0].c=' ';
	for(int i=1;i<=n;i++)
	{
		if(t[i].c!=t[i-1].c)
		{
			cnt++;
		}
		rk[0][t[i].id]=cnt;
	}
	for(int i=1;i<=19;i++)
	{
		w=i;
		sort(sa+1,sa+n+1,cmp2);
		cnt=0;
		for(int j=1;j<=n;j++)
		{
			if(rk[w-1][sa[j]]!=rk[w-1][sa[j-1]]||rk[w-1][min(sa[j]+p[w-1],(int)n+1)]!=rk[w-1][min(sa[j-1]+p[w-1],(int)n+1)])
			{
				cnt++;
			}
			rk[w][sa[j]]=cnt;
		}
	}
	for(int i=1;i<=n;i++)
	{
		r[i]=rk[19][i];
	}
	int k=0;
	for(int i=1;i<=n;i++)
	{
		if(r[i]==1)
		{
			h[1]=0;
			k=0;
			continue;
		}
		while(i+k-1<n&&sa[r[i]-1]+k-1<n&&s[i+k-1]==s[sa[r[i]-1]+k-1])
		{
			k++;
		}
		h[r[i]]=k;
		if(k)
		{
			k--;
		}
	}
	long long ans=(1+n)*n/2*(n-1),cur=0;
	for(int i=1;i<=n;i++)
	{
		while(!s1.empty()&&h[i]<h[s1.top()])
		{
			cur=cur-h[s1.top()]*s2.top();
			s1.pop();
			s2.pop();
		}
		if(s2.empty())
		{
			s2.push(i-1);
		}
		else
		{
			s2.push(i-1-(s1.top()-1));
		}
		s1.push(i);
		cur=cur+h[i]*s2.top();
		ans=ans-cur*2;
	}
	cout<<ans<<endl;
	return 0;
}

标签:int,差异,AHOI2013,long,t1,500005
From: https://www.cnblogs.com/watersail/p/17997536

相关文章

  • 差异性分析汇总
    在做科研写论文的时候,我们总会听说要对数据进行差异性分析,那么何为差异性分析?差异性分析常用的方法有哪些?这些方法应该如何进行分类?如何选择?差异性分析的数据格式是怎么样的?软件如何操作、分析结果如何解读呢?今天我们通过这篇文章,对这些问题一一进行解答。一、什么是差异性分析?1......
  • 大模型的有害性(性能差异、社会偏见和刻板印象、有害信息、虚假信息)
    新兴技术的危害回顾历史,从过往历史中的其他领域中的危害、安全和伦理问题的防御进行了解。首先考虑一些在具有成熟的危害和安全传统的学科中使用的高层次思想和方法,有助于对当前AI领域有所借鉴。①贝尔蒙特报告(1979年编写,概述了三个原则——尊重人员、善行和公正)和IRB(审查和批......
  • 两组数据比较差异
    背景:两组数据,NC(50*1)和EMCI(28*1)的熵值,即每个受试者有一个值。问题:在该指标下,两组人群是否有显著差异?工具:python中计算出来的两组向量先进行拼接,后保存到excel表格中,SPSS-》独立样本t检验方法注意:1.excel要整理成规定格式: 2.spss中导入数据表,采用分析-比较平均值-独立样......
  • 【SQL】SQL Server还原完整备份和差异备份的操作过程
    还原数据库遇到这个提示 学习下差异备份原文链接:https://blog.csdn.net/david_520042/article/details/1297505651.首先右键数据库,点击还原数据库:1、还原完整数据库,选择好完整数据库的备份文件,在【选项】中,【还原选项】选择覆盖现有数据库,【恢复状态】选择第二个,点击确定。......
  • Concat、Push、Spread syntax性能差异对比
    今天在力扣上做了一道数组扁平化的题,按理来说,应该熟能生巧了,但是在使用concat时候超出了时间限制,使用push可以通过,代码如下:/***@describe使用concat,超出时间限制*@param{Array}arr*@param{number}depth*@return{Array}*/varflat=function(arr,n){......
  • PCB与PCBA的差异?
    在电子制造业中,电路板起着至关重要的作用。电路板(PCB)和电路板组装(PCBA)是电子产品制造过程中的两个关键环节。虽然它们看起来很相似,但实际上它们有着许多的差异。本文将深入探讨PCB与PCBA之间的差异,并详细解释它们各自的特点和作用。首先,让我们来了解一下PCB的概念。它是一个非常重......
  • C# 两个字符串比较并储存差异
    DimBeforeValueASString="123456789"DimAfterValueASString="321465798"'用List储存差异下标,两者比对的值DimdifferencesAsNewList(Of(IndexAsInteger,BeforeAsChar,AfterAsChar))()ForiAsInteger=0ToBeforeValue.......
  • Vue3与Vue2的深度对比:你不可不知的差异!
    Vue3框架的优点特点首次渲染更快diff算法更快内存占用更少打包体积更小更好的Typescript支持CompositionAPI 组合API一、生命周期对于生命周期来说,整体上变化不大,只是大部分生命周期钩子名称上+“on”,功能上是类似的。不过有一点需要注意,Vue3在组合式API(CompositionAPI,下......
  • pg数据库和Oracle语法哪里有差异
    PostgreSQL(简称为PG)和Oracle是两种不同的关系型数据库管理系统,它们在语法和特性方面存在一些差异。以下是一些常见的差异:数据类型:两者支持的数据类型有一些差异,例如PostgreSQL支持数组类型和范围类型,而Oracle不支持。字符串引号:在PostgreSQL中,可以使用单引号或双引号表示字......
  • 中国企业的三种选择:做生态,做平台,还是做隐形冠军? 低成本、差异化、聚焦
     隐形冠军的核心能力是被集成能力,像一个不可或缺的插件,能让所有的平台或生态来集成我,平台或生态如果不集成我,他们自身就没有竞争力。作者:苗兆光(中国人民大学管理学博士、华夏基石高级合伙人)不管在哪个行业,能做成生态型、平台型的企业只能有那么几家,大量的是那些被生态、被平台......