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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

连锁商店 状态压缩dp(女赛)

發(fā)布時(shí)間:2025/3/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 连锁商店 状态压缩dp(女赛) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


題意 :

  • 每個(gè)點(diǎn)都屬于一家公司,每個(gè)點(diǎn)都對(duì)應(yīng)一個(gè)權(quán)值。對(duì)于一條路徑,屬于同一家公司的一些點(diǎn)的貢獻(xiàn)只能被算一次。給一張圖,路徑只能從小往大走,問從1走到每個(gè)點(diǎn)路徑上分別的最大權(quán)值和

思路 :

  • n最大為36,說明出現(xiàn)多個(gè)點(diǎn)的公司最大為n2\frac{n}{2}2n?,不難發(fā)現(xiàn),對(duì)于同一條路徑,如果這條路徑上有些點(diǎn)所屬公司只有這個(gè)點(diǎn),那么必然直接選上這個(gè)點(diǎn),對(duì)于只出現(xiàn)過一次的商店不需要存入狀態(tài)
  • 出現(xiàn)狀態(tài)分裂的狀況為出現(xiàn)多個(gè)點(diǎn)那些公司,這些才存入狀態(tài),那么時(shí)間復(fù)雜度是O(2n2?n2)O(2^{\frac{n}{2}}*n^{2})O(22n??n2),如果不優(yōu)化的話就是O(2n?n2)O(2^{n}*n^2)O(2n?n2)會(huì)T
  • 可以用二進(jìn)制壓縮出現(xiàn)多個(gè)點(diǎn)的公司的狀態(tài),dp[i][j]dp[i][j]dp[i][j]表示當(dāng)前在i點(diǎn),出現(xiàn)多個(gè)點(diǎn)的公司狀態(tài)為j
#include <iostream> #include <cstring> #include <algorithm> #include <cmath> #include <vector> #include <unordered_map> #define fi first #define se second #define pb push_backusing namespace std;typedef long long ll;const int N = 40, M = 1 << 20;int n, m; int c[N], w[N]; int dp[40][M]; vector<int> edge[N]; unordered_map<int, int> mp; vector<int> ve;void solve() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ){scanf("%d", &c[i]);mp[c[i]] ++ ;}for (int i = 1; i <= n; i ++ ) scanf("%d", &w[i]);for (auto w : mp)if (w.se > 1)ve.pb(w.fi);for (int i = 1, u, v; i <= m; i ++ ){scanf("%d%d", &u, &v);edge[v].pb(u); // v能由u到達(dá)}edge[1].pb(0);for (int i = 1; i <= n; i ++ ){int id = -1; // id為-1說明這個(gè)點(diǎn)所屬公司只有這家店,否則,id代表這個(gè)點(diǎn)所屬的公司for (int j = 0; j < (int)ve.size(); j ++ )if (c[i] == ve[j]){id = j;break;}if (id == -1) // 直接加上{for (int j = 0; j < (1 << (int)ve.size()); j ++ )for (auto from : edge[i])dp[i][j] = max(dp[i][j], dp[from][j] + w[c[i]]);}else // 需要判斷當(dāng)前取還是不取{for (int j = 0; j < (1 << (int)ve.size()); j ++ ) // 當(dāng)前,所有公司是否已經(jīng)被取過的狀態(tài){if (j & (1 << id)) // 當(dāng)前i這個(gè)點(diǎn)所在公司之前已經(jīng)取過,判斷當(dāng)前已經(jīng)取過的狀態(tài)和沒有取過然后加上當(dāng)前這個(gè){for (auto from : edge[i])dp[i][j] = max(dp[i][j], dp[from][j ^ (1 << id)] + w[c[i]]); // 后者是之前不取取當(dāng)前的}else // 計(jì)算不拿的狀態(tài){for (auto from : edge[i])dp[i][j] = max(dp[i][j], dp[from][j]);}}}int ans = 0;for (int j = 0; j < (1 << (int)ve.size()); j ++ ) ans = max(ans, dp[i][j]);cout << ans << endl;} }int main() { // ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int _ = 1; // cin >> _;while (_ -- ){solve();}return 0; }

總結(jié)

以上是生活随笔為你收集整理的连锁商店 状态压缩dp(女赛)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 香蕉黄色片 | av大片在线免费观看 | 国产综合99 | 大片av| 538任你躁在线精品免费 | 免费毛片播放 | 一级α片免费看刺激高潮视频 | 日日干夜夜撸 | 中文字幕在线播放第一页 | 明星双性精跪趴灌满h | 国产成a人亚洲精品 | 国产精品人妖 | 欧美性生交xxxxx久久久 | 日韩久久中文字幕 | 挪威xxxx性hd极品 | 欧美一区二区免费视频 | 久久久久性 | 欧美日韩另类视频 | 日韩阿v | 丝袜美腿中文字幕 | 国产黄色电影 | 欧美影院久久 | 日本啪啪动态图 | 麻豆人妻少妇精品无码专区 | 中国特级黄色片 | 国产新婚疯狂做爰视频 | 粉嫩av | 一级免费片 | 少妇丰满尤物大尺度写真 | 自慰无码一区二区三区 | 娇喘顶撞深初h1v1 | 国产伦理久久精品久久久久 | aise爱色av | 91碰碰| 国产日韩一区二区在线观看 | 麻豆精品在线观看 | 性高潮在线观看 | 国产农村妇女精品久久久 | 久久久久美女 | 久草老司机 | 国产天堂网 | 91成品视频 | 国产九色| 天天视频天天爽 | 国产suv精品一区二区四 | 黄色高清无遮挡 | 国产又黄又粗又爽 | 日本乱偷人妻中文字幕在线 | 精品少妇爆乳无码av无码专区 | 国产乱码精品一区二区三区不卡 | 小草av在线 | 吖v在线| 筱田优av| 国产区在线观看 | 国产小毛片 | 成人网免费视频 | 一区二区精品在线观看 | 自拍偷拍第3页 | 精品国产aⅴ麻豆 | 污网站免费在线观看 | 国产精品美女久久久久av爽 | 日韩涩 | 免费在线观看av网站 | 在线中文字幕亚洲 | 五月婷婷狠狠干 | 91精品国产乱码久久 | 国产传媒国产传媒 | jizzjizz在线观看 | 日日日日操 | 欧美成人另类 | 亚洲热热 | 无套内谢少妇毛片 | 草逼导航 | 国产97av| 少妇性生活视频 | 五月婷婷六月婷婷 | 中文字幕免费看 | 暖暖av在线 | 麻豆传媒网址 | 欧美视频一区二区三区 | 男女野外做受全过程 | 操人视频免费 | 免费看欧美黄色片 | 国产一级片黄色 | 中文字幕1页 | 国产成人av网站 | 黄色av网站免费观看 | 99在线看 | 我爱我色成人网 | 免费黄色在线网站 | 成人午夜精品一区二区三区 | aaa一区二区| 日韩精品一区二区三区色欲av | 伊人情人综合网 | 精品一区二区三区视频在线观看 | 秋霞视频一区二区 | 欧美人与性动交g欧美精器 国产在线视频91 | 亚洲啪啪免费视频 | 少妇高潮一区二区三区99小说 |