zoukankan      html  css  js  c++  java
  • 洛谷P1455 搭配购买

    洛谷P1455 搭配购买

    题目描述

    明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有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.

    代码

    缩点+背包,可以用并查集也可以用tarjan算法。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int maxn=10000+5;
    inline int read()
    {
        int x=0,f=1; char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    int n,m,w;
    int c[maxn],v[maxn],father[maxn],f[maxn];
    int find(int x)
    {
        if(x!=father[x]) father[x]=find(father[x]);
            return father[x];
    }
    int main()
    {
        n=read();m=read();w=read();
        for(int i=1;i<=n;i++) father[i]=i;
        for(int i=1;i<=n;i++){
            c[i]=read();v[i]=read();
        }
        for(int i=1;i<=m;i++){
            int x,y;
            x=read();y=read();
            int r1=find(x),r2=find(y);
            if(r1!=r2)
            {
                father[r2]=r1;
                c[r1]+=c[r2];
                v[r1]+=v[r2];
                c[r2]=0;v[r2]=0;
            }
        }
        for(int i=1;i<=n;i++) if(c[i]||v[i])
            for(int j=w;j>=c[i];j--)
                f[j]=max(f[j],f[j-c[i]]+v[i]);
        printf("%d
    ",f[w]);
        return 0;
    }
        
  • 相关阅读:
    生成证书时Distribution下面App Store and Ad Hoc 选项不能选择的原因及解决办法
    ios 实现版本更新检查
    ios 同步Get请求的实现
    UI设计规范整理一iOS字体和切图及规范
    Mac下使用抓包工具--Charles进行抓包
    iOS 审核被拒
    Xcode 9 compiling IB documents for earlier than ios 7 is no longer supported
    解决JSON包含HTML标签无法显示的问题
    OC与swift相互调用
    UIApplication深入研究
  • 原文地址:https://www.cnblogs.com/huihao/p/7788522.html
Copyright © 2011-2022 走看看