19-10-18-Y
ZJ一下:
感觉能拿到的分都拿到了,至于后来改题就缶了
其实是:太tui导致没改好
TJ:
T1:
正解是$\mathsf{KMP}$,但是广大群众都用了$\mathsf{hash}$……
发现了一个巨的素数,它太好看辣!
$$\underbrace{1111111111111111111}_{19个1}$$
#include <iostream>
#include <cstring>
#include <cstdio>
#define L 1111111
#define LL long long using namespace std; const int Mod=1e9+9,Upbit=4373;//1111111111111111111
int tim,len;
char st[L];
LL hsp[L],hsp2[L];
LL pubh,sths;
LL lva,rva;
LL ans=0; LL ppow(LL a,LL b){
LL res=1;
a%=Mod;
b%=Mod-1;
while(b){
if(b&1)res=res*a%Mod;
a=a*a%Mod;
b>>=1;
}
return res;
}
inline LL tur(const char ch){
return ch-'A'+1;
}
int main(){
// freopen("ccx.in" ,"r",stdin);\
// freopen("ccx.out","w",stdout);
hsp[0]=1;
for(int i=1;i<=1000000;i++)
hsp[i]=hsp[i-1]*Upbit%Mod;
int T;
cin>>T;
while(T--){
memset(hsp2,0,sizeof hsp2);
ans=sths=pubh=0;
scanf("%d%d%s",&tim,&len,st+1);
// puts("Inputend");
for(int i=1;i<=len;i++)
sths=(sths*Upbit%Mod+tur(st[i]))%Mod;
// puts("String hash end");
hsp2[0]=ppow(Upbit,1ll*len*(tim-1));
for(int i=1;i<=len;i++)
hsp2[i]=hsp2[i-1]*Upbit%Mod;
// puts("Hash tim*len end");
for(int i=1;i<tim;i++)
pubh=(pubh*hsp[len]%Mod+sths)%Mod;
// puts("One Hash end");
rva=lva=pubh;
ans=1ll*len*(tim-1);
// puts("Start Che!");
for(int r=1,l=len;r<len;r++,l--){
rva=(rva*Upbit%Mod+tur(st[r]))%Mod;//Add
lva=(lva+hsp2[r-1]*tur(st[l])%Mod)%Mod;
// cout<<r<<" "<<l<<" "<<rva<<" "<<lva<<endl;
if(rva==lva)
ans=max(ans,1ll*r+1ll*len*(tim-1));
// cout<<ans<<endl;
}
// puts("end Che!");
if(ans==0)ans=-1;
printf("%lld\n",ans);
}
}
T2
因为tui改T3而没看
T3
可以使用倍增或是树剖完成。
但是现在方法也没有人成功用树剖AC。
有人成功了嘛,可以在下面评论。
(咕!)
19-10-18-Y的更多相关文章
- 程序员的 Ubuntu 19.10 配置与优化指南
原文地址:程序员的 Ubuntu 19.10 配置与优化指南 0x00 环境 CPU: Intel Core i9-9900k GPU: GeForce RTX 2070 SUPER RAM: DDR ...
- Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)
Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例) 本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署 内网ip 角色 安装软件 ...
- Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)
摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...
- [java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现
题目: 6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少? 10 = 6 + 4 4 18 = 10 + 8 4 + 4 32 = 18 + 14 ...
- First Scrum Meeting (2015/10/18)
会议是在昨晚进行的,本来早就应该写博了,可惜今天校园网炸个不停= =.刚修好就赶紧来发博客. 会议基本要素 会议主题:爬虫项目的核心技术讨论以及项目初期的工作分配 会议时间:2015.10.18 19 ...
- 对于最近的一些日常总结by520(17.10.18)
---天天考试,各种题型都有,学到了很多新的知识,也发现了自己的许多不足---1.首先,自己的搜索需要加强,特别是广搜,10.18的T1裸广搜没有做对.2.数学的思维和一些逻辑问题需要加强,然后就是要 ...
- Unix 网络编程卷一源码编译踩坑记录 ubtutu 19.10
在阅读unpv1时运行源代码的环境配置,这里简单记录一下 源代码里的README 写得挺详细的,但是在Linux 系统的下还没没办法直接编译通过的, 这里我使用的是ubuntu 19.10(在腾讯云1 ...
- 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue
[源码下载] 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue 作者:weba ...
- 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.
Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...
- 下面程序的输出结果是____ A:11,10 B:11,11 C:10,10 D:10,11 int x=10; int y=x++; printf("%d,%d",(x++,y),y++);
下面程序的输出结果是____ A:11,10 B:11,11 C:10,10 D:10,11 int x=10; int y=x++; printf("%d,%d",(x++,y) ...
随机推荐
- 「STL」bitset正传
前言 之前一些需要转二进制来解决的题目我看到很多大佬用了bitset. 然而我并不会这东西.看上去很高级的样子…… 改题改累了来学习一下233. 正文 一.bitset的构造 bitset有三种构造方 ...
- mysql查询语句对于为null和为空字符串给出特定值处理
SELECT if(IFNULL(filedName,"指定字符串")="","指定字符串",filedName) '重命名的字符名' FR ...
- LUOGU P1084 疫情控制(二分+贪心+树上倍增)
传送门 解题思路 比较神的一道题.首先发现是最小值问题,并且具有单调性,所以要考虑二分答案.其次有一个性质是军队越靠上越优,所以我们要将所有的军队尽量向上提,这一过程我们用倍增实现.发现这时有两种军队 ...
- golang模块viper读取配置文件
一.介绍 Viper是一个方便Go语言应用程序处理配置信息的库.它可以处理多种格式的配置.它支持的特性: 设置默认值 从JSON.TOML.YAML.HCL和Java properties文件中读取配 ...
- CNN 常用的几个模型
LeNet5 论文:http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf LeNet-5:是Yann LeCun在1998年设计的用于手写数字识别的卷 ...
- 1day:了解python
一.’计算机语言有哪些? 1.开发语言: 高级语言:Python,Java,PHP,C#,C++,(面向字节码) 低级语言:C.汇编(面向机器码) 备注:机器码是直接和计算机硬件沟通,字节码是通过解释 ...
- Git远程仓库版本回退
1.首先将本地仓库版本回退到自己想要的版本. git reset commit_id 2.将回退后的版本强制推送到远程仓库. git push -f origin master
- Linux操作系统系列-Linux基础
概述 先了解下unix,unix是一个多任务.多用户的操作系统,并且是收费的操作系统. 1991年的10月5日,林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的 ...
- Shuffle过程详解
- Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序【转】
Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序[转] 标签: javajvm监控工具性能优化 2015-03-11 18:37 1394人阅读 评论(0) 收 ...