题目大意

给出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数字游戏相关推荐

  1. 用法 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 ...

  2. [蓝桥杯]PREV-23.历届试题_数字游戏

    问题描述栋栋正在和同学们玩一个数字游戏.游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈.栋栋首先说出数字1.接下来,坐在栋栋左手边的同学要说下一个数字2.再下面的一个同学要从上一个同学说的数字往 ...

  3. C语言经典小游戏---猜数字游戏 (包含C语言中如何实现随机数的生成)

    题目描述:输入1-100之间的数字,进行猜数字游戏,猜大猜小有提示,直至才对为止,游戏可以重复游玩. 算法思路: 1.用void函数分别写出菜单程序与游戏进程程序. 2.用switch-case-de ...

  4. 例题3-4 猜数字游戏的提示(Master-Mind Hints, UVa 340)

    实现一个经典"猜数字"游戏.给定答案序列和用户猜的序列,统计有多少数字位置正确 (A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序列长度n ...

  5. c语言猜数字游戏用while,【C语言基础】有趣的猜数字游戏。(while循环,if语句,switch语句)...

    要求:猜数字游戏的实现.代码如下:#include #include #include void menu() { printf("***************************** ...

  6. python猜年龄代码_python入门教程NO.7用python来写一个猜数字游戏

    python入门教程 本文涉及的python基础语法为while循环 #python#3中while语句常常被用于循环执行某个程序,任何非0和非空null的值,都会被条件判断为True while 条 ...

  7. Go-实现猜数字游戏代码

    实现猜数字游戏代码 1 package main 2 3 import ( 4 "fmt" 5 "math/rand" 6 "time" 7 ...

  8. 挣值管理不是搞数字游戏

    摘要: 要考PMP(Project Management Professional ),挣值管理是必考的知识.软件项目有很大的特殊性,不少人认为挣值管理不太适用于软件项目.挣值管理相关资料也比较超多, ...

  9. python猜数字游戏简单-python猜数字游戏快速求解解决方案

    python猜数字游戏快速求解解决方案.使用方法: 1. 保存代码为guessall.py 2. 执行python guessall.py > result.txt 3. 打开result.tx ...

  10. python游戏最简单代码-如何利用Python开发一个简单的猜数字游戏

    前言 本文介绍如何使用Python制作一个简单的猜数字游戏. 游戏规则 玩家将猜测一个数字.如果猜测是正确的,玩家赢.如果不正确,程序会提示玩家所猜的数字与实际数字相比是"大(high)&q ...

最新文章

  1. 10张Gif动图让你弄懂递归等概念
  2. NOIP2017TG D1T2 时间复杂度
  3. spark内核揭秘-09-RDD的count操作 触发Job全生命周期-01
  4. 数据库:推荐几款 Redis 可视化工具,你都用过吗?
  5. 转 android anr 分析示例,[摘]Android ANR日志分析指南之实例解析
  6. ansible 模块_您需要了解的Ansible模块
  7. Java实训项目:GUI学生信息管理系统(2019)【上】
  8. jsoup解析器快速入门
  9. 【重点!DP】LeetCode 639. Decode Ways II
  10. ios libfdk-aac encode
  11. pycharm主题设置
  12. JavaScript—— 常见网页特效
  13. python3 列表list 内置函数
  14. TANGENT_SPACE_ROTATION的解释
  15. as3读写本地xml/txt
  16. linux 缩小硬盘镜像,缩小qcow2格式kvm虚拟镜像磁盘大小[转]
  17. HTML识别文本空格回车换行展示
  18. 手持PDA零售门店解决方案
  19. 被人误解的设计思路1
  20. 详细TinyMCE汉日英语言包,图片上传等vue2

热门文章

  1. Spring知识整合(主要SSM)
  2. Squid安装及运行控制_wuli大世界_新浪博客
  3. 魔兽争霸III 全图的制作
  4. 计算机组装维修设置还原点,怎样恢复出厂设置组装电脑
  5. 廉颇老矣?尚能饭否?64岁的Python之父被微软录取!
  6. 利用python3 爬取 网易云 上 周杰伦所有专辑,歌曲,评论,并完成可视化分析已经歌曲情绪化分析...
  7. 液压与气压传动原理及实验装置,QY-QD11
  8. 775针服务器cpu性能排行,CPU性能排行榜各种cup应有尽有
  9. docker-the input device is not a TTY. If you are using mintty, try prefixing the command with ‘winp
  10. 【用户研究】【实战】——“得到”APP 可用性测试