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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

洛谷P2016战略游戏

發(fā)布時(shí)間:2024/4/17 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P2016战略游戏 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

傳送門啦

戰(zhàn)略游戲這個(gè)題和保安站崗很像,這個(gè)題更簡(jiǎn)單,這個(gè)題求的是士兵人數(shù),而保安站崗需要求最優(yōu)價(jià)值。

定義狀態(tài)$ f[u][0/1] $ 表示 $ u $ 這個(gè)節(jié)點(diǎn)不放/放士兵

根據(jù)題意,如果當(dāng)前節(jié)點(diǎn)不放置士兵,那么它的子節(jié)點(diǎn)必須全部放置士兵,因?yàn)橐獫M足士兵可以看到所有的邊,所以
$ f[u][0]+=f[v][1] $ ,其中$ v $ 是 $ u $ 的子節(jié)點(diǎn)

如果當(dāng)前節(jié)點(diǎn)放置士兵,它的子節(jié)點(diǎn)選不選已經(jīng)不重要了(因?yàn)闃?shù)形dp自下而上更新,上面的節(jié)點(diǎn)不需要考慮),所以
$ f[u][1]+=min(f[v][0],f[v][1]) $

#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 1505;inline int read(){char ch = getchar();int f = 1 , x = 0;while(ch > '9' || ch < '0'){if(ch == '-')f = -1; ch = getchar();}while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + ch - '0';ch = getchar();}return x * f; }int n,flag,k,x; int head[maxn],tot; int f[maxn][5];struct Edge{int from,to,next; }edge[maxn << 1];void add(int u,int v){edge[++tot].from = u;edge[tot].to = v;edge[tot].next = head[u];head[u] = tot; }void dfs(int u,int fa) {f[u][1] = 1 , f[u][0] = 0;for(int i=head[u];i;i=edge[i].next) {int v = edge[i].to;if(v != fa) {dfs(v , u);f[u][0] += f[v][1];f[u][1] += min(f[v][1] , f[v][0]);}} }int main(){n = read();for(int i=0;i<=n-1;i++){flag = read(); k = read();if(k == 0)continue;for(int i=1;i<=k;i++){x = read();add(flag , x); add(x , flag);}}dfs(0 , -1);printf("%d\n",min(f[0][1] , f[0][0]));return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/Stephen-F/p/9882821.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的洛谷P2016战略游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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