zoukankan      html  css  js  c++  java
  • caioj 1112 树形动态规划(TreeDP)7:战略游戏

    这道题和上一道题非常相似

    这道题是看边,上一道是看点。

    但是状态定义不同

    看边的话没有不放不安全这种状态

    因为当前结点的父亲无法让这颗子树没有看到的边看到

    所以这种状态不存在

    而上一道题存在不放不安全这种状态

    因为当前结点的父亲可以让这个不安全的结点变得安全

    边和点是两种不同的思考方式,得出得状态和方程也就不一样了

    还有这题不知道根。多叉树随便选个点做根,然后注意不要递归到父亲就好了

    #include<cstdio>
    #include<vector>
    #include<algorithm>
    #define REP(i, a, b) for(int i = (a); i < (b); i++)
    using namespace std;
    
    const int MAXN = 2123;
    int f[3][MAXN], n;
    vector<int> g[MAXN];
    
    void dfs(int u, int fa)
    {
    	f[0][u] = 0; 
    	f[1][u] = 1;	
    	REP(i, 0, g[u].size())
    	{
    		int v = g[u][i];
    		if(v == fa) continue;
    		dfs(v, u);
    		f[0][u] += f[1][v];
    		f[1][u] += min(f[1][v], f[0][v]);
    	}
    } 
    
    int main()
    {
    	scanf("%d", &n);
    	REP(i, 0, n) 
    	{
    		int u, k, v; 
    		scanf("%d%d", &u, &k);
    		REP(j, 0, k)
    		{
    			scanf("%d", &v);
    			g[u].push_back(v);
    			g[v].push_back(u);;
    		}	
    	}
    	dfs(0, -1);
    	printf("%d
    ", min(f[0][0], f[1][0]));
    
    	return 0;	
    } 
  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/sugewud/p/9819392.html
Copyright © 2011-2022 走看看