摘要: 问题 p_i != i and p_i != i+1思路 PS: \sum_{k=0}^n(-1)^k(n-k)!(2n)/(2n-k)\binom{2n-k}{k} 设E_i表示 p_i=i 的{p_n}数量 F_i表示 p_i=i+1 的{p_n}数量 把E,F排成一圈,E_1,F_1,E_2,F_2,…,E_n,F_n 那么,相邻两个集合的交是空 然后证一个引理,在这2n个集合里面挑出k个,两两不相邻的方案数,就是 //psbinomial 二项式 最后套上容斥,就得到想要的,引理很好证 引理证明,继续往后翻聊天记录ftiasch(826513189)16:41:... 阅读全文
posted @ 2013-04-01 21:47 yefeng1627 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 题意 N*M矩阵,有空地('o')、草地('*')、墙('#‘),机器人能攻击到上下左右,不被墙挡住的方位。并且机器人只能被放置在空地上。问能放置的最大数量机器人,相互间不能攻击到。解题思路 对于所有空地,能够攻击到的相互之间冲突,即可连接成边,然后题目就转换成了 最大独立集问题。但是本题 顶点数量为 50*50 = 2500, 果断TLE。 另外我们可以发现,通过 将每一行相互攻击到的空格位置看成一个点,这些点命名为 {A} 将每一列相互攻击到的空格位置看成一个点,这些点命名为 {B} 则图就转换了二分图, 对于 顶点集 {A} 与 {B} 而言, 之 阅读全文
posted @ 2013-04-01 20:47 yefeng1627 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题意 有N根棍子,分别有长度。问将其拼接成X根,长度相同,求最小长度。解法 搜索。 1.因为总共n根棍子,最多拼接成n根相同长度, 并且,组成的棍子数量越多,则长度则越小 2.拼接的棍子数量必定能够 被 \sum{stick_i} 整除 3.若当前棍子长度 stick_i 不能够匹配, 在 stick_i = left_len 或者 stick_i = target_len 情况下, 此长度无合法方案, 因为每一根棍子都将被使用,若有一根不能被使用,则此长度方案必定不能成立.View Code #include<cstdio>#include<cstring>#incl 阅读全文
posted @ 2013-04-01 17:13 yefeng1627 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 题意 已知一个数X有K个因子,求最小的X。解法 搜索剪枝 对于任意整数 其因子个数为: 意味着 因为需要最小的整数 N, 则我们使用小的质因子总是最优. 所以我们枚举 #include<stdio.h>typedef long long LL;const LL INF = 1000000000000000010ll; int p[12] = { 2,3,5,7,11,13,17,19,23,27,29,31}; int N; void dfs( LL &ans, int i, LL x, int n ){ if( n > N ) return; // 基本减枝 if. 阅读全文
posted @ 2013-04-01 12:21 yefeng1627 阅读(261) 评论(0) 推荐(0) 编辑

Launch CodeCogs Equation Editor