
递推求解
WorstCoder
能够做出困难的算法题是最快乐的事情!
展开
-
poj 3601 Tower of Hanoi
题意:汉诺塔问题,不过其中加了一个条件,就是盘子可以有相同的原创 2014-10-08 11:14:29 · 1395 阅读 · 0 评论 -
uvaoj 10635 - Prince and Princess
题解: 1.找到a数组中的元素,对应b数组中的位置,然后在这些位置中找到最长递增子串#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int const MAXN = 250 * 250 + 10;int idx[MAXN],num[MAXN],d[MAXN原创 2015-09-08 11:58:19 · 423 阅读 · 0 评论 -
uvaoj 10891 - Game of Sum
总结: 1.对于在脑子中想的题目,在做提前也简单的纸上画一画,将思维转化成逻辑语言,方便写代码,也方便检查#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define MAXN 105int d[MAXN][MAXN],f[MAXN][MAXN],g[MAXN][MAXN],s[MAXN];原创 2015-09-10 21:50:05 · 349 阅读 · 0 评论 -
uvaoj 11361 - Investigating Div-Sum Property
题解: 1.数位dp,d[len][m1][m2](比如n1,n2,n3,n4这个四位数) (1)长度为len的数,在这里是4 (2)(n1 + n2 + n3 + n4) % k == m1 (3)(n1n2n3n4) % k == m2 满足条件的数有多少个 2.所需要求的数分段表示出来 比如:0—123分解为(1)(2) (1).0-99 (2).100—123 100—1原创 2015-09-28 19:42:29 · 565 阅读 · 0 评论 -
uvaoj 1394 - And Then There Was One
题解: 1.约瑟夫环变形 2.倒着推: 最后剩一个人,如果把他编号为一号 然后推如果剩俩人,他是对应的几号 然后如果三人,这个人对应的几号。。。。 总结: 1.记得约瑟夫环问题,大一上思考了一个学期,大二上思考了半节课,现在思考了几分钟就推出来了,可能一个是我知道的知识多了,二是,我清楚为何要这么推了,这就是一个人解决问题的思路。所以,思考问题的方式很重要,养成一个好的思维模式很重要原创 2015-09-07 21:01:05 · 515 阅读 · 0 评论 -
uvaoj 1073 - Glenbow Museum
题解: 1.发现只可能有4个R和若干个OR 2.算出这些符号的排列组合 3.注意如果这里面不包括O在最后一位的情况,所以需要在这些情况下加上最后一个OR后面没有R的情况,其实就是把序列右移一位使得最后一位是O的情况数 总结: 1.这次自己思考的方法比汝佳哥简单一些,很是开心 2.这次思考题目的节奏很是优秀,思考一段时间,想不到了就做些别的事情,一点点攻破难关!而且效率很高,节约了时间#i原创 2015-09-30 19:38:34 · 385 阅读 · 0 评论 -
uvaoj 11825 - Hackers' Crackdown
题解: 1.状态压缩动态规划,f(s) = max(f(s - s0) & s0 覆盖全局) + 1; 总结: 1.这个题目没有自己想出来,因为没有把握好解题的方法,其实并不是非常难。动态规划的题目首先应该简单的尝试写一下转移方程,也许后面就可以豁然开朗了 2.学习到了枚举某个集合的所有子集,以后学习新的知识,应该首先自己尝试简单的思考,再去看答案,这样可以吸收更多一些#include<io原创 2015-10-03 21:17:48 · 490 阅读 · 0 评论 -
uvaoj 10253 - Series-Parallel Networks
题解: 1.将这道题的模型抽象成一棵树,计算它有多少种形态 2.树这样定义,从父节点开始,将并联在一起的图形尽可能拆开,使得子节点不存在可拆的并联网络;再将子节点所代表的图形拆成尽可能多的串联网络,这样交替下去,直到拆成不能拆的叶子节点为止。 3.对于某一层出现2,2,3这种情况,用隔板法解决就好 总结: 1.啊,真是太久没有做acm题了,脑子都木了,感觉最近总是睡得晚白天也不是很困,但是原创 2015-10-25 01:05:36 · 372 阅读 · 0 评论 -
uvaoj 10859 - Placing Lampposts
题解: 1.将放置最少的街灯等价为最多地方没有放置街灯个数为x 2.被两个街灯照亮的边数为b 3.k > b的最大值 4.y = kx + b,找到最大的y 5.树形dp 总结: 1.将问题归一化,减少了很多无谓的操作和变量,将两个变量编码成一个数值#include<iostream>#include<cstdio>#include<cstring>#include<vector原创 2015-10-28 20:27:31 · 399 阅读 · 0 评论 -
uvaoj 11137 - Ingenuous Cubrency
总结: 1.分类考虑,对于这道题目,如果将1 ^ 3,2 ^ 3,3 ^ 3……放在一起不好考虑的话,可以尝试一部分一部分的考虑#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define MAXN 10005typedef long long ll;ll d[2][MAXN];int m原创 2015-08-31 18:45:39 · 356 阅读 · 0 评论 -
HDU 3483 A Very Simple Problem
题解: 1.我认为的关键步骤是定义S[n] = 1 ^ x * x ^ 1 + ….. + n ^ x * x ^ n 2.其次因为n的数据量达到1e9,所以不能一个一个的相加,考虑使用矩阵快速幂 3.考虑原创 2015-08-30 13:49:10 · 792 阅读 · 0 评论 -
hdu 5188 zhx and contest && BestCoder Round #33
题解 & 分析:1.思考这个题目的时候思维很混乱 2.先是猜的搜索加优化没敢试,后来想按01背包模型来做 3.再来需要考虑按什么顺序访问这n个题目 4.证明可知,l - r值越小越先访问不会更浪费时间总结:1.枚举,贪心,动态规划解题方式应该被优先考虑 2.有序能更好的化简题目 3.解题需要明确目标#include#inc原创 2015-03-20 20:05:48 · 1048 阅读 · 0 评论 -
hdu 5185 Equation && BestCoder Round #32
题目: x[1]+x[2]+x[3]+…+x[n]=n, 这里 0 x[i] 对于一个给定的n,Gorwin想要知道有多少xi的组合满足上述等式。由于结果比较大,输出答案对m取余的结果就行。限制: T组数据:1 1 1 思路:1.观察发现数字种类只可能有srqt(n)种 2.发现第一个数只能从0或者1开始,想试试用dp来做这个题。 3原创 2015-03-10 20:21:23 · 987 阅读 · 0 评论 -
hihoCoder 1149 回文字符序列
给定字符串,求它的回文子序列个数。回文子序列反转字符顺序后仍然与原序列相同。例如字符串aba中,回文子序列为"a", "a", "aa", "b", "aba",共5个。内容相同位置不同的子序列算不同的子序列。输入第一行一个整数T,表示数据组数。之后是T组数据,每组数据为一行字符串。输出对于每组数据输出一行,格式为"Case #X: Y",X代表数据编号(从1开始)原创 2015-05-21 21:40:37 · 1195 阅读 · 0 评论 -
hdu 5230 ZCC loves hacking && BestCoder Round #41 1003
题意:Codefires round马上就要结束了!ZCC已经通过做题得到了C(0≤C≤106)分。但他惊讶地发现,房间里的其他选手也都解决了最难的题。ZCC根据经验断定大多数的选手都会FST的!当然,除去rating最高的选手Memset137。在此之前,ZCC想要hack他们来使他的得分更高。除了ZCC,房间里有N(1≤N≤100000)个选手,他们已经被按照rating从小到大排序了原创 2015-05-29 15:36:33 · 1065 阅读 · 0 评论 -
hihocoder 1191 小W与网格
#include#include#include#include#include#include#include#includeusing namespace std;typedef long long LL;#define MAXN 105#define MOD 1000000007int n,m,_,i,j,a,b,dp[MAXN][MAXN],vis[MAXN][MA原创 2015-07-27 00:24:17 · 564 阅读 · 0 评论 -
hihocoder #1170 机器人 && 编程之美2015复赛
题意:时间限制:2000ms单点时限:1000ms内存限制:256MB描述小冰的N个机器人兄弟排成一列,每个机器人有一个颜色。现在小冰想让同一颜色的机器人聚在一起,即任意两个同颜色的机器人之间没有其他颜色的的机器人。假设任意相邻的两个机器人可以交换位置,请问最少需要多少次交换?输入第一行为一个整数T,为数据组数,之后每组数据两行。原创 2015-07-17 21:31:41 · 1099 阅读 · 0 评论 -
HDU 5212 Code
题解: 1.算是一种动态规划吧,d1[i]代表i的所有倍数的个数(包括自己),d2[i]代表以i为公约数的数对的个数 2.d2[i] = d1[i] ^ 2 - d2[2 * i] - d2[3 * i] - d2[4 * i]……….. 3.因为i的倍数构成的所有gcd值,要不就是i,要不就是i的倍数 总结: 1.对于WA3次就第二天再做这道题没有坚持太好,争取下次努力 2.一旦WA掉原创 2015-07-30 17:37:16 · 587 阅读 · 0 评论 -
uvaoj 1169 Robotruck
题解: 1.注意输出格式 总结: 1.保持编程风格一致是一个避免出错的好主意 2.做事保持冷静,今天碰到一些影响心情的事情,也算是没有受到太大的影响,感觉这样很好。冷静是很多好习惯的基础!一定要继续努力,保持冷静客观 3.下一步就是总结发生问题的地方,做到不再犯同样的错误了,甚至总结出为何我会发生这样的错误#include<iostream>#include<cstring>#incl原创 2015-10-30 21:38:57 · 537 阅读 · 0 评论