G.Colorful String(The Preliminary Contest for ICPC Asia Xuzhou 2019)
https://nanti.jisuanke.com/t/4
#include <bits/stdc++.h>
using namespace std;
const int N=6e5+,base =;
typedef unsigned long long ull;
char str[N];
ull hl[N],hr[N],p[N]; int mark[N][]; ull get(ull h[],int l,int r)
{
return h[r]-h[l-]*p[r-l+];
} int k=;
long long getval(int l,int r)
{
if(l==r&&str[r]=='z'+)
return ;
long long sum=;
if(str[l]=='z'+)
l++;
for(int i=;i<=;++i)
{
int temp=(mark[r][i]-l+)/;
if(temp<)
continue;
sum+=temp;
}
return sum;
}
int main()
{ cin>>(str+);
int n=strlen(str+); for(int i=n*;i>;i-=)//重点i-=2 模拟kmp添加一个字符
{
str[i]=str[i/];
str[i-]='z'+;
//中间插一个不需要的数
} n=*n;
p[]=;
for(int i=;i<=n;++i)
{
for(int j=;j<=;++j)
{
mark[i][j]=mark[i-][j];
if(str[i]!='z'+)
mark[i][str[i]-'a'+]=i;
}
}
for(int i=,j=n;i<=n;i++,j--)
{
hl[i]=hl[i-]*base+str[i]-'a'+;//正序的哈希值 ->
hr[i]=hr[i-]*base+str[j]-'a'+;//逆序的哈希值 -> 这个是必要的
p[i]=p[i-]*base;
} long long ans=;
for(int i=;i<=n;i++)//枚举每一个字符作为中点
{
int l=,r=min(i-,n-i);
while(l<r)
{
int mid=l+r+>>;//半径长度 //if(get(hl,i-mid,i-1) != get(hl,i+1,i+mid) )
//判读的确是左右区间的判断 但是 值却都是->方向的
//所以这个就是必须要有逆序的原因 if(get(hl,i-mid,i-) !=get(hr,n-(i+mid)+,n-(i+)+))
{
//如果不符合 肯定是缩小半径
r=mid-;
}
else l=mid;
}
ans+=getval(i-l,i);
}
printf("%lld\n",ans);
return ;
}
1389
解:
字符串hash二分跑回文串。
G.Colorful String(The Preliminary Contest for ICPC Asia Xuzhou 2019)的更多相关文章
- E.XKC's basketball team(The Preliminary Contest for ICPC Asia Xuzhou 2019)
https://nanti.jisuanke.com/t/41387 解: 离散化+线段树. #define IOS ios_base::sync_with_stdio(0); cin.tie(0); ...
- A.Who is better?(The Preliminary Contest for ICPC Asia Xuzhou 2019)
https://nanti.jisuanke.com/t/41383 解: 斐波那契博弈+中国剩余定理. #include <bits/stdc++.h> using namespace ...
- B.super_log(The Preliminary Contest for ICPC Asia Nanjing 2019)
同:https://www.cnblogs.com/--HPY-7m/p/11444923.html #define IOS ios_base::sync_with_stdio(0); cin.tie ...
- F. Greedy Sequence(主席树区间k的后继)(The Preliminary Contest for ICPC Asia Nanjing 2019)
题意: 查找区间k的后继. 思路: 直接主席树. #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include <cstdio&g ...
- H.Holy Grail ( floyd )(The Preliminary Contest for ICPC Asia Nanjing 2019)
题意: 给出一个有向图,再给出6条原来不存在的路径,让你在这6条路径上添加一个最小的数,使图不存在负环. 思路: 直接6遍 floyd 输出就行了. #include <bits/stdc++. ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019
A:Who is better? 题目链接:https://nanti.jisuanke.com/t/41383 题意: 类似于有N个石子,先手第一次不能拿完,每次后手只能拿 1 到 前一次拿的数量* ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 G Colorful String(回文自动机+dfs)
这题建立一棵回文树,然后用dfs搜索答案,但是有一点需要注意,就是打vis的标记时,如果标记为1,那么在好几个节点都对同一个字符i打过标记,此时的搜索从字符i点回溯,回到它的父亲节点,搜索其它的字符, ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 G. Colorful String 回文树
签到提: 题意:求出每一个回文串的贡献 (贡献的计算就是回文串不同字符的个数) 题解: 用回文树直接暴力即可 回文树开一个数组cost[ ][26] 和val[ ] 数组: val[i]表示回文树上节 ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 E XKC's basketball team(排序+二分)
这题其实就是瞎搞,稍微想一想改一改就能过. 排序按值的大小排序,之后从后向前更新node节点的loc值,如果后一个节点的loc大于(不会等于)前一个节点的loc,就把前一个节点的loc值设置为后面的l ...
随机推荐
- DataTable转List,DataTable转为Model对象帮助类
DataTable转List,DataTable转为Model对象帮助类 public class ModelConvertHelper<T> where T : new() { publ ...
- python_bisect模块的使用
这个模块只有几个函数, 一旦决定使用二分搜索时,立马要想到使用这个模块 import bisect L = [1,3,3,6,8,12,15] x = 3 x_insert_point = bisec ...
- DbFunctions 作为 LINQ to Entities 查询的一部分使用时,此方法调用规范 CreateDateTime EDM 函数以创建新的 DateTime 对象。
DbFunctions.CreateDateTime CreateDateTime(year, month,day,hour,minute,second)
- 原生javascript封装动画库
****转载自自己发表于牛人部落专栏的文章**** 一.前言 本文记录了自己利用原生javascript构建自己的动画库的过程,在不断改进的过程中,实现以下动画效果: 针对同一个dom元素上相继发生的 ...
- HearthBuddy炉石兄弟 格雷迈恩
getDecks(); 设置 private void getDecks() { Dictionary<string, int> tmpDeck = new Dictionary<s ...
- DataSet转换为实体类
/// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实 ...
- Rocketmq异步发送消息
package com.bfxy.rocketmq.quickstart; import java.util.List; import org.apache.rocketmq.client.excep ...
- shell 脚本基础与条件判断
#!shell脚本格式决定专业性 #!/bin/bash #filename:脚本名 #author:作者 #date:时间 #脚本作用 脚本的执行方式 #脚本名为wk.sh 绝对路径 /root/ ...
- [Kerberos] Kerberos教程(一)
1 简介 Kerberos协议旨在通过开放和不安全的网络提供可靠的身份验证,其中可能拦截属于它的主机之间的通信.但是,应该知道,如果使用的计算机容易受到攻击,Kerberos不提供任何保证:身份验证服 ...
- 京东商城跨域设置Cookie实现SSO单点登陆过程
可以先看下这边文章:http://blog.chinaunix.net/uid-25508399-id-3431705.html 1.点击首页的登陆按钮跳转到京东的登陆中心https://pass ...