摘要:
题意: 有n个士兵,你可以选择让它成为战士还是法师。 有m对关系,u和v 如果同时为战士那么你可以获得a的权值 如果同时为法师,你可以获得c的权值, 如果一个为战士一个是法师,你可以获得b的权值 问你可以获得的最大权值是多少? 题解: 对每个士兵建立一个点x ,点x 向源点s 连一条边,向汇点t 连 阅读全文
posted @ 2019-08-24 22:44
Fitz~
阅读(256)
评论(0)
推荐(0)
摘要:
题意: 给你两个串s和t,其中t是由s中选择若干个不相交的区间翻转得到的,现在要求求出最少的翻转次数以及给出方案。 1≤|s|=|t|≤500000 题解: 我们将两个字符串合成成T=s1t1s2t2...sntn T=s1t1s2t2...sntn那么问题就是最少要把整个字符串T 拆分成若干个偶数 阅读全文
posted @ 2019-08-24 10:58
Fitz~
阅读(348)
评论(0)
推荐(1)
摘要:
题意: 给出一个长度为偶数的字符串S,要求把S分成k部分,其中k为任意偶数,设为a[1..k],且满足对于任意的i,有a[i]=a[k-i+1]。问划分的方案数。 n<=1000000 题解: 反正我是不会做 (我是转载的yyb博客,巨佬写的超级超级详细)基本就是照着laofulaofu的打了一遍( 阅读全文
posted @ 2019-08-24 10:54
Fitz~
阅读(297)
评论(0)
推荐(0)
摘要:
题意: 有n种操作,开始给你一个空串,给你4中操作 1 c 在字符串的首部添加字符c 2 c 在字符串的尾部添加字符c 3 询问字符中的本质不同的回文串的个数 4 询问字符串中回文串的个数 思路:last[0]表示首部的操作的位置,last[1]表示尾部的操作的位置 模板提,用上双向的回文树就好了。 阅读全文
posted @ 2019-08-24 10:17
Fitz~
阅读(211)
评论(0)
推荐(0)
摘要:
题意: 记录不相交的回文串对数 题解: 正着反着都来一遍回文树 用sum1【i】 表示到 i 位置,出现的回文串个数的前缀和 sun2【i】表示反着的个数 ans+=sum1【i-1】*sum2【i】 1 #include <set> 2 #include <map> 3 #include <sta 阅读全文
posted @ 2019-08-24 10:14
Fitz~
阅读(224)
评论(0)
推荐(0)
摘要:
题意: 找出所有【i,j】为回文串【j+1,k】也为回文串的i*k乘积之和。 题解: 设sum1【i】 为正着插入,到 i 的所有回文串的起始位置的前缀和,sum2【i】 表示反正插入的前缀和 ans+=sum1【i]*sum1【i+1】 上面的式子很容易让我们想到两遍回文树正着和反着插入操作, 回 阅读全文
posted @ 2019-08-24 10:00
Fitz~
阅读(198)
评论(0)
推荐(0)
摘要:
题意: 输出每个长度下的回文串(这些回文串的左半边也需要是回文串) 题解: 直接套上回文树,然后每找到一个回文串就将他hash。 因为符合要求的回文串本身是回文串,左半边也是回文串,所以它左半边也右半边相同, 自己画个图很容易发现的 每次hash判断一下就好了 1 #include <set> 2 阅读全文
posted @ 2019-08-24 09:49
Fitz~
阅读(169)
评论(0)
推荐(0)