技术笔记:SCU4484

简介: 技术笔记:SCU4484

The Graver Robbers' Chronicles


Description


One day, Kylin Zhang and Wu Xie are trapped in a graveyard. They find an ancient piece of parchment with a cipher string.


After discussion and analysis, they find the password is the total number of the cipher string's distinct substrings.


Although Kylin Zhang is powerful and always help his friends get rid of danger, this time he is helpless beacause


he is not good at math and programming.


As a smart Acmer, can you help them solve this problem so that they can escape from this horrible graveyard.


Input


The first line is an integer T stands for the number of test cases.


Then T test case follow.


For each test case there is one string.


Constraints:


T is no bigger than 30.


The length of string is no bigger than 50000.


Every string only contains lowercase letters.


Output


For each test case, output the answer in a single line. one number saying the number of distinct substrings.


Sample Input


2


aaaaa


cacac


Sample Output


5


9


Hint


For test case 2, the distinct substrings of 'cacac' are as follows:


len = 1 : c , a


len = 2 : ca , ac


len = 3 : cac , aca


len = 4 : caca , acac


len = 5 : cacac


Thus, total number of distinct substrings is 9.


分析:字符串的处理问题,查重的时候使用后缀数组就可以了。


算出总的子串 len(len+1)/2


再减去重复的 Height(i)


即可


套用了一下 大大的后缀数组模板,地址:


代码如下:


#include


#include


#include


#define LL long long


#define ULL unsigned long long


using namespace std;


const int MAXN=100010;


//以下为倍增算法求后缀数组


int wa【MAXN】,wb【MAXN】,wv【MAXN】,Ws【MAXN】;


int cmp(int //代码效果参考:http://www.lyjsj.net.cn/wz/art_23208.html

r,int a,int b,int l)

{return r【a】==r【b】&&r【a+l】==r【b+l】;}


/< 传入参数:str,sa,len+1,ASCII_MAX+1 /


void da(const char r【】,int sa【】,int n,int m)


{


int i,j,p,x=wa,y=wb,t;


for(i=0; i

for(i=0; i

for(i=1; i

for(i=n-1; i>=0; i--) sa【--Ws【x【i】】】=i;


/cout["SA"[endl;;


for(int i=0;i<n+1;i++)cout[sa【i】[' ';/


for(j=1,p=1; p

{


for(p=0,i=n-j; i

for(i=0; i=j) y【p++】=sa【i】-j;


for(i=0; i

for(i=0; i

for(i=0; i

//代码效果参考:http://www.lyjsj.net.cn/wz/art_23206.html

for(i=1; i

for(i=n-1; i>=0; i--) sa【--Ws【wv【i】】】=y【i】;


for(t=x,x=y,y=t,p=1,x【sa【0】】=0,i=1; i

x【sa【i】】=cmp(y,sa【i-1】,sa【i】,j)?p-1:p++;


}


return;


}


int sa【MAXN】,Rank【MAXN】,height【MAXN】;


//求height数组


/< str,sa,len /


void calheight(const char r,int sa,int n)


{


int i,j,k=0;


for(i=1; i<=n; i++) Rank【sa【i】】=i;


for(i=0; i

for(k?k--:0,j=sa【Rank【i】-1】; r【i+k】==r【j+k】; k++);


// Unified


for(int i=n;i>=1;--i) ++sa【i】,Rank【i】=Rank【i-1】;


}


int main()


{


char r【MAXN】;


int m,n,t;


LL H,ans;


cint;


while(t--)


{


cinr;


n=strlen(r);


m=127;


da(r,sa,n+1,m+1);


calheight(r,sa,n);


H=n;


ans=(H+1)H/2;


for(int i=2;i<=n;i++)


{


ans-=height【i】;


}


cout[ans[endl;


}


}

相关文章
|
2月前
|
编解码 对象存储 云计算
对象存储 OSS 文档体验有奖评测活动来啦,一起来完成场景体验吧
诚邀对象存储OSS用户参与文档体验评测!活动时间:8月20日至9月25日。完成3 个场景的体验评测并提供真实评分、问题说明/改进建议及体验视频,即可获得200元现金奖励。详情及流程请见活动页面与钉群通知。名额有限,速来参加!
120 4
|
6月前
|
机器学习/深度学习 弹性计算 搜索推荐
灵活选择与创新设想——我对阿里云ECS的付费方式有话说
随着企业越来越多地采用云计算服务,选择适合自身业务场景的付费方式变得至关重要。阿里云ECS作为一种广泛使用的云计算服务,提供了多种付费方式供用户选择,包括按量付费、包年包月、抢占式实例和节省计划。那么本文就来聊聊关于灵活选择和创新设想的阿里云ECS付费方式,并提出对付费方式的设想,并评估其优缺点,以解决不同业务问题。
454 1
灵活选择与创新设想——我对阿里云ECS的付费方式有话说
|
存储 关系型数据库 文件存储
云存储Clouder认证:基于存储产品快速搭建网盘—课时3:主要的存储类型
云存储Clouder认证:基于存储产品快速搭建网盘—课时3:主要的存储类型
|
安全 数据安全/隐私保护 数据中心
无影云桌面教科书级教程(从购买到使用)
本文主要讲阿里云无影云桌面。如何购买云桌面?如何创建用户设置密码?如何登录连接到云桌面?如何访问公网?接下来让我逐一解答,按部就班的来肯定没问题。
无影云桌面教科书级教程(从购买到使用)
|
弹性计算 运维 网络安全
《企业运维之弹性计算原理与实践》——第一章 云网络总览与概述——第一章(下)实验:ECS 云服务器新手上路(下)
《企业运维之弹性计算原理与实践》——第一章 云网络总览与概述——第一章(下)实验:ECS 云服务器新手上路(下)
122 0
|
Web App开发 弹性计算 运维
《企业运维之弹性计算原理与实践》——第一章 云网络总览与概述——第一章(下)实验:ECS 云服务器新手上路(上)
《企业运维之弹性计算原理与实践》——第一章 云网络总览与概述——第一章(下)实验:ECS 云服务器新手上路(上)
155 0
|
域名解析 弹性计算 运维
阿里云轻量应用服务器产品功能及最新套餐收费标准参考
阿里云轻量应用服务器是可快速搭建且易于管理的轻量级云服务器;适用于网站搭建,知识效率管理,云端学习环境,电商建设,论坛社区等场景应用。轻量应用服务器的开发环境配置提供基于单台服务器的应用部署,安全管理,运维监控等服务,一站式提升您的服务器使用体验和效率。
|
弹性计算
《公共云弹性计算最佳实践-省钱窍门之二:抢占式实例》电子版地址
公共云弹性计算最佳实践-省钱窍门之二:抢占式实例
|
弹性计算
《公共云弹性计算最佳实践-省钱窍门之三:突发性能实例》电子版地址
公共云弹性计算最佳实践-省钱窍门之三:突发性能实例
85 0
《公共云弹性计算最佳实践-省钱窍门之三:突发性能实例》电子版地址
|
存储 运维 监控
征文投稿丨基于轻量应用服务器+OSS的中小型应用运维实践
高可用性、资源占用低的中小型项目的运维实践分享。
征文投稿丨基于轻量应用服务器+OSS的中小型应用运维实践
下一篇
无影云桌面