[DP] HDU 1176
来源:互联网 发布:如何识别淘宝客链接 编辑:程序博客网 时间:2024/06/03 14:08
题意
0—10的点,不同时间在每个点上掉下来物品,只能到达左右两边距离为1和本身所在的位置,求最大物品数
思路
dp[x][t] = max ( dp[x-1][t-1],dp[x][t-1],dp[x+1][t-1]) + v[x][t]
代码
#include <algorithm>#include <cstdlib>#include <cstring>#include <iostream>#define N 100005#define INF 0x7f7f7f7fusing namespace std;int val[ N ][ 12 ];int dp[ N ][ 12 ];int main () { int n; while ( ~scanf ( "%d", &n ) && n ) { memset ( val, 0, sizeof ( val ) ); memset ( dp, 0, sizeof ( dp ) ); for ( int i = 0; i < 12; ++i ) dp[ 0 ][ i ] = -INF; dp[ 0 ][ 5 ] = 0; int t = 0; //记录最后一个馅饼的时间 for ( int i = 0; i < n; ++i ) { int x, T; scanf ( "%d%d", &x, &T ); val[ T ][ x ]++; if ( t < T ) t = T; } for ( int i = 1; i <= t; ++i ) for ( int j = 0; j <= 10; ++j ) { int mx = dp[ i - 1 ][ j ]; if ( j - 1 >= 0 ) mx = max ( dp[ i - 1 ][ j - 1 ], mx ); if ( j + 1 <= 10 ) mx = max ( dp[ i - 1 ][ j + 1 ], mx ); dp[ i ][ j ] = mx + val[ i ][ j ]; } int sol = 0; for ( int i = 0; i <= 10; ++i ) if ( sol < dp[ t ][ i ] ) sol = dp[ t ][ i ]; printf ( "%d\n", sol ); } return 0;}
阅读全文
0 0
- hdu 1176-DP
- HDU 1176 基础DP
- HDU 1176(时间dp)
- hdu 1176 dp
- dp hdu 1176
- 【DP】HDU 1176
- HDU 1176(dp)
- HDU 1176(基础DP)
- HDU 1176 DP
- hdu 1176 (dp)
- [DP] HDU 1176
- HDU-1176-简单dp
- hdu 1176免费馅饼 //dp
- HDU 1176 DP 免费馅饼
- hdu 1176 免费馅饼 (dp)
- HDU-1176 数字塔DP
- hdu 1176 免费馅饼 dp
- hdu 1176 免费馅饼 dp
- 光标变粗输入时删掉内容怎么办!
- LeetCode 4Sum
- LeetCode#413 Arithmetic Slices题解(C++版)
- JDBC规范——(6)准则
- mysql命令行参数
- [DP] HDU 1176
- 系统目录结构-ls命令-文件类型-alias命令
- Spring事务管理之几种方式实现事务
- 《语法俱乐部》读书笔记 从句
- Python告诉你iPhone X有多热卖(附代码)
- 3D捕鱼游戏的开发
- sdf
- 大数初步运用
- 毛哥的快乐生活 第一章 猫哥与毛哥