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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

尼克的任务 dp 洛谷1280

發(fā)布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 尼克的任务 dp 洛谷1280 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  蒟蒻表示老久沒看過dp題目了,,挺水的一道dp題目都沒想出來,,,

  首先設(shè)dp[i]表示從開始到i時間的最大空閑時間,用vector to[x] 表示從x點(diǎn)開始的任務(wù)結(jié)束時間,cnt[x]表示從x開始的任務(wù)個數(shù),初始化dp[i] i = 1 -> n 為 -1, dp[0]為0

  轉(zhuǎn)移時,對于dp[i],如果dp[i-1] 為 -1,無法完成轉(zhuǎn)移

  如果dp[i-1] > 0分兩種情況

  1、如果i時刻無任務(wù),直接dp[i] = max{dp[i], dp[i-1] + 1}

  2、如果i時刻有任務(wù),枚舉任務(wù),使dp[to[i][j]] = max{dp[to[i][i]],dp[i-1]}

  輸出dp[n]即為結(jié)果

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <vector>
 5 
 6 
 7 const int maxn = 10000 + 500;
 8 int n, k;
 9 std :: vector <int> to[maxn];
10 int dp[maxn], cnt[maxn];
11 int tx, ty;
12 
13 int main () {
14     scanf("%d %d", &n, &k);
15     for (int i = 1; i <= k; i++) {
16         scanf("%d %d", &tx, &ty);
17         to[tx].push_back(tx + ty - 1);
18         cnt[tx]++;
19     }
20     for (int i = 1; i <= n; i++) dp[i] = -1;
21     dp[0] = 0;
22     for (int i = 1; i <= n; i++) {
23         if (dp[i-1] >= 0) {
24             if (cnt[i] > 0) {
25                 for (int j = 0; j < to[i].size(); j++) 
26                     dp[to[i][j]] = std :: max(dp[to[i][j]], dp[i-1]);
27             } else {
28                 dp[i] = std :: max(dp[i], dp[i-1] + 1);
29             }
30         }
31     }
32     printf("%d", dp[n]);
33     return 0;
34 }

?

??

轉(zhuǎn)載于:https://www.cnblogs.com/CtsNevermore/p/5993094.html

總結(jié)

以上是生活随笔為你收集整理的尼克的任务 dp 洛谷1280的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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