zoukankan      html  css  js  c++  java
  • 洛谷P2113 看球泡妹子

    P2113 看球泡妹子

    题目背景

    2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情。

    题目描述

    本届世界杯共有N支球队,M场比赛。男球迷小明喜欢看比赛,女球迷小红喜欢看帅哥。每支球队在小明眼里的实力值为Ai,在小红眼里的帅哥数量为Bi。

    每场比赛有两个球队对抗,它们的编号分别是Pi和Qi。小明认为一场比赛的精彩度等于两队实力的乘积,小红则认为是两队帅哥数量之和。

    由于体力的限制,他们最多只能看K场比赛。当然,只要看比赛,两个人一定会一起看。小明作为男生,理应迁就一下女生,所以,请你写一个程序,求出小红看到比赛的精彩度总和不小于C的情况下,小明看到比赛的精彩度的最大总和。

    输入输出格式

    输入格式:

    第1行,4个正整数N,M,K,C。

    第2行,N个空格隔开的正整数Ai。

    第3行,N个空格隔开的正整数Bi。

    之后M行,每行两个正整数Pi,Qi。

    输出格式:

    一行,一个正整数表示小明看到比赛的精彩度的最大总和。如果无论如何都无法满足小红的要求,输出-1.

    输入输出样例

    输入样例#1:
    4 3 2 5
    2 2 1 3
    1 1 1 2
    1 2
    2 3
    3 4
    输出样例#1:
    7

    说明

    对于20%数据,N,M,K<=5。

    对于全部数据,N<=100,K<=M<=100,Ai,Bi<=10,C<=1000.

    /*
        二维费用的背包问题,题目中限制条件有两个,一个是小红的最低精彩值,另一个是最多看的场数
        dp[i][j]表示已经看了i场比赛,小红的精彩值为j时小明的最大精彩值 
    */
    #include<iostream>
    #include<cstdio>
    #define maxn 110
    using namespace std;
    int n,m,k,c,s;
    int a[maxn],b[maxn],w1[maxn],w2[maxn],dp[maxn][2001];
    int main(){
        scanf("%d%d%d%d",&n,&m,&k,&c);
        for(int i=1;i<=n;i++)scanf("%d",&w1[i]);
        for(int i=1;i<=n;i++)scanf("%d",&w2[i]);
        int x,y;
        for(int i=1;i<=m;i++){
            scanf("%d%d",&x,&y);
            a[i]=w1[x]*w1[y];
            b[i]=w2[x]+w2[y];
            s+=b[i];
        }
        dp[1][b[1]]=a[1];
        for(int i=2;i<=m;i++){
            for(int j=min(k-1,i-1);j>=1;j--)
                for(int l=s-b[i];l>=1;l--)
                    if(dp[j][l])
                        dp[j+1][l+b[i]]=max(dp[j+1][l+b[i]],dp[j][l]+a[i]);
            if(dp[1][b[i]]<a[i])dp[1][b[i]]=a[i];
        }
        int ans=0;
        for(int i=1;i<=k;i++){
            for(int j=c;j<=s;j++){
                ans=max(ans,dp[i][j]);
            }
        }
        if(ans)printf("%d",ans);
        else printf("-1");
        return 0;
    }
  • 相关阅读:
    Leetcode第七题——数的反转
    Leetcode第六题——横向遍历ZIGZAG数组
    26 将查询结果插入到一张表中?
    25 表的复制
    24 insert 语句插入数据
    23 创建表
    22 limit(重点中的重点,以后分页查询全靠它了。)
    21 union(可以将查询结果集相加
    20 子查询
    19 连接查询
  • 原文地址:https://www.cnblogs.com/thmyl/p/7389758.html
Copyright © 2011-2022 走看看