HDU-5785 Manacher+区间处理

保姆级教程:用STM32H743+TJA1042T玩转FDCAN,CubeMX配置1M/5M双速率通信(附完整代码) 本文提供STM32H743与TJA1042T实现FDCAN双速率通信的保姆级教程,详细讲解CubeMX配置1M/5M双速率通信的全过程,包括硬件连接、时钟树配置、过滤器设置及中断管理,并附完整代码示例,助力开发者快速掌握FDCAN高速通信技术。 阅读详情

Interesting

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 349    Accepted Submission(s): 121


Problem Description
Alice get a string S. She thinks palindrome string is interesting. Now she wanna know how many three tuple (i,j,k) satisfy  1≤i≤j<k≤length(S) , S[i..j] and S[j+1..k] are all palindrome strings. It's easy for her. She wants to know the sum of i*k of all required three tuples. She can't solve it. So can you help her? The answer may be very large, please output the answer mod 1000000007.

A palindrome string is a string that is same when the string is read from left to right as when the string is read from right to left.
 

Input
The input contains multiple test cases. 

Each test case contains one string. The length of string is between 1 and 1000000. String only contains lowercase letter.
 

Output
For each test case output the answer mod 1000000007.
 

Sample Input
  
aaa abc
 

Sample Output
  
14 8
 

Author
ZSTU
 

Source


题目链接:

题目大意:
给出一个长度为n(n<=10^6)的串,对于0<i<=j<k<=n,如果s[i,j]和s[j+1,k]都是回文串,则答案加上i*k,最后答案模10^9+7。

解题思路:
在原串上,用L[i]表示以i开始的所有回文串结束位置的和,R[i]表示以i结尾的所有回文串起始位置的和,枚举位置i,每次将L[i]*R[i-1]加上答案即可。
如何得到数组L[i]与R[i]呢,首先用Manacher预处理出以每个位置为中心的回文串的半径,我们发现对于每个位置i,它前面半径内的每个位置j对应的以i为中心的回文串的结束位置在新串中为i*2-j,我们要将这个值加到L上。这里可以采用树状数组的思想,把这个值分为两部分i*2与j,用数组p[i]表示半径,bb1、bb2代表两个标记,每次枚举i,我们只需要bb1[i-p[i]+1]+=i,bb2[i-p[i]+1]++,bb1[i+1]-=i,bb2[i+1]--即可。我们从前往后扫一遍,将bb1与bb2的值分别加到两个和s1与s2中,这样在每个位置s1就代表了上面那个值的第一部分,s2代表了在该位置j处需要减去j的次数。我们的L是定义在原串上的,由于新串在原串相邻字符间插入了'#',所以在计算原串L的时候s1不需要再*2,并且奇偶的情况也得到了统一,于是对于新串上每个偶数位置i对应原串L[i/2]=s1-s2*i/2。同理,可以计算出数组R,总体复杂度为O(n)。

AC代码:
import java.io.*;
import java.util.*;

public class Main {
	static StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	static PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out));
	static int n,len;
	static long ans,mod=(long)1e9+7,s1,s2;
	static char[] ss;
	static int[] pp=new int[2000005];
	static char[] s=new char[2000005];
	static long[] bb1=new long[2000005];
	static long[] bb2=new long[2000005];
	static long[] ll=new long[1000005];
	static long[] rr=new long[1000005];
	static void Manacher()
	{
		Arrays.fill(s,'#');
		for(int i=0;i<n;i++)
			s[i*2+2]=ss[i];
		len=n*2+1;s[0]='$';
		int max=0,id=0;
		for(int i=1;i<=len;i++)
		{
			if(max>i)
				pp[i]=Math.min(pp[id*2-i],max-i);
			else pp[i]=1;
			while(s[i+pp[i]]==s[i-pp[i]])
				pp[i]++;
			if(i+pp[i]>max) { max=i+pp[i];id=i;}
		}
	}

	public static void main(String[] args) throws IOException {
		//Scanner in=new Scanner(System.in);
		while(in.nextToken()!=StreamTokenizer.TT_EOF)
		{
			ss=in.sval.toCharArray();
			n=ss.length;
			Manacher();
			Arrays.fill(bb1,0);
			Arrays.fill(bb2,0);
			for(int i=len;i>0;i--)
			{
				bb1[i-pp[i]+1]+=i;
				bb1[i+1]-=i;
				bb2[i-pp[i]+1]++;
				bb2[i+1]--;
			}
			s1=s2=0;
			for(int i=1;i<=len;i++)
			{
				s1+=bb1[i];s2+=bb2[i];
				if(i%2==0)
					ll[i/2]=(s1-s2*i/2)%mod;
			}
			Arrays.fill(bb1,0);
			Arrays.fill(bb2,0);
			for(int i=len;i>0;i--)
			{
				bb1[i]+=i;
				bb1[i+pp[i]]-=i;
				bb2[i]++;
				bb2[i+pp[i]]--;
			}
			s1=s2=0;
			for(int i=1;i<=len;i++)
			{
				s1+=bb1[i];s2+=bb2[i];
				if(i%2==0)
					rr[i/2]=(s1-s2*i/2)%mod;
			}
			ans=0;
			for(int i=2;i<=n;i++)
				ans=(ans+ll[i]*rr[i-1]%mod)%mod;
			out.println(ans);
		}
		out.flush();
	}
}



论文分享|ECCV2022,PATnet,Cross-Domain Few-Shot Semantic Segmentation,CDFSS新基准,文末有复现教程 这篇论文提出的跨域小样本语义分割(CD-FSS)任务,旨在将源域学习的分割能力迁移到目标域,仅需少量标注样本。针对传统小样本分割方法在跨域场景性能下降的问题,作者提出了基于金字塔锚点变换的网络(PATNet),通过将域相关特征转换为域无关特征,并引入任务自适应微调推理(TFI)提升目标域适应能力。实验表明,PATNet在1-shot和5-shot设置下分别比现有方法提升8.49%和10.61%的准确率。同时,作者构建了CD-FSS基准并设计了任务难度评估指标。代码和数据集已开源,复现难度中等。 阅读详情

相关推荐

3DSlicer冠脉分割实战:从DICOM导入到三维重建的完整流程(附常见问题解决)

本文详细介绍了使用3DSlicer进行冠脉分割的完整流程,从DICOM数据导入到三维重建,涵盖环境配置、视图优化、心脏区域分割及冠脉精细分割等关键步骤。针对常见问题提供实用解决方案,帮助医学影像从业者高效完成心血管结构分析,提升诊断准确性。

weixin_29271053的博客 631

hdu 5785 Interesting(manacher+前缀和)

题目链接:hdu 5785 Interesting 题意: 有一个长度为n的串(n<=10^6),对 1 <= i <= j < k <= length(s).如果[i,j]和[j+1,k]都是回文串。则对答案的贡献为 i*k ,求贡献和。 题解: 详细题解传送门 1 #include<bits/stdc++.h> 2 #def...

weixin_30408309的博客 185

CUDA编译踩坑实录:如何正确设置-gencode参数适配你的GPU算力

本文深入解析CUDA编译中-gencode参数的核心原理与实战配置,帮助开发者解决常见的'Unsupported gpu architecture'错误。通过厘清虚拟架构与真实架构的区别,并提供多版本兼容的CMake配置方案,确保编译出的代码能精准适配不同GPU算力,兼顾性能与广泛兼容性。

weixin_28829903的博客 339

hdu5785--Interesting(manacher)

题意:求给定字符串的三元组(I,J,K)使得S[i..j] 和 S[j+1..k] 都是回文串。求所有满足条件的三元组 ∑(i*k) 题解:求出以j为结尾的回文串起始位置的和记为lv[j],和以j+1为开始的回文串末位置的和rv[j+1] 答案就是∑[j:1-n](lv[j] * rv[j+1]) 因为…… (a+b+c....)*(x+y+z.....) = a*x + a*y + ...

weixin_30920091的博客 116

从零到一:基于Blazor和Elsa Workflows的工作流系统开发实战

本文详细介绍了如何利用Blazor和Elsa Workflows构建高效的工作流系统,从技术选型到生产环境部署,涵盖动态工作流建模、Blazor前端集成及性能优化等核心内容。通过实战案例,展示如何实现订单处理系统的自动化与灵活性,提升企业流程效率。

weixin_26875109的博客 429

HUAWEI华为荣耀MagicBook MateBook B D E X 13 14 16 笔记本MateStation台式机原装Win10出厂Windows11系统

HUAWEI华为MateBookX原装出厂系统恢复原厂系统,型号:MACHC-WAE9LP、EUL-W29P、MACHR-W19L、MACHR-W29、MACHD-WFE9、MRGF-16、MACHR-W19BL、MACHD-WFE9Q、WT-W19、Mach-W19、Mach-W29、WT-W09、WT-W19、MACH-W29等。HUAWEI华为MateBookE原装出厂系统恢复原厂系统,型号:PAK-AL09、GK-W7X、GK-G58、GK-W76、DRC-W76等。

QQ17855069的博客 17万+

Hdu 5785 Interesting(Manacher+区间处理)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5785 思路: 1.L[i]表示以i开始的所有回文的结束位置和,R[i]表示以i位置结尾的所有回文开始位置和,则答案为sigma(R[i-1]*L[i])(x1*y1+x1*y2+...x1*yn+x2*y1+x2*y2+.....x2*yn+......=(x1+x2+....xn)*y1+(x1

哆啦AC梦的博客 739

STM32 ADC+DMA实战:手把手教你驱动XGZP6847A压力传感器(附完整代码)

本文详细介绍了如何使用STM32的ADC和DMA外设驱动XGZP6847A压力传感器,包括硬件连接、ADC配置、DMA高效传输实现以及数据处理与校准方法。通过实战案例和完整代码,帮助开发者快速掌握高精度压力数据采集技术,适用于工业控制和医疗设备等领域。

weixin_42570484的博客 404

hdu5785 Interesting (回文树)

题意: 找出字符串中所有三元组(i,j,k)使得s[i,j]和s[j+1,k]均为回文串。问所有三元组的i*k的和是多少。 分析: 令中间的j固定,然后计算两边所有的i和k。可以计算出∑i∑i\sum i,∑k∑k\sum k,然后这两个和相乘,就是j固定时所有的i*k的和。 对于第j个字符,可以在回文树上计算出,所有以字符j结尾的回文串个数num[j]和这些回文串的长度总和sum[j],...

nbl97 310

BurpSuite+安卓模拟器双保险:避开真机抓包限制的完整配置指南

本文详细介绍了如何通过BurpSuite与安卓模拟器(如雷电、夜神)协同工作,绕过真机抓包限制的完整配置指南。从环境准备、网络拓扑配置到证书部署和流量分析,提供了一套高效的解决方案,帮助安全测试人员稳定捕获手机数据包,提升测试效率。

Apple的专栏 439

T527 uart串口配置导致系统进不去

T527 s_uart串口配置导致系统进不去。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 677

2016多校训练Contest5: 1005 Interesting hdu5785

Problem Description Alice get a string S. She thinks palindrome string is interesting. Now she wanna know how many three tuple (i,j,k) satisfy 1≤i≤jk≤length(S), S[i..j] and S[j+1..k] are all pali

lqybzx的专栏 703

2026 Claude Code 标准化前端UI SKILL——Frontend Design

是 Anthropic 官方开源的技能包,在 Claude 官方插件站中排名第一,超过 52k 的下载量。场景推荐方案快速体验批量安装官方 Skills深度设计策略叠加完整打磨流程集成终端跑claude一句话总结:Frontend Design 不是给 AI 加新能力,而是给 AI 加审美标准。它让 AI 从“能画”变成“会设计”——先想清楚风格,再动手写代码。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 3617

HDU 5785 Interesting (manacher+区间处理)

Interesting Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 595    Accepted Submission(s): 227 Problem Description Alice get a string S

LzyRapX 1900

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HDU-5785 Interesting(Manacher算法+区间处理)

题目大意:给一个字符串,求所有相邻两回文子串的外侧下标之积的和 题目分析:另L[i]为所有以 i 为右端点的回文字串的左端点之和,同理,另R[i]表示所有以 i 为左端点的回文子串的右端点之和。显然,答案为sigma(L[i]*R[i+1]) 其中,1<=i<length(字符串)。求出L和R是关键。先用manacher算法处理出p数组,然后再求出L和R。求L和R的思想(非...

weixin_30629977的博客 143

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

hdu多校赛第5场(hdu5785)

hdu5785 Interesting题意给你个三元组(i,j,k) 满足1≤i≤j解法先跑一遍manacher不多说。我在这里处理了四个数组:C1,C2,C3,C4C1:代表对于下标i的点,他所在的回文串(回文串在他右边)中心下标*2的和C2:代表对于下标i的点,他所在的回文串个数(回文串在他右边)C3:代表对于下标i的点,他所在的回文串(回文串在他左边)中心下标*2的和C4:代表对于下标i的点,

czw's blog 1971

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

HDU5785 Interesting(回文串&&前缀和)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=5787 题意: 找出所有相邻的回文串,将它们最外侧的端点坐标乘积都加起来,(i,j),(j+1,k) 两个回文串,将所有的i*k加和。 思路: 回文串直接用Manacher求解,然后对于所有的回文串都包含许多小的回文串,例如(i,j)回文串同时代表(i+1,j-1)等许多回文串,所以需要将更

MyWorld 1222

HDU5785 Interesting(Manacher + 延迟标记)

题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5785 Description Alice get a string S. She thinks palindrome string is interesting. Now she wanna know how many three tuple (i,j,k) satisfy...

dengliugong3918的博客 183

[HDU 5785] Interesting (Manacher+差分静态区间更新)

HDU - 5785 给定一个字符串 SS,定义三元组 (i,j,k)(i,j,k),其中 1≤i≤j<k≤|S|1\le i\le j <k\le |S| S[i...j]S[i...j]与 S[j+1...k]S[j+1...k]为回文串时,代价为 i×ki\times k 求所有三元组的代价和 首先对 SS求一遍 manacher,然后就能求出所有回文半径 枚举 jj,预处理

MisDeer's blog 691

HDU5785 Interesting

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5785 【题意】已知一个string s,对于求满足s[i,j],s[j+1,k]都是回文串所有i*k的和。 【分析】用Manacher算法获取回文串的长度,相应转换成回文串半径。采用题解的方法,计算以i为起点的所有回文串终点和cntR[i],以及以i为终点的所有回文串起点和cntL

dDarkdawn的博客 568

HDU 5785 Interesting

#include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;iostream&gt; #include&lt;algorithm&gt; using namespace std; typedef long long ll; const ll M=1111111,Mod=1000000007; char c[M],s[M&lt;&lt;1];...

Napoleon2004的博客 256

HDU 5785 Interesting(manacher 前缀和On处理合值)

Interesting Problem Description Alice get a string S. She thinks palindrome string is interesting. Now she wanna know how many three tuple (i,j,k) satisfy 1≤i≤jk≤length(S), S[i..j] and S[j+1..k

每一次AC都是一种感动 788

hdu 5785 manacher回文处理 + 扫描线

分析: 首先考虑遍历所有的两头的i,ki,k,然后去找他们中间的一个点cc,让这个点把str[i...k]str[i...k]且成两段回文串。 这样是可行的,但是复杂度枚举两头已经是O(n2)O(n^2)了。 然后考虑换一个思路,枚举所有的中间的隔代cc,然后以cc为隔代的满足条件的所有回文串的两头。 这样发现,用所有以cc左边元素为结尾的回文串的左边界和乘以以cc右边元素为开始的所有回文串的右

JIBANCANYANG 480

HDU5785 Interesting(manacher+差分数组)

题意:一个串s,如果存在1&lt;=i&lt;=j&lt;k&lt;=|s|,且s[i,..j]和s[j+1,..k]都是回文串,那么对结果的贡献就是i*k。求所有贡献之和。   思路:对于每个位置i,设以i为末尾的回文串的起点分别为s1,s2,...,以i+1为起点的回文串的终点位置分别为t1,t2,....,那么i位置对结果的贡献=s1 * t1 + s1 * t2 +...+ s2 * ...

hcx11333的博客 407

HDU 5785 Interesting(Manacher)

Description 给出一个字符串,问所有满足条件的i*k的和,i和k满足条件是指i到j和j+1到k是回文串 Input 多组用例,每组用例输入一个长度不超过1e6的字符串,以文件尾结束输入 Output 对于每组用例,输出满足条件的i*k的和,结果模1e9+7 Sample Input aaa abc Sample Output 14 8 Solution 首先少不了

ZSQ 543

HDU 5785 Interesting 2016 Multi-University Training Contest 5(Manacher)

题目链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1005&cid=708 题意:对于长度1e6的字符串,某个字串区间[L, R]若可以分割成两个回文字串[L, mid]和[mid + 1, R],那么这个区间的权值为L * R, 不能分割则权值为0, 求所有区间的权值和。 思路:用manacher算法O(n)求出所

kalilili的专栏 680
上一篇: LightOJ-1031 博弈 区间DP
下一篇: HDU-5801 可持久化Trie树
AC_Machine
博客等级 码龄11年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值