【Wannafly挑战赛9-B】数一数
链接:https://www.nowcoder.net/acm/contest/71/B
题目就不贴了。。
设res[i]为第i行的最终结果,可以想到,res[i]为0或不为0。长度不是最短的字符串res一定0,因为res是所有子串数量的乘积,对于每个字符串,只有长度最短的字符串乘过之后才会有结果,其余的res都是0。有多个长度最短的,结果都一样,总之...看代码就懂了(逃。之后就是KMp了(好长时间没复习kmp都忘了惹Σ(゚д゚;)
上代码:
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long LL;
- const int mod = ;
- const int N = 1e6+;
- string s[N];
- char s1[N*];
- int id[N], Next[N*];
- LL res[N];
- void make(string s, int m)
- {
- int i, j;
- for(i=, j=; i<m; i++)
- {
- while(j > && s[i] != s[j])
- j = Next[j-];
- if(s[i] == s[j])
- j++;
- Next[i] = j;
- }
- }
- int kmp(string s1, string s2)
- {
- int i, j, num = ;
- int l1 = s1.size();
- int l2 = s2.size();
- Next[] = ;
- make(s1, l1);
- for(i = , j = ; i < l2; i++)
- {
- while(j > && s1[j] != s2[i])
- j = Next[j-];
- if(s1[j] == s2[i])
- j++;
- if(j == l1)
- {
- num++;
- j = Next[j-];
- }
- }
- return num;
- }
- int main()
- {
- int n, i, j;
- cin>>n;
- for(i = ; i <= n; i++)
- {
- scanf("%s", s1);
- s[i] = s1;
- id[i] = i;//用id标号来给长度从小到大排序
- }
- sort(id+, id++n, [](int x, int y){return s[x]. size()<s[y].size();});//又学会一种偷懒+的写法(°∀°)ノ
- int m = s[id[]].size();
- res[id[]] = ;
- for(j = ; j <= n; j++)
- res[id[]] = (res[id[]]*kmp(s[id[]], s[j])%mod)%mod;
- for(i = ; i <= n; i++)
- {
- if(s[id[i]].size() != m) break;
- if(s[id[i]].size() == m) res[id[i]] = res[id[]];
- }
- for(i = ; i <= n; i++)
- printf("%lld\n", res[i]);
- return ;
- }
【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_{ ...
随机推荐
- Linux(3)- 用户管理、文件与目录权限、常用命令、Linux软件包管理
一.用户管理 现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源. 普通用户 ...
- 前端基础-css(2)
一.标准文档流 宏观的将,我们的web页面和ps等设计软件有本质的区别,web网页的制作,是个“流”,从上而下,像 “织毛衣”.而设计软件 ,想往哪里画东西,就去哪里画. 标准文档流下,有一些现象,比 ...
- python编码总结
关于ASCII码和Unicode码的来源 计算机只能处理数字,如果要处理文本,需要先将文本转换成数字.早期计算机采用8bit作为一个字节(byte).所以一个字节最大为255(二进制11111111= ...
- HTTP状态码集
1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试 ...
- CRM——插件流程回顾
1. Django项目启动 自动加载文件 制作启动文件 1. 注册strak 在apps.py 类里面增加如下 def ready(self): from django.utils.module_lo ...
- iOS 手机截屏
百度地图自带截图功能,可以截取路线列表,保存到本地.可是对比发现截下来的图片并不是app中看到的那样,截图中头部加入了搜索的起点和终点,每段路程的详细站点都已展开,而且图片会根据路线的长短自动判断图片 ...
- sql临时表的优点
1: 临时表来组织数据,更高效的查询速度. 2:临时表的操作不会写入日志文件:好处:提高了 临时表操作的速度:坏处: 数据一旦丢失,无法恢复. 3: 临时表只允许当前会话框进行访问,因此不会担心死锁 ...
- oracle 11g的卸载
oracle 11g 的卸载主要有两种方式:一种是使用Oracle Universal Installer管理工具,该工具以向导模式进行,比较简单.这里主要讲解第二种卸载数据库的方式-----使用”d ...
- vue.js 调用iOS原生方法,JavaScriptCore
1. 2. 3. 4.vue.js调用
- Apache配置的5个技巧
AcceptMutex Apache 1.3.21和Apache 2.0中引入了AcceptMutex 指示符,该指示符给调节服务器的性能带来了一个难得的机会.该指示符配置Apache的accept( ...