LightOJ-1017-Brush (III)
2017-10-21 10:15
393 查看
题目传送门
题意:一个二维平面上有N个灰尘,有一个宽度为w的刷子,一次可以刷一个w宽度的横线范围内的所有灰尘,只能刷k次,求刷的灰尘最多有多少。
思路:动态规划,dp[i][j]表示前i个灰尘刷j次最多可以刷掉的灰尘数。状态转移方程为
题意:一个二维平面上有N个灰尘,有一个宽度为w的刷子,一次可以刷一个w宽度的横线范围内的所有灰尘,只能刷k次,求刷的灰尘最多有多少。
思路:动态规划,dp[i][j]表示前i个灰尘刷j次最多可以刷掉的灰尘数。状态转移方程为
dp[i][j] = max(dp[i][j], dp[p-1][j-1]+sum)
#include <bits/stdc++.h> using namespace std; int main(void) { int T, cas=1; scanf("%d", &T); while (T--) { int n, w, k; scanf("%d %d %d", &n, &w, &k); int y[110]; for (int i = 1; i <= n; i++) scanf("%*d %d", &y[i]); int dp[110][110]; for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { dp[i][j] = dp[i-1][j]; int sum = 0; for (int p = i; p >= 1; p--) { if (y[i]-y[p]>w) break; sum++; dp[i][j] = max(dp[i][j], dp[p-1][j-1]+sum); } } } printf("Case %d: %d\n", cas++, dp [k]); } return 0; }
相关文章推荐
- lightoj 1017 - Brush (III) (DP)
- lightoj 1017 Brush (III) 基础DP
- LightOJ1017 Brush (III)(DP)
- LightOJ 1017 - Brush (III)
- lightOJ 1017 Brush (III) DP
- LightOJ 1017 Brush (III) 【DP】
- LightOJ1017---Brush (III) (dp)
- LightOJ - 1017 Brush (III)
- lightoj 1017 - Brush (III)
- lightoj1017 Brush (III) (dp)
- LightOJ 1017 Brush (III)
- LightOJ - 1017 Brush (III) (DP)
- Lightoj 1017 - Brush (III)
- LightOJ 1017 - Brush (III)
- LightOJ 1017 Brush (III) (DP)
- Lightoj - 1017 - Brush (III) 详解(经典线性DP)
- lightoj 1017 - Brush (III) 【离散化 + dp】
- [LightOJ1017]Brush (III)(dp)
- LightOJ 1017 Brush (III) (DP)
- LightOJ1017-Brush (III) -dp