【2017中国大学生程序设计竞赛 - 网络选拔赛】A Secret
【链接】http://acm.hdu.edu.cn/showproblem.php?pid=6153
【题意】
【题解】
【错的次数】
【反思】
【代码】
- #include <bits/stdc++.h>
- using namespace std;
- #define lson l,m,rt<<1
- #define rson m+1,r,rt<<1|1
- #define LL long long
- #define rep1(i,a,b) for (int i = a;i <= b;i++)
- #define rep2(i,a,b) for (int i = a;i >= b;i--)
- #define mp make_pair
- #define pb push_back
- #define fi first
- #define se second
- #define ms(x,y) memset(x,y,sizeof x)
- #define ri(x) scanf("%d",&x)
- #define rl(x) scanf("%lld",&x)
- #define rs(x) scanf("%s",x)
- #define oi(x) printf("%d",x)
- #define ol(x) printf("%lld",x)
- #define oc putchar(' ')
- #define os(x) printf(x)
- #define all(x) x.begin(),x.end()
- #define Open() freopen("F:\\rush.txt","r",stdin)
- #define Close() ios::sync_with_stdio(0)
- typedef pair<int,int> pii;
- typedef pair<LL,LL> pll;
- const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
- const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
- const double pi = acos(-1.0);
- const int N=1e6;
- const LL MOD = 1e9+7;
- int Next[N+10],extend[N+10],lent,lens;
- char S[N+10],T[N+10];
- void makenext(int m){
- int a = 0;
- Next[0] = lens;
- while(a < lens - 1 && S[a] == S[a + 1]) a++;
- Next[1] = a;
- a = 1;
- for(int k = 2; k < lens; k ++) {
- int p = a + Next[a] - 1,L = Next[k - a];
- if( (k - 1) + L >= p) {
- int j = (p - k + 1) > 0 ? (p - k + 1) : 0;
- while(k + j < lens && S[k + j] == S[j]) j++;
- Next[k] = j;
- a = k;
- } else
- Next[k] = L;
- }
- }
- void GetNext(const char *T){
- int a=0;
- int MinLen = lens < lent ? lens : lent;
- while(a < MinLen && S[a] == T[a] ) a++;
- extend[0]=a;
- a=0;
- for(int k=1;k < lent;k++){
- int p=a+extend[a]-1,L = Next[k-a];
- if((k-1)+L>=p){
- int j=(p-k+1)>0? (p-k+1):0;
- while(k + j < lent && T[k+j] == S[j]) j++;
- extend[k]=j;
- a=k;
- }
- else extend[k]=L;
- }
- }
- int main(){
- //Open();
- int TT;
- ri(TT);
- while (TT--){
- rs(T),rs(S);
- lent = strlen(T),lens = strlen(S);
- reverse(T,T+lent),reverse(S,S+lens);
- makenext(lens);
- GetNext(T);
- LL sum = 0;
- rep1(i,0,lent-1){
- //extend[i] = min(extend[i],lens);
- // 1 + 2 + .. extend[i]
- sum = (sum + 1LL*(1 + extend[i])*extend[i]/2)%MOD;
- }
- ol(sum);puts("");
- }
- return 0;
- }
【2017中国大学生程序设计竞赛 - 网络选拔赛】A Secret的更多相关文章
- HDU 6154 - CaoHaha's staff | 2017 中国大学生程序设计竞赛 - 网络选拔赛
/* HDU 6154 - CaoHaha's staff [ 构造,贪心 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 整点图,每条线只能连每个方格的边或者对角线 问面积大于n的 ...
- HDU 6150 - Vertex Cover | 2017 中国大学生程序设计竞赛 - 网络选拔赛
思路来自 ICPCCamp /* HDU 6150 - Vertex Cover [ 构造 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 给了你一个贪心法找最小覆盖的算法,构造一组 ...
- HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛
普通的数位DP计算回文串个数 /* HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 2-36进制下回文串个数 */ ...
- HDU 6154 CaoHaha's staff(2017中国大学生程序设计竞赛 - 网络选拔赛)
题目代号:HDU 6154 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6154 CaoHaha's staff Time Limit: 2000/1 ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6155 Subsequence Count 矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6155 题意: 题解来自:http://www.cnblogs.com/iRedBean/p/73982 ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6154 CaoHaha's staff(几何找规律)
Problem Description "You shall not pass!"After shouted out that,the Force Staff appered in ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6152 Friend-Graph(暴力搜索)
题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=6152 Problem Description It is well known that small ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 1004 HDU 6153 A Secret (字符串处理 KMP)
题目链接 Problem Description Today is the birthday of SF,so VS gives two strings S1,S2 to SF as a presen ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 1005 HDU 6154 CaoHaha's staff (找规律)
题目链接 Problem Description "You shall not pass!" After shouted out that,the Force Staff appe ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 1003 HDU 6152 Friend-Graph (模拟)
题目链接 Problem Description It is well known that small groups are not conducive of the development of ...
随机推荐
- CentOS下安装C/C++开发工具包的最佳方式
如果你使用的是 Fedora, Red Hat, CentOS, 或者 Scientific Linux 系统,使用下面的命令安装GNU的C/C++开发包和编译器. # yum groupinstal ...
- Vsftp权限控制(持续增加中)
把用户限制在自己的home目录中,例如限制用户Leon只能访问/home/Leon目录下的文件,不允许访问上级目录. 先打开配置文件 vi /etc/vsftpd/vsftpd.conf 第一种方法: ...
- HDU 4358 Boring counting dfs序+莫队算法
题意:N个节点的有根树,每个节点有一个weight.有Q个查询,问在以u为根的子树中,有恰好出现了K次的weight有多少种. 这是第一次写莫队算法,之前也只是偶有耳闻. 看了别人的代码打的,还是贴上 ...
- Sub Thread to update main Thread (UI)
Sub Thread to update main Thread (UI) main Thread : A has Hander.HandleMessage() to process the & ...
- window下搭建Vue.Js开发环境
一.安装node.js.https://nodejs.org/en/download/ 最新包会自动安装npm 二.安装完node之后,npm包含的很多依赖包是部署在国外的,在天朝,大家都知道下载速度 ...
- 10G安装DataGuard
最后更新时间:2013年8月4日,星期日 ★ oracle 10G安装环境 数据库软件安装环境不详细描述,网上到处有这方面资料,下面只简单描述下. 也可参考官方文档: http://docs.orac ...
- 【Docker入门】
目录 Linux容器 Docker的优势 Docker三大概念 安装使用Docker 补充知识 [Docker入门] 发布文章 "qq_41964425" @ *** 所谓Dock ...
- Django_高级扩展
- Hadoop for .NET Developers
Hadoop for .NET Developers(一):理解Hadoop 这些年来,大数据已经成为分析业界的兴奋源头.对于这个博客系列的目的,我将松散定义这个术语指的重点是从数据核心业务系统里数据 ...
- 【shell学习】经常使用条件推断-字符,数字,文件
IF 推断 之前也写过简单的shell脚本,也不是转职运维.和系统相关的工作比較少.所以不怎么熟练. 近期因为系统总是出现各种乱七八糟的问题,也没有人来协助.仅仅好自己写shell脚本了,都是些基础的 ...