摘要:
~~弱鸡萌新2018年难忘的骗分之旅~~ ~~花了2个小时骗分2333~~ 题意 从n个点构成的的树中取出m条 边不重复路径 ,使得最小的路径最长 思路 1. 由于没有一个确定的限制且问题具有单调性,首先肯定想到二分答案,设该数为x,那么需要找出长度大于等于x的路径条数 2. 对于一个子树i,考虑它 阅读全文
摘要:
题意 给定n个字符串,m次询问($n,m \leq 1e5$)每次询问一个串在另一串的出现次数,可以离线处理 思路 首先肯定是对n个串建AC自动机 如何求一个串的子串?假设i点对应这个字符串,那么从fail[ i ]就表示i串的最长后缀,一直向上跳fail,就可以得到i串的所有后缀。对于i的所有子串 阅读全文
摘要:
题意 ~~OI版猫和老鼠~~ 给定一个有n个点的图($n\leq 1000$),在s点有一只猫,t点有一只jerry,每一单位时间 猫先走 :沿着到jerry的路径中的最短路走一步,如果同时存在多条最短路则选择走一步后 序号更小 的一条,另外,如果这一步没有走到jerry所在的点,猫会再走一步(砸瓦 阅读全文
摘要:
题意 给定n个实验,m个机器,选一个实验得到ai价值,选一个机器有bi代价,每一个实验必须要某些机器参与才能进行,问获得的最大价值 思路 对于每一个实验,分为两种选择: 1. 选取这个实验,那么必须选取其对应的所有机器 2. 不选这个实验,那么其对应的机器只受到其他实验选择的影响 也就是说在实验和机 阅读全文
摘要:
题意 给定区间[ l , r ]($1 \leq l define N 25 using namespace std; typedef long long ll; const ll mod = 1000000007; int T,a[N],sum; ll n,m,x,temp[N]; struct 阅读全文
摘要:
题意 给出n个数的一个全排列(n include include define N 10005 using namespace std; typedef unsigned long long ULL; const ULL base=1000000007; int T,n,a[N]; ULL hash 阅读全文
摘要:
题意 给定一些模式串,求长度为m的所有文本串的个数,且该文本串至少包括一个模式串,答案对10007取模 思路 //没有调用get_fail()调了一个小时我怕不是神仙.... 看到一堆字符串的匹配问题,首先就可以考虑自动机全家桶了......~~很容易~~发现用AC自动机看起来可做 对所有串建AC自 阅读全文
摘要:
题意 给定一些字符串,问是否存在一个无限长度的字符串,使得它不包含任何一个给定的串 思路 将所有串加入AC自动机,那么我们从根节点选择的一个字符串显然不能经过任何一个带有end标记的节点,不然就说明其中包含了这个节点对应的字符串。 于是用fail标记建成trie图,判断trie图上面有没有一个不经过 阅读全文
摘要:
题意 给定一张图,每个节点有高度,一个点只能到达高度不大于它的其他点,求从1号节点出发所能到达的节点数(包括自己)以及这些节点的最小树形图(以1为根且可以到达其他点的树)的边权和 思路 从1出发能到达的点用一遍bfs即可求出,然后就相当于求剩下节点的最小树形图 如果所有边都是无向边,显然就是求最小生 阅读全文
摘要:
板子题 先kruskal得到最小生成树,再枚举未加进生成树中的边i,该边i和生成树树形成了一个环,选择这个环上最大的 不等于 i的权值的边去掉就得到一个新的树,所有这样得到的树权值之和即为次小生成树。 求环上最大边可以用倍增或者树链剖分,由于最大边可能和才加上去的边相等,所以还要维护一个次大边 cp 阅读全文