Wannafly挑战赛9 B - 数一数
链接:https://www.nowcoder.com/acm/contest/71/B
来源:牛客网
题目描述
输入描述:
第一行一个整数n。
接下来n行每行一个仅由英文字母构成的非空字符串,第i个字符串代表s
i
。
输出描述:
共n行,第i行输出
对 998244353取模的结果。
输入例子:
1
BALDRSKYKirishimaRain
输出例子:
1
-->
输入
1
BALDRSKYKirishimaRain
输出
1
备注:
1 ≤ n ≤ 10^6,所有字符串的总长度不超过2*10^6
题解
#include <bits/stdc++.h>
using namespace std; const long long mod = 998244353LL;
const long long modh = 1e9 + 7;
const long long base = 131LL;
const int maxn = 1e6 + 10;
string s[maxn];
int len[maxn];
long long ans[maxn];
long long h[maxn];
int n; char S[2 * maxn], T[2 * maxn];
int slen, tlen;
int nx[2 * maxn]; void getNext()
{
int j, k;
j = 0; k = -1; nx[0] = -1;
while(j < tlen)
if(k == -1 || T[j] == T[k])
nx[++j] = ++k;
else
k = nx[k];
} int kmp(string &a) {
slen = a.length();
for(int i = 0; i < slen; i ++) {
S[i] = a[i];
S[i + 1] = 0;
}
int aa = 0;
int i, j = 0;
if(slen == 1 && tlen == 1)
{
if(S[0] == T[0])
return 1;
else
return 0;
}
for(i = 0; i < slen; i++)
{
while(j > 0 && S[i] != T[j])
j = nx[j];
if(S[i] == T[j])
j++;
if(j == tlen)
{
aa++;
j = nx[j];
}
}
return aa;
} int main() {
scanf("%d", &n);
int mn_len = 2 * maxn;
for(int i = 1; i <= n; i ++) {
cin >> s[i];
len[i] = s[i].length();
for(int j = 0; j < len[i]; j ++) {
h[i] = h[i] * base % mod;
h[i] = (h[i] + s[i][j]) % mod;
}
mn_len = min(mn_len, len[i]);
}
int idx;
for(int i = 1; i <= n; i ++) {
if(len[i] == mn_len) idx = i;
}
int fail = 0;
for(int i = 1; i <= n; i ++) {
if(len[i] == mn_len) {
if(h[i] != h[idx]) fail = 1;
}
} if(fail == 0) {
for(int i = 0; i < len[idx]; i ++) {
T[i] = s[idx][i];
T[i + 1] = 0;
}
tlen = len[idx];
getNext();
long long A = 1;
for(int i = 1; i <= n; i ++) {
if(len[i] == mn_len) continue;
A = A * kmp(s[i]) % mod;
if(A == 0) break;
}
for(int i = 1; i <= n; i ++) {
if(len[i] == mn_len) ans[i] = A;
}
} for(int i = 1; i <= n; i ++) {
printf("%lld\n", ans[i]);
} return 0;
}
Wannafly挑战赛9 B - 数一数的更多相关文章
- Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数
Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数 题目描述 给你一个长为n的序列a,有n*(n+1)/2个子区间,问这些子区间里面和为完全平方数的子区间个数 输入描述: 第一行一个数n 第 ...
- Wannafly挑战赛25游记
Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- Wannafly 挑战赛 19 参考题解
这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...
- Wannafly挑战赛24游记
Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
- Wannafly挑战赛22游记
Wannafly挑战赛22游记 幸运的人都是相似的,不幸的人各有各的不幸. --题记 A-计数器 题目大意: 有一个计数器,计数器的初始值为\(0\),每次操作你可以把计数器的值加上\(a_1,a_2 ...
- Wannafly挑战赛26-F. msc的棋盘(模型转化+dp)及一类特殊的网络流问题
题目链接 https://www.nowcoder.com/acm/contest/212/F 题解 我们先考虑如果已知了数组 \(\{a_i\}\) 和 \(\{b_i\}\),如何判断其是否合法. ...
- Wannafly挑战赛21:C - 大水题
链接:Wannafly挑战赛21:C - 大水题 题意: 现在给你N个正整数ai,每个数给出一“好数程度” gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位 ...
- 【Wannafly挑战赛24E】旅行
[Wannafly挑战赛24E]旅行 题面 牛客 题解 首先有一个非常显然的\(dp\):我们直接把\(s\rightarrow t\)的路径抠出来然后设\(f_{i,j}\)表示到第\(i\)个点, ...
- Wannafly挑战赛27 D绿魔法师
链接Wannafly挑战赛27 D绿魔法师 一个空的可重集合\(S\),\(n\)次操作,每次操作给出\(x,k,p\),要求支持下列操作: 1.在\(S\)中加入\(x\). 2.求\[\sum_{ ...
随机推荐
- ZeroMQ API(五) 传输模式
1.使用TCP的单播传输:zmq_tcp(7) 1.1 名称 zmq_tcp - 使用TCP的ZMQ单播传输 1.2 概要 TCP是一种无处不在,可靠的单播传输.当通过具有ZMQ的网络连接分布式应用程 ...
- idea绘制activity流程图中文乱码解决
发现问题: 绘制activity的bpm工作流程图的时候,在name项中填写中文,开始的时候没问题,显示的确是中文,关闭文件再打开发现已经乱码,重启idea效果相同,如图 解决方案:修改idea启动参 ...
- 【学习笔记】初识FreeMarker简单使用
楔子: 之前在和同事讨论,同事说“jsp技术太古老了,有几种页面技术代替,比如FreeMarker.Velocity.thymeleaf,jsp快废弃了……”云云.我这一听有点心虚……我在后端部分越刨 ...
- AspNetPager + GridView + ASP.NET AJAX 分页无刷新实现
准备资源: AspNetPager 下载网址:http://www.webdiyer.com/download/default.aspx ASP.NET AJAX 下载网址:http://www.a ...
- JS代码判断浏览器版本,支持IE6,IE7,IE8,IE9!三种方法!
web开发的时候有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码! 方法一: <script type="text/jav ...
- 20155202 2016-2017-2 《Java程序设计》第7周学习总结
20155202 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 世界协调时间:UTC 采用 闰秒修正 Epoch为某特定时代开始,时间轴上某一瞬间 Unix ...
- 記一次undo問題
記一次undo問題 參考:http://www.linuxidc.com/Linux/2014-06/103780.htm ORA-00376: 無法於此時讀取檔案 3 ORA-01110: 資料檔 ...
- 新手向-同步关键字synchronized对this、class、object、方法的区别
synchronized的语义 实验 分析 在看源代码时遇到多线程需要同步的时候,总是会看见几种写法,修饰方法.修饰静态方法.synchronized(Xxx.class).synchronized( ...
- C#中HttpWebRequest的GetRequestStream执行的效率太低,甚至偶尔死掉
为了提高httpwebrequest的执行效率,查到了一些如下设置 request.ServicePoint.Expect100Continue = false; request.ServicePoi ...
- WPF中ListBox的绑定
WPF中列表式控件派生自ItemsControl类,继承了ItemsSource属性.ItemsSource属性可以接收一个IEnumerable接口派生类的实例作为自己的值(所有可被迭代遍历的集合都 ...