zoukankan      html  css  js  c++  java
  • 背包DP【洛谷P2113】 看球泡妹子

    P2113 看球泡妹子

    题目背景

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

    题目描述

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

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

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

    二维背包。

    (f[i][j][k])表示前i场比赛,选择看j场,小红的开心度为k。

    转移

    [f[i][j][k]=max(f[i-1][j][k],f[i-1][j-1][k-p[i]]+q[i]) ]

    第一维可以滚掉,在大于c的范围内枚举答案即可。

    code:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    const int wx=117;
    
    inline int read(){
    	int sum=0,f=1; char ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
    	while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0';ch=getchar();}
    	return sum*f;
    } 
    
    int ans=-1;
    
    int a[wx],b[wx];
    int q[wx],p[wx];
    int f[wx][wx][2007];
    int n,m,K,c,sum;
    
    int main(){
    	n=read(); m=read(); K=read(); c=read();
    	for(int i=1;i<=n;i++) a[i]=read();
    	for(int i=1;i<=n;i++) b[i]=read();
    	for(int i=1;i<=m;i++) {
    		int x,y;
    		x=read(); y=read();
    		p[i]=a[x]*a[y]; q[i]=b[x]+b[y]; sum+=q[i];
    	}
    	memset(f,0xc0,sizeof f);
    	f[0][0][0]=0;
    	for(int i=1;i<=m;i++){
    		for(int j=0;j<=K;j++){
    			for(int k=sum;k>=0;k--)f[i][j][k]=max(f[i-1][j][k],f[i][j][k]);
    			for(int k=sum;k>=0;k--)if(k-q[i]>=0&&j>=1)f[i][j][k]=max(f[i-1][j-1][k-q[i]]+p[i],f[i][j][k]);
    		}
    	}
    	for(int i=c;i<=sum;i++){
    		ans=max(ans,f[m][K][i]);
    	}
    	printf("%d",ans);
    	return 0;
    }
    
  • 相关阅读:
    POJ 1328 Radar Installation
    POJ 1700 Crossing River
    POJ 1700 Crossing River
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3069 Saruman's Army(贪心)
    poj 3069 Saruman's Army(贪心)
    Redis 笔记与总结2 String 类型和 Hash 类型
    数据分析方法有哪些_数据分析方法
    数据分析方法有哪些_数据分析方法
  • 原文地址:https://www.cnblogs.com/wangxiaodai/p/9811203.html
Copyright © 2011-2022 走看看