
挑战程序设计竞赛
yxg_123
这个作者很懒,什么都没留下…
展开
-
挑战2.7.2 Round 2 2009 A. Crazy Rows 贪心
题目链接:https://code.google.com/codejam/contest/204113/dashboard题意:题解:我们只关心每一行最后一个1的位置。 考虑第i行应该放什么,就是a[j]<=i的都行,要交换次数最少,就找到离i最近的一行,然后累计答案。代码:#include <bits/stdc++.h>using namespace std;typedef long lon原创 2017-03-09 11:53:55 · 270 阅读 · 0 评论 -
挑战练习题2.3动态规划 poj1065 Wooden Sticks 最长递减子序列
题目链接:http://poj.org/problem?id=1065题意:C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?题解:最小值其实等于按l递增排序后原创 2017-03-10 19:16:24 · 305 阅读 · 0 评论 -
挑战练习题2.3动态规划 poj3181 Dollar Dayz 完全背包
题目链接:http://poj.org/problem?id=3181题意:农夫约翰有N元钱,市场上有价值1……K的商品无限个,求所有的花钱方案?题解:http://www.hankcs.com/program/cpp/poj-3181-dollar-dayz.html dp[i][j] := 用i种价格配出金额j的方案数。 那么dp[i][0] = 1,使用任何价格配出金额0的方案个数都是1(原创 2017-03-10 18:21:51 · 292 阅读 · 0 评论 -
挑战练习题2.3动态规划 poj3046 Ant Counting dp
题目链接:http://poj.org/problem?id=3046题意:有T种蚂蚁,共A只。同一个种的蚂蚁长得一样,但是不同种的蚂蚁牙齿颜色不同。任取n只蚂蚁(S<=n<=B),求能组成几种集合?题解:dp[i][j] := 使用前i个种可以配出来j个的集合的个数。 那么dp[0][0] = 1,不使用任何蚂蚁配出空集的个数为1。挑战P69页的优化(O(n^2))真TM不懂 代码:#inclu原创 2017-03-10 17:38:20 · 260 阅读 · 0 评论 -
挑战练习题2.3动态规划 poj2385Apple Catching dp
题目链接:http://poj.org/problem?id=2385题意:给你t,w 表示有t分钟掉苹果,你可以移动w次,求出在最大次数时最多能接到多少苹果。题解:dp[i][j] : 表示第i分钟 跑了j次 得到的最大值代码:#include <iostream>#include <cstdio>using namespace std;typedef long long ll;#def原创 2017-03-10 10:36:36 · 224 阅读 · 0 评论 -
挑战练习题2.3动态规划 poj1742 Coins 多重背包
题目链接:http://poj.org/problem?id=1742题意:有n种面额的硬币,面额个数分别为A_i、C_i,求最多能搭配出几种不超过m的金额?题解:多重部分和问题。多重背包优化? O(n^2) dp[i][j] := 用前i种硬币凑成j时第i种硬币最多能剩余多少个(-1表示配不出来) 1.如果dp[i - 1][j] >= 0(前i-1个数可以凑出j,那么第i个数根本用不着)直接原创 2017-03-10 12:05:27 · 250 阅读 · 0 评论 -
挑战练习题2.3动态规划 poj3280Cheapest Palindrome 区间dp
题目链接:http://poj.org/problem?id=3280题意:字串S长M,由N个小写字母构成。欲通过增删字母将其变为回文串,增删特定字母花费不同,求最小花费。题解:dp[i][j]表示将原字串s的子字串s[i…j]变换成回文的最小花费 因为删除和增加一个字符都是一样的效果,取最小值就好了代码:#include <iostream>#include <cstdio>#include原创 2017-03-10 11:23:39 · 237 阅读 · 0 评论 -
挑战练习题2.3动态规划 poj3616Milking Time dp
题目链接:http://poj.org/problem?id=3616题意:奶牛Bessie在0~N时间段产奶。农夫约翰有M个时间段可以挤奶,时间段f,t内Bessie能挤到的牛奶量e。奶牛产奶后需要休息R小时才能继续下一次产奶,求Bessie最大的挤奶量。题解:定义dp[i]表示第i个时间段挤奶能够得到的最大值,拆开来说,就是前面 i – 1个时间段任取0到i – 1个时间段挤奶,然后加上这个时间原创 2017-03-10 11:01:34 · 285 阅读 · 0 评论 -
挑战2.7.3 Round 1C 2009 C. Bribe the Prisoners 区间dp
题目链接:https://code.google.com/codejam/contest/189252/dashboard#s=p2题意:题解:区间dp dp[i][j] 表示释放a[i]~a[j] 【不包含两端的囚犯】所需要的最小费用 枚举其中最先释放的最小费用 则 dp[i][j] = min(dp[i][j],dp[i][k]+dp[k][j]) {i+1<=k<=j-1}代码:#inc原创 2017-03-09 12:35:55 · 240 阅读 · 0 评论 -
挑战2.7.1 Round 1A 2008 A. Minimum Scalar Product 贪心
题目链接:https://code.google.com/codejam/contest/32016/dashboard#s=p0题意:题解:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#d原创 2017-03-09 11:37:25 · 256 阅读 · 0 评论 -
挑战练习题2.3动态规划 poj1631 Bridging signals 最长递增子序列
题目链接:http://poj.org/problem?id=1631题意:直接看样例,题意是啥?题解:LIS, O(nlogn)的,维护一个数组ans,手动模拟一下就懂了。代码:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long原创 2017-03-10 19:25:03 · 201 阅读 · 0 评论