随笔分类 - ACM
摘要:http://codeforces.com/contest/895/problem/D 题意:给你二个等长 ( len <= 1e6 ) 字符串 a, b, 并且 a 的 字典序比 b 小, 让你构造字符串 c , 问 c 的情况有多少种 (mod 1e9+7) 要求:1. c 的字母组成 和 a
阅读全文
摘要:二元运算符 ‘≡’: 当 a%p = b%p 时,a ≡ b ( mod p ) 模运算对于 加法 和 乘法 同样适用,也就是说,如果 a ≡ a` (mod p) 和 b ≡ b` (mod p),那么 a + b ≡ a` + b` (mod p) a * b ≡ a` * b` (mod p)
阅读全文
摘要:http://codeforces.com/contest/889/problem/B 题意:给你 n 个由小写字母组成的字符串,n个字符串全不相同,要求构造一个母串,使所有字符串在母串中出现的频率都是最大。如果母串有多种情况,输出长度最短的且字典序最小的;若没有这个母串,输出 NO; 题解:很容易
阅读全文
摘要:http://codeforces.com/contest/878/problem/C 题意:一共有 k 种比赛项目,有 n 次询问,第 i 次询问有 i 支队伍参加比赛(在第 i-1 次询问基础上增加一支),第 i 次询问会举行 i 场比赛,从 k 种项目种任选一场,i 支队伍中任选二支,输的一方
阅读全文
摘要:http://codeforces.com/contest/877/problem/E 题意:给你一棵树,每个结点 0 、 1 标记。有二种操作( 查询某个结点及其子结点 1 的个数、将某个结点及其子结点的标记取反)。 题解:线段树 w[i] 表示 i 结点在线段树上对应的编号, End[i] 表示
阅读全文
摘要:1.前向星型模板 顺附 codefroces 343D - Water Tree AC代码 /* 重儿子:siz[u]为v的子节点中siz值最大的,那么u就是v的重儿子。 轻儿子:v的其它子节点。 重边:点v与其重儿子的连边。 轻边:点v与其轻儿子的连边。 重链:由重边连成的路径。 轻链:轻边。 *
阅读全文
摘要:http://codeforces.com/contest/875/problem/C 题意:给你 n 个字符串,每个字符串的字符为 1 到 m,可以使所有字符串中某个相同字符变成大写字符,如 1 -> 1'。定义所有大写字符均小于小写字符, 如:2 < 3, 2' < 3', 3' < 2,让你求
阅读全文
摘要:http://codeforces.com/contest/875/problem/D 题意:给你 n 个长度的数组,求一共有多少区间 [ l , r ] ,使区间 [ l , r ] 所有数字的 或 运算大于所有区间 [ l , r ] 的数。 题解:RMQ+分治。 找到 区间 [ l , r ]
阅读全文
摘要:http://codeforces.com/contest/852/problem/G 题意:给你 n 个字符串和 m 次查询,每次给你一个匹配串,输出匹配串能与 n 个字符串匹配的个数。 匹配规则,’?’ 可以与任何单字符匹配,‘?’ 也可以和空字符匹配,其他字符只能与自身相同字符匹配。 题解:字
阅读全文
摘要:http://codeforces.com/contest/852/problem/B 题意:有一幅有向图,除了源点和汇点有 L 层,每层 n 个点。 第 i+1 层的每个点到 第 i+2 层的每个点都有一条边,边的权值为有向边终点的权值。求源点到汇点的路径长度能被 m 整除的个数。 题解:快速幂。
阅读全文
摘要:1. 利用 C[i][j] = C[i-1][j-1] + C[i][j-1] 递推求解 2. 3. 有时候需要大量的次数运算某个数阶层的逆元,用 2 的方法会超时,可以先递推处理出 (1~n) 的阶乘的逆元
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=6166 题意:给你一幅有向图,选取 K 个点,k 个点任意二点做最短路,输出最小值。 题解:根据k个点某一位上的二进制是 0 或是 1 ,分为二个集合,一个集合为源点,另一个集合为汇点。 最小值其实就是 k 个点中
阅读全文
摘要:摘自: http://www.renfei.org/blog/bipartite-matching.htm 最大匹配数:最大匹配的匹配边的数目 最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择 最大独立数:选取最多的点,使任意所选两点均不相连 最小路径覆盖数:对于一个 DAG(有向无环图
阅读全文
摘要:void RMQ_max_init( int n ) { memset(dp, 0x00, sizeof(dp)); for(int i = 1; i <= n; i++) dp[i][0] = a[i]; for(int j = 1; (1<<j) <= n; j++) for(int i = 1; i+(1<<j)-1 <= n; i++) ...
阅读全文
摘要:http://codeforces.com/contest/825/problem/E 题意:给你一个 n 个点的拓扑图,给每个点进行标记。 标记的值为 1 到 n ,每个值只能出现一次; 如果点 x 有一条指向 y 的边, x 被标记的值应该小于 y 的值; 标记的数组应该字典序最小。 其实就是
阅读全文
摘要:Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+
阅读全文

浙公网安备 33010602011771号