HDU 1176 免费馅饼
2021-05-20 07:57
225 查看
链接
免费馅饼 - http://acm.hdu.edu.cn/showproblem.php?pid=1176
分析
- 模型 - 横轴为位置,纵轴为时间;初始位置为红色,馅饼分布在网格中。 动态问题静态化
- 图中蓝色的馅饼接不到
- 虚线范围内的都能接到
- 状态及分类 设向右移动为1,向左移动为-1,不动为0,则 { … , 1 , … , − 1 , … , 0 , … ⏞ T 个 } \{\overbrace{…,1,…,-1,…,0,…}^{T个}\} {…,1,…,−1,…,0,… T个}为T秒末的状态
- (T, X)表示T秒末在X位置上,这表示了一类状态
- 末状态可以分为11类
到哪里去?
无法空间优化( 0 , 5 ) ⇒ (0,5)\Rightarrow (0,5)⇒ ( 1 , 4 ) 、 ( 1 , 5 ) 、 ( 1 , 6 ) ⇒ (1,4)、(1,5)、(1,6)\Rightarrow (1,4)、(1,5)、(1,6)⇒ ( 2 , 3 ) 、 ( 2 , 4 ) 、 ( 2 , 5 ) 、 ( 2 , 6 ) 、 ( 2 , 7 ) ⇒ (2,3)、 (2,4)、(2,5)、(2,6)、(2,7)\Rightarrow (2,3)、(2,4)、(2,5)、(2,6)、(2,7)⇒ ( 3 , 2 ) 、 ( 3 , 3 ) 、 ( 3 , 4 ) 、 ( 3 , 5 ) 、 ( 3 , 6 ) 、 ( 3 , 7 ) 、 ( 3 , 8 ) ⇒ (3,2)、 (3,3)、 (3,4)、(3,5)、(3,6)、(3,7)、(3,8)\Rightarrow (3,2)、(3,3)、(3,4)、(3,5)、(3,6)、(3,7)、(3,8)⇒ ( 4 , 1 ) 、 ( 4 , 2 ) 、 ( 4 , 3 ) 、 ( 4 , 4 ) 、 ( 4 , 5 ) 、 ( 4 , 6 ) 、 ( 4 , 7 ) 、 ( 4 , 8 ) 、 ( 4 , 9 ) ⇒ (4,1)、(4,2)、 (4,3)、 (4,4)、(4,5)、(4,6)、(4,7)、(4,8)、(4,9)\Rightarrow (4,1)、(4,2)、(4,3)、(4,4)、(4,5)、(4,6)、(4,7)、(4,8)、(4,9)⇒ ( 5 , 0 ) 、 ( 5 , 1 ) 、 ( 5 , 2 ) 、 ( 5 , 3 ) 、 ( 5 , 4 ) 、 ( 5 , 5 ) 、 ( 5 , 6 ) 、 ( 5 , 7 ) 、 ( 5 , 8 ) 、 ( 5 , 9 ) 、 ( 5 , 10 ) ⇒ (5,0)、(5,1)、(5,2)、 (5,3)、 (5,4)、(5,5)、(5,6)、(5,7)、(5,8)、(5,9)、(5,10)\Rightarrow (5,0)、(5,1)、(5,2)、(5,3)、(5,4)、(5,5)、(5,6)、(5,7)、(5,8)、(5,9)、(5,10)⇒ … … …… ……
从哪里来?
- 空间可优化,但边界处理复杂
( 0 , 5 ) ⇒ \xcancel{(0,5)\Rightarrow} (0,5)⇒ ( 1 , 4 ) 、 ( 1 , 5 ) 、 ( 1 , 6 ) ⇒ (1,4)、(1,5)、(1,6)\Rightarrow (1,4)、(1,5)、(1,6)⇒ ( 2 , 3 ) 、 ( 2 , 4 ) 、 ( 2 , 5 ) 、 ( 2 , 6 ) 、 ( 2 , 7 ) ⇒ (2,3)、 (2,4)、(2,5)、(2,6)、(2,7)\Rightarrow (2,3)、(2,4)、(2,5)、(2,6)、(2,7)⇒ ( 3 , 2 ) 、 ( 3 , 3 ) 、 ( 3 , 4 ) 、 ( 3 , 5 ) 、 ( 3 , 6 ) 、 ( 3 , 7 ) 、 ( 3 , 8 ) ⇒ (3,2)、 (3,3)、 (3,4)、(3,5)、(3,6)、(3,7)、(3,8)\Rightarrow (3,2)、(3,3)、(3,4)、(3,5)、(3,6)、(3,7)、(3,8)⇒ ( 4 , 1 ) 、 ( 4 , 2 ) 、 ( 4 , 3 ) 、 ( 4 , 4 ) 、 ( 4 , 5 ) 、 ( 4 , 6 ) 、 ( 4 , 7 ) 、 ( 4 , 8 ) 、 ( 4 , 9 ) ⇒ (4,1)、(4,2)、 (4,3)、 (4,4)、(4,5)、(4,6)、(4,7)、(4,8)、(4,9)\Rightarrow (4,1)、(4,2)、(4,3)、(4,4)、(4,5)、(4,6)、(4,7)、(4,8)、(4,9)⇒ ( 5 , 0 ) 、 ( 5 , 1 ) 、 ( 5 , 2 ) 、 ( 5 , 3 ) 、 ( 5 , 4 ) 、 ( 5 , 5 ) 、 ( 5 , 6 ) 、 ( 5 , 7 ) 、 ( 5 , 8 ) 、 ( 5 , 9 ) 、 ( 5 , 10 ) ⇒ (5,0)、(5,1)、(5,2)、 (5,3)、 (5,4)、(5,5)、(5,6)、(5,7)、(5,8)、(5,9)、(5,10)\Rightarrow (5,0)、(5,1)、(5,2)、(5,3)、(5,4)、(5,5)、(5,6)、(5,7)、(5,8)、(5,9)、(5,10)⇒ … … …… ……
- 末位置看成初始位置 11个初始位置能对应11类末状态
- 末位置在原初始位置的那些路径与原始问题的路径一一对应
- 从哪里来? 空间可优化,代码简洁
- 递推过程
( 0 , 0 ) 、 ( 0 , 1 ) 、 ( 0 , 2 ) 、 ( 0 , 3 ) 、 ( 0 , 4 ) 、 ( 0 , 5 ) 、 ( 0 , 6 ) 、 ( 0 , 7 ) 、 ( 0 , 8 ) 、 ( 0 , 9 ) 、 ( 0 , 10 ) (0,0)、(0,1)、(0,2)、 (0,3)、 (0,4)、\color{red}{(0,5)}\color{black}{、(0,6)、(0,7)、(0,8)、(0,9)、(0,10)} (0,0)、(0,1)、(0,2)、(0,3)、(0,4)、(0,5)、(0,6)、(0,7)、(0,8)、(0,9)、(0,10) ( 1 , 0 ) 、 ( 1 , 1 ) 、 ( 1 , 2 ) 、 ( 1 , 3 ) 、 ( 1 , 4 ) 、 ( 1 , 5 ) 、 ( 1 , 6 ) 、 ( 1 , 7 ) 、 ( 1 , 8 ) 、 ( 1 , 9 ) 、 ( 1 , 10 ) ⇑ (1,0)、(1,1)、(1,2)、 (1,3)、 (1,4)、(1,5)、(1,6)、(1,7)、(1,8)、(1,9)、(1,10)\Uparrow (1,0)、(1,1)、(1,2)、(1,3)、(1,4)、(1,5)、(1,6)、(1,7)、(1,8)、(1,9)、(1,10)⇑ ( 2 , 0 ) 、 ( 2 , 1 ) 、 ( 2 , 2 ) 、 ( 2 , 3 ) 、 ( 2 , 4 ) 、 ( 2 , 5 ) 、 ( 2 , 6 ) 、 ( 2 , 7 ) 、 ( 2 , 8 ) 、 ( 2 , 9 ) 、 ( 2 , 10 ) ⇑ (2,0)、(2,1)、(2,2)、 (2,3)、 (2,4)、(2,5)、(2,6)、(2,7)、(2,8)、(2,9)、(2,10)\Uparrow (2,0)、(2,1)、(2,2)、(2,3)、(2,4)、(2,5)、(2,6)、(2,7)、(2,8)、(2,9)、(2,10)⇑ ( 3 , 0 ) 、 ( 3 , 1 ) 、 ( 3 , 2 ) 、 ( 3 , 3 ) 、 ( 3 , 4 ) 、 ( 3 , 5 ) 、 ( 3 , 6 ) 、 ( 3 , 7 ) 、 ( 3 , 8 ) 、 ( 3 , 9 ) 、 ( 3 , 10 ) ⇑ (3,0)、(3,1)、(3,2)、 (3,3)、 (3,4)、(3,5)、(3,6)、(3,7)、(3,8)、(3,9)、(3,10)\Uparrow (3,0)、(3,1)、(3,2)、(3,3)、(3,4)、(3,5)、(3,6)、(3,7)、(3,8)、(3,9)、(3,10)⇑ ( 4 , 0 ) 、 ( 4 , 1 ) 、 ( 4 , 2 ) 、 ( 4 , 3 ) 、 ( 4 , 4 ) 、 ( 4 , 5 ) 、 ( 4 , 6 ) 、 ( 4 , 7 ) 、 ( 4 , 8 ) 、 ( 4 , 9 ) 、 ( 4 , 10 ) ⇑ (4,0)、(4,1)、(4,2)、 (4,3)、 (4,4)、(4,5)、(4,6)、(4,7)、(4,8)、(4,9)、(4,10)\Uparrow (4,0)、(4,1)、(4,2)、(4,3)、(4,4)、(4,5)、(4,6)、(4,7)、(4,8)、(4,9)、(4,10)⇑ ( 5 , 0 ) 、 ( 5 , 1 ) 、 ( 5 , 2 ) 、 ( 5 , 3 ) 、 ( 5 , 4 ) 、 ( 5 , 5 ) 、 ( 5 , 6 ) 、 ( 5 , 7 ) 、 ( 5 , 8 ) 、 ( 5 , 9 ) 、 ( 5 , 10 ) ⇑ (5,0)、(5,1)、(5,2)、 (5,3)、 (5,4)、(5,5)、(5,6)、(5,7)、(5,8)、(5,9)、(5,10)\Uparrow (5,0)、(5,1)、(5,2)、(5,3)、(5,4)、(5,5)、(5,6)、(5,7)、(5,8)、(5,9)、(5,10)⇑ … … ⇑ ……\Uparrow ……⇑
代码
/* hdu 1176 免费馅饼 逆路径 从哪里来?*/ #include <bits/stdc++.h> using namespace std; #define MXX 15 #define MXT 100010 int n, dp[MXT][MXX]; int main(){ int T, t, x; while(scanf("%d", &n), n){ T = 0; memset(dp, 0, sizeof dp); for(int i = 1; i <= n; ++i){ scanf("%d %d", &x, &t); dp[t][x]++; if(T < t) T = t; } for(int i = T; i >= 0; --i) { for(int j = 0; j <= 10; ++j){ // 越界访问,但无影响 dp[i][j] = max(dp[i+1][j-1], max(dp[i+1][j],dp[i+1][j+1]))+dp[i][j]; } } printf("%d\n", dp[0][5]); } return 0; }
/* hdu 1176 免费馅饼 逆路径 从哪里来?*/ #include <bits/stdc++.h> using namespace std; #define MXX 17 #define MXT 100010 int n, dp[MXT][MXX]; int main(){ int T, t, x; while(scanf("%d", &n), n){ T = 0; memset(dp, 0, sizeof dp); for(int i = 1; i <= n; ++i){ scanf("%d %d", &x, &t); dp[t][x+1]++; if(T < t) T = t; } for(int i = T; i >= 0; --i) { for(int j = 1; j <= 11; ++j){ dp[i][j] = max(dp[i+1][j-1], max(dp[i+1][j],dp[i+1][j+1]))+dp[i][j]; } } printf("%d\n", dp[0][6]); } return 0; }
相关文章推荐
- HDU - 1176 免费馅饼 (简单DP)
- 【HDU 1176】免费馅饼(dp)
- 免费馅饼 HDU - 1176 题解
- HDU1176 免费馅饼 -- 动态规划
- hdu 1176 免费馅饼(dp)
- HDU 1176 免费馅饼
- hdu 1176 免费馅饼
- HDU_1176_免费馅饼_16.4.23再做
- hdu 1176 免费馅饼
- HDU 1176 免费馅饼
- HDU-1176 免费馅饼 (线性状态dp)
- HDU 1176 免费馅饼
- HDU 1176免费馅饼(Dp)
- HDU 1176 免费馅饼
- hdu 1176 免费馅饼 (数塔dp)
- HDU 1176 免费馅饼
- G - 免费馅饼 HDU 1176 (动态规划---数塔的变形 )
- HDU 1176 免费馅饼
- 【基础dp】HDU 1176 免费馅饼
- HDU_1176_免费馅饼