最简单的背包问题了,本题应该除了背包就一个考点了:不能开二维数组。我没开过二维,不过看数据是不可以的。太大了。
做法有两种改进省内存DP:
1 所谓的滚动数组
2 逆向填表
很久没做背包DP,突然觉得这种背包问题很简单了。
下面给出两种解法:
1 calBag()是滚动数组
2 calBag2()是逆向填表
#pragma once
#include
#inclu...
分类:
其他好文 时间:
2014-06-27 08:09:43
阅读次数:
165
Football
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 2769
Accepted: 1413
Description
Consider a single-elimination football tournament involving 2n t...
分类:
其他好文 时间:
2014-06-22 11:58:17
阅读次数:
270
题目链接:http://codeforces.com/problemset/problem/216/D
题意:
对于一个梯形区域,如果梯形左边的点数!=梯形右边的点数,那么这个梯形为红色,否则为绿色,
问:
给定的蜘蛛网中有多少个红色。
2个树状数组维护2个线段。然后暴力模拟一下,因为点数很多但需要用到的线段树只有3条,所以类似滚动数组的思想优化内存。
#include
#includ...
分类:
Web程序 时间:
2014-06-22 07:11:35
阅读次数:
205
POJ 1018 Communication System (动态规划)
题目大意:
有T组测试数据,每组1个n,表示n行,接下来n行,每行一个m,表示有m个管道,每个管道有流量和费用,最后求从n行中,每行选择1个管道,要求 B/P最大 ,B表示所选的那个方案中n个管道的最小的那个的流量,P表示n个管道费用和。
解题思路:
朴素的动态规划,dp[i]记录,当前B为i的P,也就是流量的最小费用和。实现可以利用队列代替滚动数组。...
分类:
其他好文 时间:
2014-05-25 06:58:58
阅读次数:
214
题目链接:uva 11270 - Tiling Dominoes
题目大意:用1?2木块将给出的n?m大小的矩阵填满的方法总数。
解题思路:插头dp的裸题,dp[i][s]表示第i块位置,并且该位置对应的行数的状态为s的时候的总情况数。0表示为竖放预留留的位置,1表示填上的位置,不管是竖放还是横放。并且第一位状态用滚动数组优化空间。
#include
#include
#incl...
分类:
其他好文 时间:
2014-05-23 07:39:17
阅读次数:
194