博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZROI2018提高day3t3
阅读量:7096 次
发布时间:2019-06-28

本文共 905 字,大约阅读时间需要 3 分钟。

分析

我们对于每一个可以匹配的字符都将其从栈中弹出,然后他的哈希值就是现在栈中的字符哈希一下。然后我们便可以求出对于哪些位置它们的哈希值是一样的,即它们的状态是一致的。而这些点可以求出它们的贡献(这个式子见代码)。而这个式子的意义是对于左括号自然表示哪几个括号组成一个合法序列,而对于右括号则代表以几种不同的排列方式和之前的左括号进行匹配。

代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const long long mod = 1e9+9;long long n,cnt,a[1000100],i,j,ans;unsigned long long p[1000100],q[1000100];char s[1000100];int main(){ scanf("%s",s); n=strlen(s); q[0]=1; p[0]=0; for(i=1;i<=n;i++)q[i]=q[i-1]*1313; for(i=0;i
1&&a[cnt]==a[cnt-1])p[i]=p[i-1]-a[cnt-1]*q[cnt-1],cnt-=2; else p[i]=p[i-1]+a[cnt]*q[cnt]; } sort(p,p+n+1); for(i=0,j=0;i<=n;i=j){ while(j<=n&&p[i]==p[j])j++; ans+=(j-i)*(j-i-1)/2; } cout<
<

转载于:https://www.cnblogs.com/yzxverygood/p/9649996.html

你可能感兴趣的文章
jquery easy ui 学习 (5) windowlayout
查看>>
delegate和protocol
查看>>
DevExpress Report的简单应用
查看>>
Spring AOP Schema aop:config、tx:advice
查看>>
Linux 驱动加载到内核中编译<1>
查看>>
设计模式的饕餮盛宴
查看>>
cocos2d-x3.0 lua学习(一个)
查看>>
SQL_修改表结构
查看>>
嵌入式 linux 查看内存
查看>>
matlab的rem()和mod()函数
查看>>
【POJ3612】【USACO 2007 Nov Gold】 1.Telephone Wire 动态调节
查看>>
RunJS推荐用于个人使用(使用方便JS、css实时预览、编辑、管理等功能)
查看>>
CII-原子
查看>>
定制个性化按钮
查看>>
REST构架风格介绍:状态表述转移
查看>>
Atitit.检测文本文件的编码 自动获取文件的中文编码
查看>>
Linux操作系统桌面环境GNOME和KDE的切换
查看>>
2015第37周三
查看>>
hdu 5312 Sequence(数学推导+线性探查(两数相加版))
查看>>
linux route命令的使用详解 添加永久静态路由 tracert traceroute
查看>>