HDU - 1176 免费馅饼

xiaoxiao2021-02-28  106

题目大意:中文题 解题思路:列一个矩阵,把每秒的坐标情况都记录下来,然后从矩阵最后一行(即最后一秒)开始往前递推,输出初始位置 5 的馅饼数即可。

#include<iostream> #include<stdio.h> #include<algorithm> #include<cmath> #include<string.h> #include<string> #include<queue> #include<map> #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) const int INF = 0x3f3f3f3f; const int NINF = -INF -1; const int MAXN = 500+5; using namespace std; int dp[100005][15]; int n; int main() { while (scanf("%d", &n) && n) { int maxt = 0; memset(dp, 0, sizeof(dp)); for (int i = 0; i < n; i++) { int T, x; scanf("%d%d", &x, &T); dp[T][x]++; if (maxt < T) maxt = T; } for (int i = maxt-1; i >= 0; i--) { dp[i][0] += max(dp[i+1][1], dp[i+1][0]); for (int j = 1; j < 11; j++) dp[i][j] += max(max(dp[i+1][j-1], dp[i+1][j]), dp[i+1][j+1]); } printf("%d\n", dp[0][5]); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-74244.html

最新回复(0)