POJ_3342_Party at Hali-Bula_树形DP

POJ_3342_Party at Hali-Bula_树形DP

题意:直接上司和本人不能同时参加,求最多参加人数,并回答是否唯一解。

分析:常规树形DP,需要再维护一下选/不选当前点取得最大值时是否为唯一解。

就是在转移时判断该状态是从哪转移过来的,最后答案同理。

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 220
#define mem(x) memset(x,0,sizeof(x))
int head[N],to[N<<1],nxt[N<<1],flg,cnt,n;
int f[N],g[N],h[N],d[N];
char ch[N][N],a[N],b[N];
void add(int u,int v)
{
    to[++cnt]=v;
    nxt[cnt]=head[u];
    head[u]=cnt;    
}
void dfs(int x,int y)
{
    f[x]=1;d[x]=h[x]=1;
    for(int i=head[x];i;i=nxt[i])
    {
        if(to[i]!=y)
        {
            dfs(to[i],x);
            f[x]+=g[to[i]];
            g[x]+=max(g[to[i]],f[to[i]]);
            if(g[to[i]]>f[to[i]]&&d[to[i]]==0)d[x]=0;
            else if(g[to[i]]<f[to[i]]&&h[to[i]]==0)d[x]=0;    
            else if(g[to[i]]==f[to[i]])d[x]=0;
            if(d[to[i]]==0)h[x]=0;
        }
    }
}
int main()
{
    while(scanf("%d",&n))
    {
        if(!n)break;
        mem(d);mem(h);mem(f);mem(g);mem(head);
        cnt=0;flg=0;
        scanf("%s",ch[1]);
        int now=1;
        for(int i=1;i<n;i++)
        {
            scanf("%s%s",a,b);
            int na=0,nb=0;
            for(int j=1;j<=now;j++)
            {
                if(strcmp(ch[j],a)==0)
                {
                    na=j;
                }
                if(strcmp(ch[j],b)==0)
                {
                    nb=j;
                }
            }
            if(!na)
            {
                na=++now;
                strcpy(ch[now],a);    
            }
            if(!nb)
            {
                nb=++now;
                strcpy(ch[now],b);    
            }
            add(na,nb);
            add(nb,na);
        }
        dfs(1,0);
        printf("%d ",max(f[1],g[1]));
        if(f[1]==g[1])flg=1;
        if(f[1]>g[1]&&h[1]==0)flg=1;
        if(f[1]<g[1]&&d[1]==0)flg=1;
        puts(flg?"No":"Yes");
    }
}

 

转载于:https://www.cnblogs.com/suika/p/8433141.html

01、数据简介 出口韧性是地级市在面对外部震荡和压力时,能够承受并迅速适应、应对变化的能力。这种能力体现在地级市经济结构的灵活性、创新能力和竞争力,以及地方政府的政策支持和产业调整能力等多个方面。 城市出口韧性对于城市的经济发展、就业稳定、国际贸易地位以及风险抵御能力等方面都具有重要影响。因此,城市应加强出口韧性的建设,提高应对外部冲击的能力,以推动其经济的可持续发展。 数据名称:地级市-城市出口韧性数据 数据年份:2011-2022年 02、相关数据 代码 年份 地区 城市 省份 城市出口韧性 距离港口的最近距离 最终进口额_百万人民币2 最终出口额_百万人民币2 人均道路面积2 年末金融机构各项贷款余额万元2 地区生产总值万元2 科学支出万元2 地方财政一般预算内支出万元2 城镇居民人均可支配收入元2 固定资产投资2 实际使用外商投资额百万美元2 城镇化率2 外贸依存度 出口贸易 年平均汇率 实际使用外商投资额百万人民币2 外资依存度 金融发展水平 财政投资力度 科学技术水平 出口偏离度 x_地区生产总值万元2 x_城镇化率2 x_人均道路面积2 x_外贸依存度 x_出口贸易 x_出口偏离度 x_金融发展水平 x_城镇居民人均可支配收入元2 x_财政投资力度 x_科学技术水平 x_距离港口的最近距离 x_外资依存度 地区生产总值万元2_sum y_地区生产总值万元2 城镇化率2_sum y_城镇化率2 人均道路面积2_sum y_人均道路面积2 外贸依存度_sum y_外贸依存度 出口贸易_sum y_出口贸易 出口偏离度_sum y_出口偏离度 金融发展水平_sum y_金融发展水平 城镇居民人均可支配收入元2_sum y_城镇居民人均可支配收入元2 财政投资力度_sum y_财政投资力度 科学技术水平_sum y_科学技术水平
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值