首页 > 其他分享 >洛谷 P2113 看球泡妹子(DP)

洛谷 P2113 看球泡妹子(DP)

时间:2024-11-07 19:46:46浏览次数:3  
标签:看球 洛谷 int P2113 long ans tie 101

传送门icon-default.png?t=O83Ahttps://www.luogu.com.cn/problem/P2113

解题思路

可以设 f(i,j,k) 表示前 i 场比赛看了 j 场,小红的满足度为 k 的最大精彩度。

然后可以枚举前面的一个比赛 l,可以得到转移方程:

f(i,j,k)=\max (f(i-1,j-1,k-(b_{p_i}+b_{q_i}))+a_{p_i}\times a_{q_i})

但是,我们发现数组空间有一点小大,可以优化一下。

发现每一次转移都是 i-1,于是可以滚动数组优化空间。

然后,观察数据范围 a_i\leq 10, b_i\leq 10,于是 k 的上限是 20 \times m

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,k,c;
int f[101][2001];
int a[101],b[101],p[101],q[101];
int ans;
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin>>n>>m>>k>>c;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=n;i++)
		cin>>b[i];
	
	for(int i=1;i<=m;i++)
	{
		cin>>p[i]>>q[i];
	}
	
	for(int i=1;i<=m;i++)
	{
		for(int j=min(i,k);j>=1;j--)
		{
			for(int l=20*m;l>=b[p[i]]+b[q[i]];l--)
			{
				if(f[j-1][l-b[p[i]]-b[q[i]]]>0||l-b[p[i]]-b[q[i]]==0)//每次转移要判断是否计算出了 f[j-1][l-b[p[i]]-b[q[i]]],或者是第一次选 
				f[j][l]=max(f[j][l],f[j-1][l-b[p[i]]-b[q[i]]]+a[p[i]]*a[q[i]]);
			 } 
				
		}
	}
	ans=-1;
	for(int i=1;i<=k;i++)
	{
		for(int j=c;j<=20*m;j++)
		ans=max(ans,f[k][j]);
	}
	if(ans)
	cout<<ans;
	else
		cout<<-1;
}

标签:看球,洛谷,int,P2113,long,ans,tie,101
From: https://blog.csdn.net/2403_87021226/article/details/143606066

相关文章

  • 洛谷P3516 [POI2011] PRZ-Shift
    题意Link有一个排列\(a\),你可以执行两种操作:A:将最后一个数移到最前面B:将第三个数移到最前面构造一组操作序列将其变为递增排列,输出形如5a2b...表示执行\(5\)次A操作再执行\(2\)次B操作。思路很有意思的构造。仔细思考,操作A使我们能将原排列变为它的任何一......
  • 洛谷P5741
    P5741【深基7.例10】旗鼓相当的对手-加强版-洛谷|计算机科学教育新生态【深基7.例10】旗鼓相当的对手-加强版题目描述现有N(N<=1000)名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过8个字符的字符串,没有空格)、语文、数学、英语成绩(均为不超过150的自然......
  • 洛谷 P1638 逛画展
     此题运用滑动窗口和左右指针1.用identifiers储存画师的编号2.用count储存画师的画的数量3.将左右指针初始化为0,先右移右指针,当恰好找到第一个解时(即左右指针范围内画师数量恰好等于m),进入下一个while,如果此时窗口长度小于前一个解的窗口长度,相等则取左指针较靠前的。4.移......
  • 洛谷题单指南-二叉堆与树状数组-P1801 黑匣子
    原题链接:https://www.luogu.com.cn/problem/P1801题意解读:动态维护一组序列,并随时可以求第k小的值,每次求第k小的顺序是递增的,比如第一次取第1小,然后是第2小,以此类推。解题思路:对于求第k小的问题,已经介绍过几种方案:1、快选算法,每次查询时间复杂度logn,传送门:https://www.cnblogs......
  • 【洛谷 P3695 CYaRon!语】从一道大模拟入坑自制编程语言
    原题传送门本来是想投题解的,但是仔细阅读了一下主题库题解规范,发现这篇文章更加适合单独作为一篇blog阅读而非挂在题解区里污染环境,所以就这样了。0xff开始之前这道题我很早以前就开始看了,那时还只有星野梦美大佬的一篇题解。而到现在,我终于是有了时间和能力来切掉这道题,......
  • 洛谷题单指南-二叉堆与树状数组-P3378 【模板】堆
    原题链接:https://www.luogu.com.cn/problem/P3378题意解读:实现二叉堆。解题思路:二叉堆本质上一棵完全二叉树,根节点称为堆顶,根据特性不同分为有两种:大根堆:所有父节点的值大于子节点,根节点最大小根堆:所有父节点的值小于子节点,根节点最小主要作用:动态维护序列,并快速找到最大/最......
  • 洛谷题单指南-字符串-P6824 「EZEC-4」可乐
    原题链接:https://www.luogu.com.cn/problem/P6824题意解读:已知整数序列a[i],i在1~n,有整数k,求一个整数x,要求a[i]^x<=k,使得符合要求的a[i]数量最多,求这个数量。解题思路:1、确定x的范围由于a[i]^x<=k,因此,x的有效二进制位不可能超过a[i],而a的取值范围<=1000000,因此x差不多......
  • 洛谷:P5707 【深基2.例12】上学迟到 (纯净的顺序结构方法)
    本内容纯作者吃饱了没事干做出来的,仅供娱乐和思路参考(当然代码肯定是AC了)最近我想重新提升一下自己的编程能力,想选一个题量比较精炼的平台,所以就用了洛谷。题目描述学校和yyy的家之间的距离为s米,而yyy以v米每分钟的速度匀速走向学校。在上学的路上,yyy还要额外花费1......
  • 洛谷P5739
    P5739【深基7.例7】计算阶乘-洛谷|计算机科学教育新生态【深基7.例7】计算阶乘 题目描述求n!,也就是1*2*3...*n。挑战:尝试不使用循环语句(for、while)完成这个任务。 输入格式第一行输入一个正整数n。 输出格式输出一个正整数,表示n!。 样例#1样例输入3......
  • 洛谷P1304
    P1304哥德巴赫猜想-洛谷|计算机科学教育新生态#哥德巴赫猜想##题目描述输入一个偶数N,验证4~N 所有偶数是否符合哥德巴赫猜想:任一大于2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如10,10=3+7=5+5,则10=5+5......