博客
关于我
P2016 战略游戏(树形dp)
阅读量:414 次
发布时间:2019-03-05

本文共 2248 字,大约阅读时间需要 7 分钟。

????????????????????????????????????????????????????????????????????

????

?????????????????????????

  • ???????????????????????
  • ???????????????????DFS?????????????????????????
  • ?????????
    • f[u][0] ???? u ??????????????????
    • f[u][1] ???? u ?????????????????
  • ??????????????????????????????????????????????????????????????????????????????????
  • ???????????????????????
  • ????

    #include 
    #include
    using namespace std;int n;int adj[20000];int parent[20000];int children[20000][20000];int f[20000][2];void add_edge(int u, int v) { adj[u].push_back(v); adj[v].push_back(u);}void dfs(int u, int p) { parent[u] = p; for (int v : adj[u]) { if (v != p) { children[u].push_back(v); dfs(v, u); } }}int main() { cin >> n; adj.resize(n); for (int i = 0; i < n; ++i) { adj[i].clear(); } for (int i = 0; i < n; ++i) { int k, x1; cin >> x1 >> k; for (int j = 0; j < k; ++j) { int y1; cin >> y1; add_edge(x1, y1); } } parent[0] = -1; children[0].clear(); dfs(0, -1); for (int u = 0; u < n; ++u) { f[u][0] = 0; f[u][1] = 0; } stack
    stack; stack.push(0); bool visited[20000]; visited[0] = true; while (!stack.empty()) { int u = stack.top(); stack.pop(); vector
    child_indices; for (size_t i = 0; i < children[u].size(); ++i) { if (!visited[children[u][i]]) { child_indices.push_back(i); } } for (size_t i = 0; i < child_indices.size(); ++i) { int v = children[u][child_indices[i]]; if (!visited[v]) { visited[v] = true; stack.push(v); } } for (size_t i = 0; i < children[u].size(); ++i) { int v = children[u][i]; if (!visited[v]) { f[u][0] = f[v][1]; f[u][1] += f[v][0]; } } } int result = min(f[0][0], f[0][1]); cout << result << endl;}

    ????

  • ??????????????????????????
  • DFS????????????????????
  • ?????????????????????
  • ????????????????????????????????????????
  • ????????????????
  • ??????????????????????????????????

    转载地址:http://egpzz.baihongyu.com/

    你可能感兴趣的文章
    pandas GROUPBY+变换和多列
    查看>>
    pandas Groupby:创建两列的Groupby时,如何按正确的顺序对工作日进行排序?
    查看>>
    Pandas matplotlib 无法显示中文
    查看>>
    pandas PIVOT_TABLE保持索引
    查看>>
    Pandas Plots:周末的单独颜色,x 轴上漂亮的打印时间
    查看>>
    pandas to_latex() 转义数学模式
    查看>>
    Pandas 中文官档 ~ 基础用法4
    查看>>
    Pandas 中的多索引旋转
    查看>>
    Pandas 中的日期范围
    查看>>
    pandas 中的时间序列箱线图
    查看>>
    Pandas 使用指南
    查看>>
    pandas 分组并使用最小值更新
    查看>>
    pandas 均值(mean), 均值填充NA(fill_na)
    查看>>
    Pandas 对数据框的布尔比较
    查看>>
    pandas 将通话数据分割为15分钟的间隔
    查看>>
    pandas 找到局部最大值和最小值
    查看>>
    pandas 按日期和年份分组,并汇总金额
    查看>>
    pandas 数据帧到PostgreSQL表中使用的是没有SQLAlChemy的心理复制2吗?
    查看>>
    pandas 数据框将 INT64 列转换为布尔值
    查看>>
    pandas 数据框条件 .mean() 取决于特定列中的值
    查看>>