Processing math: 100%

随笔分类 -  动归/递推

摘要:题意: 一个由大写字母组成的长度为n(n75)的字符串,每次操作可以交换相邻位置的两个字母,求最少操作多少次使字符串中不出现子串 分析: VK之外的字母具体是什么,我们并不关心,所以可以统一设它们为X 设d(v,k,x,t)表示,已经确定前v个 ,前k个 和前x个 为 阅读全文
posted @ 2017-03-20 23:03 AOQNRMGYXLMV 阅读(719) 评论(0) 推荐(0) 编辑
摘要:题意: 给出一棵树,一个人可以在树上跳,每次最多跳k(1k5)个点 定义f(s,t)为从顶点s跳到顶点t最少需要跳多少次 求s<tf(s,t) 分析: 注意到k很小,为了方便转移,定义: sz(u,i)u的子树中* 阅读全文
posted @ 2017-03-19 12:46 AOQNRMGYXLMV 阅读(904) 评论(4) 推荐(0) 编辑
摘要:此题可以转化为最优矩阵链乘的形式,d(i, j)表示区间[i, j]所能得到的最小权值。枚举最后一个拿走的数a[k],状态转移方程为d(i, j) = min{ d(i, k) + d(k, j) + a[i] * a[k] * a[j] } 1 #include 2 #include 3 #i... 阅读全文
posted @ 2015-08-02 22:51 AOQNRMGYXLMV 阅读(161) 评论(0) 推荐(0) 编辑
摘要:A. The Child and Homework注意仔细读题,WA了好多次,=_= 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 110; 7 8 char s[4][maxn];... 阅读全文
posted @ 2015-05-09 10:41 AOQNRMGYXLMV 阅读(250) 评论(0) 推荐(0) 编辑
摘要:基础的状压DP,因为是将状态压缩到一个整数中,所以会涉及到很多比较巧妙的位运算。我们可以先把输入中每行的01压缩成一个整数。判断一个状态是否有相邻1:如果 x & (x 2 #include 3 4 const int maxn = 13; 5 const int M = 100000000;... 阅读全文
posted @ 2015-05-07 10:51 AOQNRMGYXLMV 阅读(158) 评论(0) 推荐(0) 编辑
摘要:n位不含前导零不含连续1的数共有fib(n)个,fib(n)为斐波那契数列。所以可以预处理一下fib的前缀和,查找一下第n个数是k位数,然后再递归计算它是第k位数里的多少位。举个例子,比如说要找第11个数,发现它是个5位数,所以最高位是个1,然后它还是5位数里的第4个数。这时要找第三个数了,因为后面... 阅读全文
posted @ 2015-03-28 13:23 AOQNRMGYXLMV 阅读(264) 评论(0) 推荐(0) 编辑
摘要:将K个不超过N的非负整数加起来,使它们的和为N,一共有多少种方法。设d(i, j)表示j个不超过i的非负整数之和为i的方法数。d(i, j) = sum{ d(k, j-1) | 0 ≤ k ≤ i},可以理解为前j-1个数之和为i-k,最后一个数为k还有一种更快的递推办法,把这个问题转化为将N个小... 阅读全文
posted @ 2015-03-18 03:49 AOQNRMGYXLMV 阅读(230) 评论(0) 推荐(0) 编辑
摘要:把{1, 2, 3,,, n}叫做自然排列本题便是求有多少个n元排列P要至少经过k次交换才能变为自然排列。首先将排列P看做置换,然后将其分解循环,对于每个长度为i的循环至少要交换i-1次才能归位。设有d(i, j)个i元排列至少交换j次才能变成自然排列。则有d(i, j) = d(i-1, j) +... 阅读全文
posted @ 2015-03-12 14:33 AOQNRMGYXLMV 阅读(314) 评论(0) 推荐(0) 编辑
摘要:设f(x)表示x转移到1需要的次数的期望,p(x)为不超过x的素数的个数,其中能整除x的有g(x)个则有(1-g(x)/p(x))的概率下一步还是转移到x,剩下的情况各有1/p(x)的概率转移到x/y根据全期望公式,f(x) = 1 +(1-g(x)/p(x)) * f(x) + sum{ 1/p(... 阅读全文
posted @ 2015-03-11 20:37 AOQNRMGYXLMV 阅读(162) 评论(0) 推荐(0) 编辑
摘要:设d(i, j)表示前i局每局获胜的比例均不超过p,且前i局共获胜j局的概率。d(i, j) = d(i-1, j) * (1-p) + d(i-1, j-1) * p则只玩一天就就不再玩的概率Q = sum{d(n, i) | 0 ≤ i≤ p*n}那么期望为这是一个无穷级数,可以用高数的一些知识... 阅读全文
posted @ 2015-03-11 19:38 AOQNRMGYXLMV 阅读(154) 评论(0) 推荐(0) 编辑
摘要:Tribble是麻球?因为事件都是互相独立的,所以只考虑一只麻球。设f(i)表示一只麻球i天后它以及后代全部死亡的概率,根据全概率公式:f(i) = P0 + P1 * f(i-1) + P2 * f(i-1)2 + ... + Pn * f(n)n每个麻球死亡是独立的,所以Pj * f(i-1)j... 阅读全文
posted @ 2015-03-10 16:36 AOQNRMGYXLMV 阅读(179) 评论(0) 推荐(0) 编辑
摘要:如果已经有三个相邻的X,则先手已经输了。 如果有两个相邻的X或者两个X相隔一个.,那么先手一定胜。 除去上面两种情况,每个X周围两个格子不能再放X了,因为放完之后,对手下一轮再放一个就输了。 最后当“禁区”布满整行,不能再放X了,那个人就输了。 每放一个X,禁区会把它所在的线段“分割”开来,这若干个 阅读全文
posted @ 2015-03-10 15:06 AOQNRMGYXLMV 阅读(280) 评论(0) 推荐(0) 编辑
摘要:《训练之南》上的例题难度真心不小,勉强能看懂解析,其思路实在是意想不到。题目虽然说得千奇百怪,但最终还是要转化成我们熟悉的东西。经过书上的神分析,最终将所求变为:共n个叶子,每个非叶节点至少有两个子节点的 树的个数f(n)。最终输出2 × f(n)首先可以枚举一下根节点的子树的叶子个数,对于有i个叶... 阅读全文
posted @ 2015-03-07 10:44 AOQNRMGYXLMV 阅读(293) 评论(0) 推荐(0) 编辑
摘要:题意:这种所有边都是垂直或水平的多边形,可以用一个字符串来表示,一个270°的内角记作O,一个90°的内角记作R。如果多边形内存在一个点,能看到该多边形所有的点,则这个多边形对应的序列是合法的。这里长度不作限制,只要长度适当能满足要求即可。现给出序列长度,问有多少种序列符合要求。分析:书上分析地很清... 阅读全文
posted @ 2015-03-06 22:14 AOQNRMGYXLMV 阅读(220) 评论(0) 推荐(0) 编辑
摘要:题意:统计[a, b]中有多少个数字满足:自身是k的倍数,而且各个数字之和也是k的倍数。分析:详细分析见《训练之南》吧,=_=||书上提出了一个模板的概念,有了模板我们就可以分块计算。虽然书上定义f(x)表示不超过x的非负整数且满足条件的个数,但为了编码方便,代码中f(x)的含义为0~x-1中满足条... 阅读全文
posted @ 2015-03-04 16:49 AOQNRMGYXLMV 阅读(789) 评论(0) 推荐(0) 编辑
摘要:设d(i, j)为连续子序列[i, j]构成数的个数,因为遍历从根节点出发最终要回溯到根节点,所以边界情况是:d(i, i) = 1; 如果s[i] != s[j], d(i, j) = 0假设第一个分支在Sk回到根节点,方案数为d(i+1, k-1)其他分支访问从Sk到Sj,方案数为d(k, j)... 阅读全文
posted @ 2015-03-04 10:28 AOQNRMGYXLMV 阅读(162) 评论(0) 推荐(0) 编辑
摘要:A. Vitaly and Strings题意:给出两个长度相同的字符串,问是否存在一个字符串,该串的字典序大于输入的第一个串 且 小于第二个串。分析:找出比第一个串大一的串,看看它是否小于第二个串,是的话就满足,否则不存在这样的串。 1 #include 2 using namespace st... 阅读全文
posted @ 2015-03-01 09:19 AOQNRMGYXLMV 阅读(186) 评论(0) 推荐(0) 编辑
摘要:题意:有一个01串,每一步都会将所有的0变为10,将所有的1变为01,串最开始为1.求第n步之后,00的个数分析:刚开始想的时候还是比较乱的,我还纠结了一下000中算是有1个00还是2个00最终想明白后,并不会出现这样的子串。总结了几个要点:第n步之后,串的长度为2n,且0和1的个数相等,分别为2n... 阅读全文
posted @ 2015-02-23 21:02 AOQNRMGYXLMV 阅读(334) 评论(0) 推荐(0) 编辑
摘要:题意:找出长度为n、0和1个数相等、没有前导0且为k的倍数的二进制数的个数。分析:这道题要用动态规划来做。设dp(zeros, ones, mod)为有zeros个0,ones个1,除以k的余数为mod的二进制数的个数,则状态转移方程为:dp(zeros + 1, ones, (mod>>1) % ... 阅读全文
posted @ 2015-02-23 08:28 AOQNRMGYXLMV 阅读(278) 评论(0) 推荐(1) 编辑
摘要:题意:有n种纸币,已知每种纸币的面值和数量,求所能凑成的不超过cash的最大总面值。分析:这道题自己写了一下TLE了,好可耻。。找了份比较简洁的代码抄过来了。。poj1276 1 #include 2 #include 3 4 const int maxn = 12; 5 const int ... 阅读全文
posted @ 2015-02-13 22:29 AOQNRMGYXLMV 阅读(387) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示