【洛谷2113】看球泡妹子 DP背包
看球泡妹子
题目背景
2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情。
题目描述
本届世界杯共有\(N\)支球队,\(M\)场比赛。男球迷小明喜欢看比赛,女球迷小红喜欢看帅哥。每支球队在小明眼里的实力值为\(A_i\),在小红眼里的帅哥数量为\(B_i\)。
每场比赛有两个球队对抗,它们的编号分别是\(P_i\)和\(Q_i\)。小明认为一场比赛的精彩度等于两队实力的乘积,小红则认为是两队帅哥数量之和。
由于体力的限制,他们最多只能看\(K\)场比赛。当然,只要看比赛,两个人一定会一起看。小明作为男生,理应迁就一下女生,所以,请你写一个程序,求出小红看到比赛的精彩度总和不小于\(C\)的情况下,小明看到比赛的精彩度的最大总和。
输入输出格式
输入格式:
第1行,4个正整数\(N,M,K,C\)。
第2行,\(N\)个空格隔开的正整数\(A_i\)。
第3行,\(N\)个空格隔开的正整数\(B_i\)。
之后\(M\)行,每行两个正整数\(P_i\),\(Q_i\)。
输出格式:
一行,一个正整数表示小明看到比赛的精彩度的最大总和。如果无论如何都无法满足小红的要求,输出\(-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][k]\)表示前\(i\)场比赛看了\(j\)场对于小红的精彩度为\(k\)时小明的最大精彩度。
下面就是类似背包的转移
不看这场比赛\(dp[i][j][k]=max(dp[i][j][k],dp[i-1][j][k])\)
观看这场比赛\(dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-1][k-(b[p[i]]+b[q[i]])]+a[p[i]]*a[q[i]])\)
code
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cctype>
#define ll long long
#define R register
#define N 105
using namespace std;
template<typename T>inline void read(T &a){
char c=getchar();T x=0,f=1;
while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
a=f*x;
}
int n,m,K,c,a[N],b[N],p[N],q[N];
int dp[N][N][1005],ans=-1,all;//先把ans=-1,并且初始化dp数组小于-1,最后无解直接输出-1。
int main(){
read(n);read(m);read(K);read(c);
for(R int i=1;i<=n;i++)read(a[i]);
for(R int i=1;i<=n;i++)read(b[i]);
for(R int i=1;i<=m;i++)read(p[i]),read(q[i]),all+=b[p[i]]+b[q[i]];
memset(dp,0xc0,sizeof(dp));
dp[0][0][0]=0;//下面就是裸的背包
for(R int i=1;i<=m;i++){
for(R int j=0;j<=K;j++){
for(R int k=all;k>=0;k--){
dp[i][j][k]=max(dp[i][j][k],dp[i-1][j][k]);
if(k-(b[p[i]]+b[q[i]])>=0&&j>=1)dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-1][k-(b[p[i]]+b[q[i]])]+a[p[i]]*a[q[i]]);//一定要判j>=1,否则会出现负下标。
}
}
}
for(R int i=0;i<=K;i++)
for(R int j=c;j<=all;j++)
ans=max(ans,dp[m][K][j]);
printf("%d\n",ans);
return 0;
}
【洛谷2113】看球泡妹子 DP背包的更多相关文章
- [洛谷P2113] 看球泡妹子
洛谷题目链接:看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有N支球队,M场比赛.男球迷小明喜欢看比 ...
- 背包DP【洛谷P2113】 看球泡妹子
P2113 看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有N支球队,M场比赛.男球迷小明喜欢看比赛 ...
- luogu P2113 看球泡妹子
2333 这么水的蓝题 f[i][j] 表示看了i场比赛,小♀红的什么东西为j时小♂明的什么值 强行压维蛤蛤 剩下的转移很简单(注意i的循环顺序从后往前,01背包) (具体见代码) #include& ...
- 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...
- 洛谷 P3177 [HAOI2015]树上染色 树形DP
洛谷 P3177 [HAOI2015]树上染色 树形DP 题目描述 有一棵点数为 \(n\) 的树,树边有边权.给你一个在 \(0 \sim n\)之内的正整数 \(k\) ,你要在这棵树中选择 \( ...
- 洛谷 P4072 [SDOI2016]征途 斜率优化DP
洛谷 P4072 [SDOI2016]征途 斜率优化DP 题目描述 \(Pine\) 开始了从 \(S\) 地到 \(T\) 地的征途. 从\(S\)地到\(T\)地的路可以划分成 \(n\) 段,相 ...
- 洛谷P1880 石子合并(区间DP)(环形DP)
To 洛谷.1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1 ...
- 洛谷P1063 能量项链(区间DP)(环形DP)
To 洛谷.1063 能量项链 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的 ...
- 【洛谷】P1541 乌龟棋(四维背包dp)
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
随机推荐
- linux中ftp配置文件详解
vsftpd配置文件采用"#"作为注释符,以"#"开头的行和空白行在解析时将被忽略,其余的行被视为配置命令行,每个配置命令的"="两边不要留 ...
- 转:创建一个javaweb项目,以及导出war包
一.使用IDEA创建一个javaweb项目 1.File->New Project选择Web Application 1 2 然后填写好路径和项目名称,点击确定. 1 2 2.先看一下刚创建好的 ...
- request.getHeader("x-forwarded-for")这是什么意思
request.getHeader,简单的说就是获取请求的头部信息,根据http协议,它能获取到用户访问链接的信息,以下是我们常用的: request.getHeader("referer& ...
- sendClond如何更新邮件模板
$url = 'http://www.sendcloud.net/webapi/template.update.json'; $API_USER = ''; $API_KEY = ''; $conte ...
- 搭建J2EE开发平台-Eclipse+MySql+tomcat
搭建J2EE开发平台-Eclipse+MySql+tomcat 分类: ·Java 2010-10-10 15:45 2596人阅读 评论(3) 收藏 举报 mysql平台eclipsetomcatj ...
- 04-nginx日志管理
做了几年PHP,老板.经理没说让我管过日志这东西.一般牵涉到日志运维这主要是运维的工作.但是这一章节主要是以拔高性质为主.分析日志的管理方式.PHP程序员不能光靠PHP成为高手,PHP不就if els ...
- Windows cmd 快捷操作
复制当前文件夹下符合条件的文件名字到文件 dir /B *-gd.dll > debug /B是只显示文件名,不包含所在路径 复制当前文件夹下文件到另外的地方 xcopy /s/d *-gd.d ...
- FacadePattern(23种设计模式之一)
设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...
- ibatis和hibernate
ibatis:sql需要自己写hibernate:sql自动生成上面是最大的区别,下面是一些细节.选择Hibernate还是iBATIS都有它的道理:Hibernate的特点:Hibernate功能强 ...
- App测试从入门到精通之安装、卸载和运行测试
关于手机App测试需要说的点有很多.目前市场上主要的APP测试主要是针对的是安卓.和苹果两大主流操作系统.主要考虑的就是功能性.兼容性.稳定性.性能测试等.我们看下App的安装和卸载有哪些常用的场景: ...