日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

POJ - 2385 Apple Catching (dp)

發(fā)布時(shí)間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ - 2385 Apple Catching (dp) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:有兩棵樹,標(biāo)號(hào)為1和2,在Tmin內(nèi),每分鐘都會(huì)有一個(gè)蘋果從其中一棵樹上落下,問最多移動(dòng)M次的情況下(該人可瞬間移動(dòng)),最多能吃到多少蘋果。假設(shè)該人一開始在標(biāo)號(hào)為1的樹下。

分析:

1、dp[x][y][z]---第x分鐘移動(dòng)了y次的情況下,現(xiàn)在位于標(biāo)號(hào)為z的樹下最多吃到的蘋果數(shù)。

2、枚舉所有的時(shí)間、次數(shù)和可能位于的樹下。

若第i分鐘該人位于標(biāo)號(hào)為k的樹下,第i + 1分鐘蘋果從標(biāo)號(hào)為a[i+1]的樹上落下。

(1)k==a[i],

此人站在標(biāo)號(hào)為k的樹下不移動(dòng),即可再吃到一個(gè)蘋果:dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k] + 1);

此人多方面權(quán)衡后選擇移動(dòng)到另一棵樹下,則移動(dòng)但吃不到蘋果:dp[i + 1][j + 1][Move(k)] = max(dp[i + 1][j + 1][Move(k)], dp[i][j][k]);

(2)k!=a[i],

此人移動(dòng)到另一棵樹下,即可再吃到一個(gè)蘋果:dp[i + 1][j + 1][Move(k)] = max(dp[i + 1][j + 1][Move(k)], dp[i][j][k] + 1);

此人多方面權(quán)衡后選擇不移動(dòng),因此吃不到蘋果:dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k]);

#include<cstdio> #include<cstring> #include<cstdlib> #include<cctype> #include<cmath> #include<iostream> #include<sstream> #include<iterator> #include<algorithm> #include<string> #include<vector> #include<set> #include<map> #include<stack> #include<deque> #include<queue> #include<list> #define lowbit(x) (x & (-x)) const double eps = 1e-8; inline int dcmp(double a, double b){if(fabs(a - b) < eps) return 0;return a > b ? 1 : -1; } typedef long long LL; typedef unsigned long long ULL; const int INT_INF = 0x3f3f3f3f; const int INT_M_INF = 0x7f7f7f7f; const LL LL_INF = 0x3f3f3f3f3f3f3f3f; const LL LL_M_INF = 0x7f7f7f7f7f7f7f7f; const int dr[] = {0, 0, -1, 1, -1, -1, 1, 1}; const int dc[] = {-1, 1, 0, 0, -1, 1, -1, 1}; const int MOD = 1e9 + 7; const double pi = acos(-1.0); const int MAXN = 1000 + 10; const int MAXT = 10000 + 10; using namespace std; int dp[MAXN][35][3]; int a[MAXN]; int Move(int k){return k == 1 ? 2 : 1; } int main(){int T, W;scanf("%d%d", &T, &W);for(int i = 1; i <= T; ++i){scanf("%d", &a[i]);}if(a[1] == 1){dp[1][0][1] = 1;}else{dp[1][1][2] = 1;}for(int i = 1; i <= T - 1; ++i){for(int j = 0; j <= W; ++j){for(int k = 1; k <= 2; ++k){if(k == a[i + 1]){dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k] + 1);dp[i + 1][j + 1][Move(k)] = max(dp[i + 1][j + 1][Move(k)], dp[i][j][k]);}else{dp[i + 1][j + 1][Move(k)] = max(dp[i + 1][j + 1][Move(k)], dp[i][j][k] + 1);dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k]);}}}}int ans = 0;for(int i = 0; i <= W; ++i){for(int j = 1; j <= 2; ++j){ans = max(ans, dp[T][i][j]);}}printf("%d\n", ans);return 0; }

  

轉(zhuǎn)載于:https://www.cnblogs.com/tyty-Somnuspoppy/p/6632914.html

總結(jié)

以上是生活随笔為你收集整理的POJ - 2385 Apple Catching (dp)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。