• 搭配购买


    题目描述

    明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵已经被老板编号为1,2,3,……,n,并且每朵云都有一个价值,但是商店的老板是个很奇怪的人,他会告诉你一些云朵要搭配起来买才卖,也就是说买一朵云则与这朵云有搭配的云都要买,电脑组的你觉得这礼物实在是太新奇了,但是你的钱是有限的,所以你肯定是想用现有的钱买到尽量多价值的云。

    输入格式

    第1行n,m,w,表示n朵云,m个搭配和你现有的钱的数目

    第2行至n+1行,每行ci,di表示i朵云的价钱和价值

    第n+2至n+1+m ,每行ui,vi表示买ui就必须买vi,同理,如果买vi就必须买ui

    输出格式

    一行,表示可以获得的最大价值

    输入输出样例

    输入 #1
    5 3 10
    3 10
    3 10
    3 10
    5 100
    10 1
    1 3
    3 2
    4 2


    输出 #1
    1
    

    说明/提示

    30%的数据满足:n<=100

    50%的数据满足:n<=1000;m<=100;w<=1000;

    100%的数据满足:n<=10000;0<=m<=5000;w<=10000.

    答案很明显是可以的。可以利用并查集,将这m组配对购买的商品划到一个集合里,这样就可以确定买了其中一个就得买另一个。

    #include<cstdio>
    #include<iostream>
    
    using namespace std;
    
    inline int read(){
       int s=0,w=1;
       char ch=getchar();
       while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
       while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
       return s*w;
    }
    
    int n,m,we,fa[10005],w[10005],c[10005],dp[10005];
    
    inline int find(int x){
        if(fa[x]!=x) fa[x]=find(fa[x]);
        return fa[x];
    }
    
    inline void C(int x,int y){
        int f1=find(x);
        int f2=find(y);
        if(f1!=f2){
            fa[f1]=f2;
            c[f2]+=c[f1];
            w[f2]+=w[f1];
        }
    }
    
    int main(){
        n=read();
        m=read();
        we=read();
        for(int i=1;i<=n;i++){
            fa[i]=i;
        }
        for(int i=1;i<=n;i++){
            c[i]=read(),w[i]=read();
        }
        for(int i=1;i<=m;i++){
            int u=read(),v=read();
            C(u,v);
        }
        for(int i=1;i<=n;i++){
            if(fa[i]==i){
                for(int j=we;j>=c[i];j--){
                    dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
                }
            }
        }
        printf("%d",dp[we]);
    }
  • 相关阅读:
    城市社会经济专项规划之生态产业规划
    土地资源承载力研究
    生态功能区划方法之三:聚类分析法和生态融合法
    生态功能区划综述
    生态功能区划及生态规划的重要内容:生态环境现状评价
    生态功能区划方法之一:生态敏感性分析法
    生态环境专项规划
    城市社会经济专项规划之生态人居规划
    城市生态规划关键技术方法之五:生态支持系统瓶颈分析方法
    环境容量研究
  • 原文地址:https://www.cnblogs.com/hrj1/p/11131688.html
Copyright © 2020-2023  润新知