正解:哈希+dp/AC自动机/kmp 解题报告: 传送门! 这题解法挺多的,所以就分别港下好了QwQ 首先港下hash+dp趴 可以考虑设dp式f[i][j]:匹配到第i个通配符了,下面那个字符串匹配到第j位了是否可行 转移的话就只要关心两个通配符之间的那一段是否相等就好 那判断相等就应该要想到哈希鸭,就做完了 啊有点儿简洁,,, 思路挺简单的主要细节比较多趴,所以我等下直接放代码好了QwQ 然后说下AC自动机 就先按'*'通配符分成几段,然后对每段独立地分别做 然后下面当每段之间相对独立,说下…
洛谷 P3370 [模板]字符串哈希 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转PJ试炼场:) 输入输出格式 输入格式: 第一行包含一个整数N,为字符串的个数. 接下来N行每行包含一个字符串,为所提供的字符串. 输出格式: 输出包含一行,包含一个整数,为不同的字符串个数. 输入输出样例 输入样例#1: 复制 5 abc aaaa abc a…
看这题网上居然还没人写blog,怕是都去看洛谷自带的了-- 你才是字符串!你全家都是字符串!这题跟字符串没多大关系,只是出题人lxl想要吐槽某中学而已--... 其实这题说白了就是问区间里出现最多的数出现了多少次,上去就莫队就行-- 不过要注意离散化. 虽然lxl很sxbk,不过能想到这些题目,把题意悄悄的隐藏起来的大佬,可见其水平之高-- 在洛谷主站不开O2只有50分,有点吃O2的buff-- 辣鸡JSOI不能开O2真是差评啊. #include<bits/stdc++.h> #define…
点此看题面 大致题意: 有一个长度为\(n\)的字符串\(A\)和一个长度为\(m\)的字符串\(B\),其中存在一些字符'*'可以与任意字符匹配.求\(B\)中所有满足条件的位置,使得从这一位置开始的连续\(n\)个字符组成的字符串能与\(A\)完全匹配. 前言 之前一直对\(FFT\)这个算法不太理解,最近感觉数学水平有了点小提升,于是去重新看了遍\(FFT\)的原理,突然发现能大致理解了...... 这道题原题是\(A\)长度为\(m\),\(B\)长度为\(n\),出于个人习惯,把\(n…
题目大意:给定一个文本串和一个模板串,串中含有通配符,求文本串中有多少个位置可以与文本串完全匹配. 题解:利用卷积求解字符串匹配问题. 通配符字符串匹配的数值表示为 \[\sum\limits_{i = 0}^{m - 1}(a[i] - b[i + k])^2 a[i]b[i + k]=0\].直接展开之后计算三个卷积即可. 需要注意的是:并不是所有 a[i] b[i + k] 均为循环卷积,是否需要倍增取决于是否成环. 代码如下 #include <bits/stdc++.h> using…
P3370 [模板]字符串哈希 143通过 483提交 题目提供者HansBug 标签 难度普及- 提交  讨论  题解 最新讨论 看不出来,这题哪里是哈希了- 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转PJ试炼场:) 输入输出格式 输入格式: 第一行包含一个整数N,为字符串的个数. 接下来N行每行包含一个字符串,为所提供的字符串. 输出格…
题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类基因工作组的任务中,生物学家研究的是:两个基因的相似程度.因为这个研究对疾病的治疗有着非同寻常的作用. 题目描述 两个基因的相似度的计算方法如下: 对于两个已知基因,例如AGTGATGAGTGATG和GTTAGGTTAG,将它们的碱基互相对应.当然,中间可以加入一些空碱基-,例如: 这样,两个基因之间的相似度就可以…
题目大意:问字符集大小为$k$,长度为$L$的字符串,且没有长度超过$1$的回文段的个数.规定第$s(若为0则无限制)$位为$w$. 题解:懒得写了,根据是否有限制分类讨论 卡点:中途有个地方忘记取模 C++ Code: #include <cstdio> long long k, L, mod, s; inline long long pw(long long base, long long p) { base %= mod; long long res = 1; for (; p; p &…
题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y.当中两字符串非0即1.序列长度均小于9999. 输出格式: X和Y的最长公共子序列长度. 输入输出样例 输入样例#1: 01010101010 00000011111 输出样例#1: 6 输入样例#2: 01011 010010101111111111 输出样例#2: 5 最长公共子序列裸题屠龙宝刀点击就送 #include <iostream> #include <cstring> #include <cs…
P2543 [AHOI2004]奇怪的字符串 题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y.当中两字符串非0即1.序列长度均小于9999. 输出格式: X和Y的最长公共子序列长度. 输入输出样例 输入样例#1: 01010101010 00000011111 输出样例#1: 6 输入样例#2: 01011 010010101111111111 输出样例#2: 5 代码: #include<cstdio> #include<cstdlib> #include&l…
P3370 [模板]字符串哈希 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转PJ试炼场:) 输入输出格式 输入格式: 第一行包含一个整数N,为字符串的个数. 接下来N行每行包含一个字符串,为所提供的字符串. 输出格式: 输出包含一行,包含一个整数,为不同的字符串个数. 输入输出样例 输入样例#1: 5 abc aaaa abc abcc 12…
题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转PJ试炼场:) 输入输出格式 输入格式: 第一行包含一个整数N,为字符串的个数. 接下来N行每行包含一个字符串,为所提供的字符串. 输出格式: 输出包含一行,包含一个整数,为不同的字符串个数. 输入输出样例 输入样例#1: 5 abc aaaa abc abcc 12345 输出样例#1: 4 说明…
问题描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at 和 atide 间不能相连. 题解 第一次知道c++字符串可以直接拼接..感觉就是暴力模拟啊,写一个dfs找最大长度,每次判断能不能进行拼接,然后进行相接找最大长…
lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使用一次.游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增地攻击,才能对boss产生伤害.也就是说一开始的时候,lxhgww只能使用某个属性值为1的装备攻击boss,然后只能使用某个属性值为2的装备攻击boss,然后只能使用某个属性…
P3370 [模板]字符串哈希 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. #友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转PJ试炼场:) 输入格式 第一行包含一个整数N,为字符串的个数. 接下来N行每行包含一个字符串,为所提供的字符串. 输出格式 输出包含一行,包含一个整数,为不同的字符串个数. 输入输出样例 INPUT: 5 abc aaaa abc abcc 12345 OUTPU…
题目链接:https://www.luogu.com.cn/problem/P1098 这个题出的真的很有质量,这个是我见过算是复杂的模拟题了,对付这种题,一丝都不能马虎,要想实现快捷而又简便的代码设计,并且针对于这个题繁琐的各种变量,我们采取STL大法,全局都采取STL大法的题目真的是不多,但这个题真的很值得. 我们必须要熟悉STL库的顺序式容器和关联式容器的STL表述方法,并且熟练应用,STL函数库的熟练应用是每个ACMer和OLer的必备技能,惭愧的是,我现在还没能完全掌握STL库,只能应…
题目描述 输入一串完全二叉树,用遍历前序打出. 输入输出格式 输入格式: 第一行为二叉树的节点数n. 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输出格式: 前序排列的完全二叉树 输入输出样例 输入样例#1: 6 abc bdi cj* d** i** j** 输出样例#1: abdicj 代码 #include<iostream> #include<cstring> #include<algorithm> #include<cstd…
P1914 小书童——密码 题目背景 某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你. 题目描述 蒟蒻虽然忘记密码,但他还记得密码是由一串字母组成.且密码是由一串字母每个向后移动n为形成.z的下一个字母是a,如此循环.他现在找到了移动前的那串字母及n,请你求出密码.(均为小写) 输入输出格式 输入格式: 第一行:n.第二行:未移动前的一串字母 输出格式: 一行,是此蒟蒻的密码 输入输出样例 输入样例#1: 复制 1 qwe 输出样例#1: 复制…
P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. 输入输出格式 输入格式: 四行字符,由大写字母组成,每行不超过72个字符 输出格式: 由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的.在任何一行末尾不要打印不需要的多余空格.不要打印任何空行. 输入输出样例 输入样例#1: 复制 THE QUICK BROWN FOX JUM…
P1055 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码.ISBN码的首位数字表示书籍的出版语言,例如0代表英语:第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社:第二个分隔符后的五位数字代表该书在该出版社的编号:最后一位为识别码. 识别码的计…
P1055 ISBN号码 #include<bits/stdc++.h> using namespace std; string s; ]={','X'}; int main() { cin>>s; ; ,c=;p<=;p++) ; ]) cout<<"Right"<<endl; ,)+e[res])<<endl; } P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He… #include<…
正解:数论 解题报告: 传送门! 很久以前做的题了呢,,,回想方法还想了半天QAQ 然后写这题题解主要是因为看到了好像有很新颖的法子,就想着,学习一下趴,那学都学了不写博客多可惜 首先港下最常规的方法趴QAQ umm常规方法的话做过了还是比较容易想到的QAQ 就是,首先总共有C(n*m,3)个方案 最好想的是减去横着的和竖着的,就是n*C(m,3)+m*C(n,3) 然后斜着的我是用向量理解的,就是说把斜率理解成向量这么枚举,就过去了 over 代码是很久以前的了,丑陋快读+没有rg+没有il+…
题目 传送门:QWQ 分析 不想画图. https://www.luogu.org/problemnew/solution/P1641 好神仙的题啊. 代码 // luogu-judger-enable-o2 #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ; ll fac[maxn]; int exgcd(ll& x,ll& y,ll a,ll b){ ;y=;} else{ exgc…
题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. 输入输出格式 输入格式: 四行字符,由大写字母组成,每行不超过72个字符 输出格式: 由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的.在任何一行末尾不要打印不需要的多余空格.不要打印任何空行. 输入输出样例 输入样例#1: 复制 THE QUICK BROWN FOX JUMPED OVER THE…
题意 题目链接 Sol 只要知道"回文连续子串"就能做了吧.. 想要满足这个条件,肯定是不能出现\(aa\)或\(aba\)这种情况 如果没有\(S\)的限制,答案为\(K * (K - 1) * \prod_{i = 3}^n (k - 2)\) 如果有\(S\)的限制就除一个\(K\) 然而考场上没注意到会乘爆long long于是挂乘暴力分.... #include<bits/stdc++.h> #define int long long using namespac…
题目:https://www.luogu.org/problemnew/show/P3386 二分图匹配模板,注意左部点只dfs未匹配点. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,m,e,a[1005],b[2005],ct,head[1005],pre[2005],ans; bool vis[1005]; struct N{ int t…
[题解] 区间DP.  设f[i][j]表示i~j的最小代价.再枚举中间点k,很容易想到转移方程为f[i][j]=min(f[i][j],f[i][k]+f[k][j]),同时如果i~k可以通过重复获得i~j,那么f[i][j]=min(f[i][j],f[i][k]+len(x)+2),这里的len(x)是指重复次数在十进制下有多少位. #include<cstdio> #include<algorithm> #include<cstring> #define LL…
设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:3433121334331213 又如:n=4n=4时,44个整数77,1313,44,246246联接成的最大整数为:74246137424613 输入输出格式 输入格式: 第一行,一个正整数nn. 第二行,nn个正整数. 输出格式: 一个正整数,表示最大的整数 输入输出样例 输入样例#1: 复制 3 13 312 343…
题目链接 可以看成在坐标系中从\((0,0)\)用\(n+m\)步走到\((n+m,n-m)\)的方案数,只能向右上\((1)\)或者右下\((0)\)走,而且不能走到\(y=-1\)这条直线上. 不考虑最后那个限制条件的话就是\(n+m\)次中选\(m\)次往右下走,即\(C(n+m,m)\). 然后根据对称原理,从\((0,0)\)走到\(y=-1\)上就相当于从\((0,-2)\)走到\(y=-1\)上,其方案数是一样的,所以经过\(y=-1\)的方案数其实就是从\((0,-2)\)走到\…
题面 这道题虽然是练习匈牙利算法的,但可以用网络流来切掉它: 我们可以建立一个超级源和一个超级汇,超级源连接左部分点,超级汇连接右部分点: 然后在该图上跑最大流就可以了: PS:我设的超级源是2001,超级汇是2002: #include <bits/stdc++.h> using namespace std; struct littlestar{ int to; int nxt; int w; }star[5000010]; int head[5000010],cnt; inline voi…