ssl1653数字游戏
题目大意
给出nnn个数a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an和nnn个数b1,b2,...bnb_1,b_2,...b_nb1,b2,...bn,有mmm个回合,每个回合可以选取一个数aia_iai,但是其他的aja_jaj就会减去一个bjb_jbj,求可以选得的数的总和最大为多少。
解题思路
通过题目,我们不难看出,对于两个数aia_iai和aja_jaj,如果我们想取得的和最大,那么我们就得先把bbb值较大的数取了,这样较大的bbb不会减,较小的bbb只会减1次,因此,我们需要先对bbb数组按从大到小的顺序进行排序,尽量先把bbb值较大的减去。
现在有了删除的顺序,但因为只有mmm个回合,所以我们要尽量选择大的数进行选取,那么我们就设fi,jf_{i,j}fi,j为前iii个数中选jjj个所取得的最大值,对于枚举到的每个aia_iai,若是不选则fi,jf_{i,j}fi,j不变,若是选,则fi,jf_{i,j}fi,j加上aia_iai减去之前选了的个数(每选一个数其他的aia_iai都要减去其对应的bib_ibi)。那么就可以推出:
fi,j=max(fi−1,j,fi−1,j−1+ai−bi∗(j−1))f_{i,j}=max(f_{i-1,j},f_{i-1,j-1}+a_i-b_i*(j-1))fi,j=max(fi−1,j,fi−1,j−1+ai−bi∗(j−1))
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
struct ap{int a,b;
}a[2005];
int n,m,f[2005][2005];
bool cmp(ap a,ap b){return a.b>b.b;
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i].a;for(int i=1;i<=n;i++)cin>>a[i].b;sort(a+1,a+n+1,cmp);memset(f,-0x5f,sizeof(f));//赋较小初值f[1][1]=a[1].a;//第一个数只选一个时就是第一个数for(int i=2;i<=n;i++)f[i][1]=max(f[i-1][1],a[i].a);//所有的数只选一个就是最大的a[i]f[0][0]=0;for(int i=1;i<=n;i++){for(int j=2;j<=min(i,m);j++)f[i][j]=max(f[i-1][j],f[i-1][j-1]+a[i].a-a[i].b*(j-1));//状态转移方程}cout<<f[n][m];return 0;
}
ssl1653数字游戏相关推荐
- 用法 stl_51Nod 2160 数字游戏 STL基本用法
目录 目录 1. 题目描述 1.1. Limit 1.2. Problem Description 1.3. Input 1.4. Output 1.5. Sample Input 1.6. Samp ...
- [蓝桥杯]PREV-23.历届试题_数字游戏
问题描述栋栋正在和同学们玩一个数字游戏.游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈.栋栋首先说出数字1.接下来,坐在栋栋左手边的同学要说下一个数字2.再下面的一个同学要从上一个同学说的数字往 ...
- C语言经典小游戏---猜数字游戏 (包含C语言中如何实现随机数的生成)
题目描述:输入1-100之间的数字,进行猜数字游戏,猜大猜小有提示,直至才对为止,游戏可以重复游玩. 算法思路: 1.用void函数分别写出菜单程序与游戏进程程序. 2.用switch-case-de ...
- 例题3-4 猜数字游戏的提示(Master-Mind Hints, UVa 340)
实现一个经典"猜数字"游戏.给定答案序列和用户猜的序列,统计有多少数字位置正确 (A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序列长度n ...
- c语言猜数字游戏用while,【C语言基础】有趣的猜数字游戏。(while循环,if语句,switch语句)...
要求:猜数字游戏的实现.代码如下:#include #include #include void menu() { printf("***************************** ...
- python猜年龄代码_python入门教程NO.7用python来写一个猜数字游戏
python入门教程 本文涉及的python基础语法为while循环 #python#3中while语句常常被用于循环执行某个程序,任何非0和非空null的值,都会被条件判断为True while 条 ...
- Go-实现猜数字游戏代码
实现猜数字游戏代码 1 package main 2 3 import ( 4 "fmt" 5 "math/rand" 6 "time" 7 ...
- 挣值管理不是搞数字游戏
摘要: 要考PMP(Project Management Professional ),挣值管理是必考的知识.软件项目有很大的特殊性,不少人认为挣值管理不太适用于软件项目.挣值管理相关资料也比较超多, ...
- python猜数字游戏简单-python猜数字游戏快速求解解决方案
python猜数字游戏快速求解解决方案.使用方法: 1. 保存代码为guessall.py 2. 执行python guessall.py > result.txt 3. 打开result.tx ...
- python游戏最简单代码-如何利用Python开发一个简单的猜数字游戏
前言 本文介绍如何使用Python制作一个简单的猜数字游戏. 游戏规则 玩家将猜测一个数字.如果猜测是正确的,玩家赢.如果不正确,程序会提示玩家所猜的数字与实际数字相比是"大(high)&q ...
最新文章
- 10张Gif动图让你弄懂递归等概念
- NOIP2017TG D1T2 时间复杂度
- spark内核揭秘-09-RDD的count操作 触发Job全生命周期-01
- 数据库:推荐几款 Redis 可视化工具,你都用过吗?
- 转 android anr 分析示例,[摘]Android ANR日志分析指南之实例解析
- ansible 模块_您需要了解的Ansible模块
- Java实训项目:GUI学生信息管理系统(2019)【上】
- jsoup解析器快速入门
- 【重点!DP】LeetCode 639. Decode Ways II
- ios libfdk-aac encode
- pycharm主题设置
- JavaScript—— 常见网页特效
- python3 列表list 内置函数
- TANGENT_SPACE_ROTATION的解释
- as3读写本地xml/txt
- linux 缩小硬盘镜像,缩小qcow2格式kvm虚拟镜像磁盘大小[转]
- HTML识别文本空格回车换行展示
- 手持PDA零售门店解决方案
- 被人误解的设计思路1
- 详细TinyMCE汉日英语言包,图片上传等vue2
热门文章
- Spring知识整合(主要SSM)
- Squid安装及运行控制_wuli大世界_新浪博客
- 魔兽争霸III 全图的制作
- 计算机组装维修设置还原点,怎样恢复出厂设置组装电脑
- 廉颇老矣?尚能饭否?64岁的Python之父被微软录取!
- 利用python3 爬取 网易云 上 周杰伦所有专辑,歌曲,评论,并完成可视化分析已经歌曲情绪化分析...
- 液压与气压传动原理及实验装置,QY-QD11
- 775针服务器cpu性能排行,CPU性能排行榜各种cup应有尽有
- docker-the input device is not a TTY. If you are using mintty, try prefixing the command with ‘winp
- 【用户研究】【实战】——“得到”APP 可用性测试