摘要:
题意:给你一个图,图中每个点有对应的危险值,q个询问,每个询问给出起点,终点,限制值,需要你计算出从起点走到终点不走那些危险值超过限制值的最短路;(起点和终点的危险值不算) 解题思路:一开始看题目给了10s,想的是用d每次询问跑一遍dij,在dij里面+一个限制,但超时了(讲道理,感觉10s够啊)。 阅读全文
摘要:
题意:给你n个匹配串,算出所有长度为m且至少包括1个匹配串的数量; 解题思路:首先根据题意,因为至少包括一个不好弄,根据容斥,我们可以把题目搞成求出所有长度为m不包括匹配串的字符串,然后减一下就是答案,求长度为m不包括有点像poj2778,但是因为状态太多,所有不能用矩阵,所以用dp解决,设dp【i 阅读全文
摘要:
链接 题意:给你n个字符串,再给你一个匹配串,问你对于匹配串的每一个字符,至少在后面添加几个字符,使得之前给的n的字符串中有添加后的串的后缀 解题思路:因为是要当多模式匹配,想到用AC自动机,因为要至少添加几个字符,所以我们把n个给定的字符串存在trie图中,把每个串结尾点标记,从结尾点开始往前bf 阅读全文
摘要:
题意:给你n个字符串,和长度m,问你长度<=m的字符串中,包括这n个字符串的有多少个 解题思路:这题和poj2778差不多,但是那道题求的是不包含的,所有我们换个角度,求出所有的可能性减去不包括的就是了,但这道题有一个和那道题不一样的地方就是,他是<=长度len的所有,所有需要构造矩阵的时候加一列全 阅读全文
摘要:
A - Oulipo POJ - 3461 题意:给你两个串,问你第一个串在第二个串出现的次数 解题思路:模板题 代码 #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace 阅读全文
摘要:
题意:给你一个长为m,宽为n的迷宫,问你从s开始,我们需要最小的花费堵住s,使得s不能到达迷宫的边界,只有字符a,b,c,d,...这样的点才能花费对应的钱将其堵住 解题思路:思考一下,裸的最小割,就是点权需要拆点,每个点拆成对应的两个点,能堵住的点拆为两个点,连条边边权为对应的花费,不能堵的点,连 阅读全文
摘要:
题意:给你一个数字字符串,问你本质不同的回文子串的和是多少 解题思路:用回文树直接可以把本质不同的回文子串都跑出来,然后分别遍历以奇树为节点和以偶数为节点的两颗回文树就行了 代码: 阅读全文
摘要:
题意:中文题意 解题思路:首先每个装备有2种属性,这个很关键。。。,就直接猜了要不2-sat,要不二分图,然后给出n,因为n数据很大,所以考虑属性大小最多为10000,就用属性建图,第一个属性值为x部,第二个属性值为y部,跑二分图最大匹配 代码 阅读全文
摘要:
题意:给你两个字符串,问你这两个字符串中相同的回文子串的乘积和 解题思路:建立两颗树,然后一起遍历这两颗树就行了,因为是回文树的特点,如果当前两棵树都出现了某一回文子串,那么这回文子串的长度-2也一定出现了,按照这个规律,直接dfs遍历 阅读全文
摘要:
题意:让你求从1走到n的最短路,但是有些路径是不能走的,且走到每次走只能走比当前点大的点 解题思路:看到有些路径是不能走的,想到用AC自动机标记结点,跑出一个trie图来,在trie图上进行路径更新,dist【i】【j】表示在trie状态结点j的时候,到正常结点i的花费 代码: 阅读全文