2013年8月20日

Codeforces2B - The least round way(DP)

摘要: 题目大意 给定一个N*N的格子,每个格子里有一个非负数,要求你找出从左上角到右下角的一条路径,使得它满足路径上的格子里的数全部乘起来的积尾部0最少 题解 如果要产生0肯定是2*5得出来的,最终的乘积可以表示为2^x*5^y*C,那么零的个数就是min(x,y)。我们可以先对每个格子里的数预处理下,计算出2和5的个数来,然后DP分别求出2和5的最小个数然后选两者中的最小值,输出路径方法没啥说的,很传... 阅读全文

posted @ 2013-08-20 21:45 仗剑奔走天涯 阅读(315) 评论(0) 推荐(0) 编辑

Codeforces4D - Mysterious Present(LIS)

摘要: 题目大意 给你一张宽为w,长为h的的贺卡,然后给你n个信封,每个信封宽为wi,长为hi,问你最多能在贺卡上嵌套多少个信封,如果某个信封i如果能够装在信封j里,当且仅当w[i]#include #include #include using namespace std;#define MAXN 5006int pre[MAXN],dp[MAXN];pair,int> a[MAXN];void... 阅读全文

posted @ 2013-08-20 21:05 仗剑奔走天涯 阅读(223) 评论(0) 推荐(0) 编辑

UVa10635 - Prince and Princess(LCS转LIS)

摘要: 题目大意 有两个长度分别为p+1和q+1的序列,每个序列中的各个元素互不相同,且都是1~n^2之间的整数。两个序列的第一个元素均为1.求出A和B的最长公共子序列长度。 题解 这个是大白书上的例题,不过这题真的很好,很考验思维。因为p和q都是250^2=62500,如果用LCS的话时间复杂度是O(pq),显然会超时。。。。不过这题的两个序列很特殊,就是没有重复的元素,这样可以把A中的元素重新编号为1... 阅读全文

posted @ 2013-08-20 20:47 仗剑奔走天涯 阅读(271) 评论(0) 推荐(0) 编辑

UVa10534 - Wavio Sequence(LIS)

摘要: 题目大意 给定一个长度为n的整数序列,求个最长子序列(不一定连续),使得该序列的长度为奇数2k+1,前k+1个数严格递增,后k+1个数严格递减。注意,严格递增意味着该序列中的两个相邻数不能相同。n#include #include #include using namespace std;#define MAXN 10005int a[MAXN],c[MAXN],d[MAXN];int n;vo... 阅读全文

posted @ 2013-08-20 20:31 仗剑奔走天涯 阅读(240) 评论(0) 推荐(0) 编辑

UVa1424–Salesmen(DP)

摘要: 题目大意 给定一个包含n(n#include #include #include using namespace std;#define MAXN 105#define INF 0x7fffffffint dp[MAXN*2][MAXN];bool grah[MAXN][MAXN];int a[MAXN*2];int main(){ int T; scanf("%d",&T); ... 阅读全文

posted @ 2013-08-20 20:23 仗剑奔走天涯 阅读(229) 评论(0) 推荐(0) 编辑

UVa11404 - Palindromic Subsequence(区间DP+打印路径)

摘要: 题目大意 给定一个字符串,要求你删除尽量少的字符,使得原字符串变为最长回文串,并把回文串输出,如果答案有多种,则输出字典序最小的 题解 有两种解法,第一种是把字符串逆序,然后求两个字符串的LCS,并记录LCS,长度就等于最长回文串的长度,不过求出来的LCS不一定是回文串,例如下面这个例子 s = 1 5 2 4 3 3 2 4 5 1reverse(s) = 1 5 4 2 3 3... 阅读全文

posted @ 2013-08-20 16:40 仗剑奔走天涯 阅读(310) 评论(0) 推荐(1) 编辑

导航