当前位置: 首页 > news >正文

厦门 网站建设 网站开发江苏营销型网站建设

厦门 网站建设 网站开发,江苏营销型网站建设,北京网站制作培训学校,博物馆建设网站有什么好处题目描述 ​ 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大…
题目描述

​ 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。

​ 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。


输入

​ 第一行包含一个整数 n,表示大臣的人数。

​ 第二行包含两个整数 a 和 b,之间用一个空格隔开,分别表示国王左手和右手上的整数。(均小于 10000)

​ 接下来 n 行,每行包含两个整数 a 和 b,之间用一个空格隔开,分别表示每个大臣左手和右手上的整数。(均小于 10000)

输出

​ 输出一个整数,表示重新排列后的队伍中获奖赏最多的大臣所获得的金币数。


样例输入
3
1 1
2 3
7 4
4 6
样例输出
2

数据规模与约定

​ 时间限制:1 s

​ 内存限制:256 M

​ 100% 的数据保证 1≤n≤1000

解题分析

本题需要采用一种微扰的思想去探索贪心算法的实现,如何才能排队让得到最多的钱的大臣得到的钱尽可能地少呢?不妨这样去思考,我们假设这些大臣排成了C0,C1,C2,C3,......,Ci,Ci+1, .......Cn,其中C0就是国王,国王一定要排在第一位的,所以不用去考虑他。不妨假设Ci+1这个大臣得到的奖赏就是最多的,那么他得到的钱Pi+1=a0*a1*a2*.....*ai+1/bi+1,在我们的假设下,这个钱一定会大于等于其他人能够得到的钱,接下来,我们考虑对整个队列进行一个“微扰”,就是说,我们把Ci和Ci+1两个人调换一下位置,在这样的调换位置中,可以发现,整个队列中,除了Ci和Ci+1,其他所有人获得的奖赏都,没有发生任何的改变。而Ci+1得到的钱变成了a0*a1*...*ai-1*ai+1/bi+1,Ci得到的钱变成了a0*a1*.....*ai-1*ai+1*ai/bi,可以发现Ci+1得到的钱变少了而Ci得到的钱和原来相比变多了,这个时候,只需让a0*a1*.....*ai-1*ai+1*ai/bi<a0*a1*a2*.....*ai+1/bi+1,也就是ai+1*bi+1<ai*bi,那么Ci得到的钱就小于原来Ci+1得到的钱。也就是说,当ai+1*bi+1<ai*bi的时候,我们让Ci+1和Ci交换位置,这个时候这两个大臣得到的钱一定会比原来更少,换言之,如果我们让左右手相乘的数小的人排前面,大的人排后面,那么得到奖赏最多的大臣得到的钱是所有排列情况中最少的。

这段程序使用了贪心算法来解决问题。

首先,程序读取输入数据,包括大臣的人数n以及每个人的左手和右手上的整数。

然后,程序定义了一个cmp函数来作为排序比较函数。该函数比较两个大臣的获奖金币数,根据题目要求,返回较小的金币数对应的大臣排在前面。

接下来,程序通过调用sort函数对大臣进行排序,排序的依据是cmp函数的返回结果。这样就得到了一个重新排列后的队伍,使得获得奖赏最多的大臣所获得的金币数尽可能少。

然后,程序初始化maxSum为一个较小的负无穷值,p为国王左手上的整数。

接着,程序使用循环遍历重新排列后的队伍中的每个大臣。对于每个大臣,程序计算其获奖金币数并更新maxSum的值。具体的计算方法是将p除以该大臣右手上的整数,并将结果与maxSum比较,取较大值作为新的maxSum。然后,程序将p乘以该大臣左手上的整数,为下一个大臣的计算做准备。

最后,程序输出maxSum,即重新排列后的队伍中获得奖赏最多的大臣所获得的金币数。

该算法的时间复杂度为O(nlogn),其中n为大臣的人数。这是因为排序的时间复杂度为O(nlogn),而循环遍历大臣的时间复杂度为O(n)。

代码实现
#include <iostream>
#include <algorithm>
#define MAXN 10005
using namespace std;
int n,a[MAXN],b[MAXN],c[MAXN];
bool cmp(int i,int j){if(a[i]*b[i]<a[j]*b[j]){return 1;}return 0;
}
int main(){scanf("%d",&n);for(int i=0;i<=n;i++){scanf("%d %d",&a[i],&b[i]);}for(int i=0;i<=n;i++){c[i]=i;}sort(c+1,c+n+1,cmp);int maxSum=-1e9,p=1*a[0];for(int i=1;i<=n;i++){int temp=p/b[c[i]];maxSum=max(maxSum,temp);p*=a[c[i]];}printf("%d\n",maxSum);return 0;
}

http://www.mmbaike.com/news/69793.html

相关文章:

  • 做logo好的网站免费域名注册申请
  • 做微信公众号网站源码重庆森林为什么不能看
  • 什么网站可以做认证优化网站seo策略
  • 做网站的术语陕西整站关键词自然排名优化
  • 网站做联盟还赚钱吗baike seotl
  • 乌鲁木齐招聘网站建设电脑培训
  • 跨境电商购物网站链友之家
  • 网站后台栏目管理企业内训
  • 郑州网站开发工程师windows优化软件哪个好
  • 深圳罗湖企业网站建设报价百度高搜
  • 网站是谁做的百度账号安全中心
  • 苏州网站搜索优化网络软文营销的案例
  • 大型大型网站建设seo建设招商
  • 文章网站是怎么做的槐荫区网络营销seo
  • lnmp wordpress ftp如何优化网站快速排名
  • 网站动画用什么做抖音十大搜索关键词
  • 123windows优化大师和360哪个好
  • 秦皇岛城乡建设局网站seo管理系统创作
  • 合肥做网站便宜mdyun如何进行网站性能优化
  • 樟木头建网站的网站推广和精准seo
  • 网站建设优化推广贵州网络推广深圳有效渠道
  • 推文最好的网站是哪个新网站百度收录
  • 甘肃省住房建设厅户网站游戏交易平台
  • 网站icp备案代办网站关键词排名查询
  • 手机设计网站站长统计官网
  • 王爷到豆瓣百度关键词怎么优化
  • 千博医院网站模板中小企业管理培训课程
  • 怎样在百度免费做网站外贸网站平台哪个好
  • 怎样做信息收费网站商丘网络推广外包
  • 做外贸出口的网站360优化大师安卓下载