
动态规划
再远不过PC
这个作者很懒,什么都没留下…
展开
-
poj 1185 炮兵阵地 状态压缩
题意:给一个地图,要求只有在P这个位置上炮兵,要求炮兵相互不能打到,炮兵能打上下左右最大两格,求炮兵最多能放多少个?题解:1:输入地图,创建一个状态地图,(能放的为0,不能放的为1)2:先筛选出所有 在一层里可以摆放的炮兵 状态,即1001 这样的,因为连续三行不能在同一列,而且同一层起码中间有2个格子。3:求的是炮兵的个数,而不是放炮兵的种类数,所以我们要统计每层每个状态,的原创 2016-09-08 01:05:52 · 362 阅读 · 0 评论 -
数位DP HDU 3555
#include #include #include #include #define MAX 1000005using namespace std;int max(int a,int b){ if(a>b) return a; else return b;}int main(){ int n,m; long long dp[20原创 2016-08-10 14:56:18 · 287 阅读 · 0 评论 -
LOJ 1017 普通dp
题意:给几个点,和一个一定宽度的刷子,在一定次数中,刷过最多的点的个数 。刷子可以水平无线延长刷。题解:dp[i][k] 第i个点,第k次刷,初始化: dp[ i ] [1] 第一次 刷 i 点,会~接下来~影响几个点。转移: dp[ i ][ k ] =max( dp[ i ] [ k ] ,dp[ i ][ 1 ] + dp[ j ][ k-1 ]);原创 2016-09-28 23:38:51 · 403 阅读 · 0 评论 -
POJ 3311 Hie with the Pie 状态压缩+佛洛依德
题意:n个城市,然后再给你一张地图,mp[ i ][ j ],即城市i到城市j所花的路程。题解:1:城市i到城市j的需要最短的距离 dis[ i ][ j ];2:枚举所有经过城市的状态 1)枚举城市,寻找该状态走过的城市 1. 状态 是只经过了这个城市,最短距离就是0到这个城市(初始化) 2. 枚举除了这个城原创 2016-09-08 00:05:00 · 298 阅读 · 0 评论 -
POJ 3254 Corn Fields 状态压缩dp入门
原文:http://blog.youkuaiyun.com/y990041769/article/details/24658419在原文基础上,加上自己的理解状态压缩dp入门1、二进制的移动知识基础:#include int main(){ int k=5; printf("%d\n", 1<<k);// 1 向左移动k位 100000,2^5 32 printf("%d\n", 1原创 2016-09-05 00:33:25 · 380 阅读 · 0 评论 -
HDU 5410 (0 1背包+ 完全背包)
题意: 总钱M,种类N个,每个种类有价值w[i] ,个数a[i],b[i],花一份价值,得a[i]个物品,送b[i]个(只赠送一次),求最多能拿的个数题解:先根据a[i]+b[i],01背包,再倒着背回a[i],求出最大的a[i]的个数#include #include #include #include using namespace std;const int N=2005原创 2016-08-12 14:26:19 · 321 阅读 · 0 评论 -
POJ 2342 (树状DP)入门
入门比较好的博客#include "cstdio"#include "iostream"#include "cstring"#include "algorithm"using namespace std;const int MAX=6005;/*树形dp 入门 题意:公司举办 晚会,为了提高活跃度(每个人都有自己的活跃度),下属不能和直接上司一起出现,问最大活跃度题解: d原创 2016-08-11 12:05:16 · 390 阅读 · 0 评论 -
HDU 2376 Average distance 树形dp
学到了一种 建树 方法,比 之前光靠 father[] 来建树更加 可靠,因为这个可以双向。dfs (i,j) i节点 便是根节点,可以换不同的根节点,但是答案输出的时候也要是相应的根节点进行输出,这个也可以理解。初学的时候,可以在dfs函数中,在dfs上下,输出father,root,son 这三个值,可以便于理解题目:Given a tree, calculate the原创 2016-09-10 09:51:05 · 478 阅读 · 0 评论 -
HDU 1176
#include "cstdio"#include "iostream"#include "cstring"#include "algorithm"using namespace std;const int INF=0x3f3f3f3f;const int N=100005;int dp[N][11],a[N][11];//dp[i][j] i为时间 j为地点 int main()原创 2016-08-08 14:46:43 · 309 阅读 · 0 评论 -
数据结构 RMQ
学习一下 RMQ,好吧,算是dp学习链接→ 戳这里和戳这里poj 3264 算是模板题RMQ,求给定区间的最值问题的,非线段树方法,DP#include #include #include #include #include using namespace std;const int maxn=50010;int a[maxn];int ma[maxn][20]原创 2016-09-28 15:03:28 · 361 阅读 · 0 评论