
URAL刷题
文章平均质量分 77
FDU_Nan
去做一个会思考,善于思考的人儿。
展开
-
URAL 递推
http://acm.timus.ru/problem.aspx?space=1&num=1225不知道是什么数列,有点像斐波那契数列,f[n] = f[n-1] + f[n-2]。#include #include #define LL __int64int main(){ LL f[50]; f[1] = 2; f[2] = 2; for(int i = 3; i原创 2014-03-14 17:01:04 · 858 阅读 · 0 评论 -
ural False Mirrors (状态压缩+记忆化搜索)
http://acm.timus.ru/problem.aspx?space=1&num=1152有n个阳台围城一圈,每个阳台都有若干个怪兽,一次可以打三个相邻的阳台上的怪兽,它们就会全部死去,但攻击者会受到没有死去怪兽的攻击,每个怪兽的攻击是1unit,问最后攻击者受到的最小伤害。n 1次WA,1次TLE。WA是没看透题意,我判断的递归终止的条件是怪兽数目小于等于原创 2014-08-25 20:43:38 · 942 阅读 · 0 评论 -
ural Threeprime Numbers(dp)
http://acm.timus.ru/problem.aspx?space=1&num=1586题意没看懂,看了别人的翻译。threeprime number的意思是任意三个连续的数组成的一个三位数是素数,注意必须是三位数。给出n,问满足条件的n位数有多少个。先把三位数的素数筛选出来并标记,设dp[i][j][k]表示到i位为止,最后两位是j和k的满足条件的数的个数。原创 2014-08-25 19:12:06 · 973 阅读 · 0 评论 -
ural Bicolored Horses(二维dp)
http://acm.timus.ru/problem.aspx?space=1&num=1167有n个马,黑白两种,依次放入k个马厩,将x匹马放在一个马厩的不快乐值为黑马数目*白马数目。问最后的不快乐值最小是多少?设dp[i][j]表示前i个马厩放了j匹马的最小不快乐值,那么dp[i][j] = min(dp[i-1][g]+tmp[g+1][j])。其中tmp是预处原创 2014-08-25 16:55:16 · 915 阅读 · 0 评论 -
ural Minimal Coverage (区间覆盖)
http://acm.timus.ru/problem.aspx?space=1&num=1303给出一些区间,选择尽量少的区间能覆盖到[0,m]。小白p154,典型的区间覆盖问题。一直在想怎么dp。。首先预处理,先按左端点从小到大排序,若左端点相同右端点从大到小排序,若区间x完全包含y,按照贪心的思想,y是没有意义的,有大区间可以选何必选择小区间。处理完事之后各个区间满足a1原创 2014-08-26 21:35:25 · 1040 阅读 · 0 评论 -
ural Mnemonics and Palindromes (dp)
http://acm.timus.ru/problem.aspx?space=1&num=1635给出一个字符串,将这个字符串分成尽量少的回文串。起初没有思路,想着应该先预处理出所有的回文串,然后进行dp。但是字符串的长度是4000,O(n^3)肯定不行,其实可以转化为O(n^2),就是枚举中点而不是枚举起点和终点,又NC了吧。然后就是线性的dp了。dp[i]表示到第i原创 2014-08-26 15:37:48 · 896 阅读 · 0 评论 -
ural Binary Lexicographic Sequence (dp + dfs)
http://acm.timus.ru/problem.aspx?space=1&num=1081有一个二进制序列,定义为不能有两个连续的1出现,才是合法的。给出序列的长度n,求合法的二进制序列中按字典序排序后第k个序列是什么。设dp[i][0]和dp[i][1]分别表示第i位上是0和1的个数。那么dp[i][0] = dp[i-1][0] + dp[i-1][1];d原创 2014-08-26 16:31:14 · 823 阅读 · 0 评论 -
URAL 1017. Staircases(递推)
http://acm.timus.ru/problem.aspx?space=1&num=1017给出一个数n,可以把它表示成若干个整数的和。要求这些数各不相同,且至少两个。一道类似整数划分的问题。不知道这个知识点真的不好办,想半天愣是想不出头绪。p[n][k]表示和为n且最小被加数不小于k的表示方法数。那么dp[n][k] = dp[n-k][k+1] + dp[n][k+1原创 2014-03-19 21:00:35 · 1236 阅读 · 0 评论 -
URAL 1119. Metro(简单dp)
http://acm.timus.ru/problem.aspx?space=1&num=1119题意:给一个n*m的方格,某人从(0,0)出发,要到达(n,m),给出k个点的坐标,当走到这些点时可以沿对角线到达,每方格边长为100,问他需走的最短路程。思路: 对于k个点,有dp[i][j] = min( dp[i-1][j], dp[i][j-1], dp[i-1][j-1原创 2014-03-15 09:55:13 · 1202 阅读 · 0 评论 -
URAL 1353. Milliard Vasya's Function(dp)
http://acm.timus.ru/problem.aspx?space=1&num=1353输入一个数 s,求 1~109中各位数之和等于s的数的个数。思路:dp[i][j]表示前i位表示的数之和是j的个数。那么dp[i][j] = dp[i-1][ j-c ] (0 #include #include #include using namespace std;原创 2014-03-15 09:49:07 · 968 阅读 · 1 评论 -
URAL 1073. Square Country(完全背包)
http://acm.timus.ru/problem.aspx?space=1&num=1073今天发生了各种事情,全是坏事,悲剧。状态降到了低谷。原本一道简单的题想跑偏了。有简化一下,拿n元钱去买地,已知每块地都是正方形,而且它的花费是a*a(a半径)。问这些钱所买地的最少块数,钱要正好花完。思路:完全背包问题。每种地都是无限的。每块地的花费是a*a,权值是1。所以问题就转原创 2014-03-18 20:46:26 · 1171 阅读 · 0 评论 -
ural Brackets Sequence (dp)
http://acm.timus.ru/problem.aspx?space=1&num=1183很经典的问题吧,看的黑书上的讲解。设dp[i][j]表示i到j括号合法需要的最少括号数。共有四种情况:s[i]s[j]配对,dp[i][j] = min( dp[i][j] , dp[i-1][j+1] );s[i] = '('或'[' dp[i][j] = min( d原创 2014-08-26 10:40:26 · 792 阅读 · 0 评论