每日一题 第三期 洛谷 国王游戏

[NOIP2012 提高组] 国王游戏

题目描述

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

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

输入格式

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

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

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

输出格式

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

样例 #1

样例输入 #1

3 
1 1 
2 3 
7 4 
4 6

样例输出 #1

2

提示

【输入输出样例说明】

1 1 1 2 2 2 3 3 3 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2 2 2

1 1 1 3 3 3 2 2 2 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2 2 2

2 2 2 1 1 1 3 3 3 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2 2 2

按$ 2$、 3 3 3、$1 $这样排列队伍,获得奖赏最多的大臣所获得金币数为 9 9 9

3 3 3 1 1 1、$2 $这样排列队伍,获得奖赏最多的大臣所获得金币数为 2 2 2

按$ 3$、 2 2 2 1 1 1 这样排列队伍,获得奖赏最多的大臣所获得金币数为 9 9 9

因此,奖赏最多的大臣最少获得 2 2 2 个金币,答案输出 2 2 2

【数据范围】

对于 20 % 20\% 20% 的数据,有 1 ≤ n ≤ 10 , 0 < a , b < 8 1≤ n≤ 10,0 < a,b < 8 1n10,0<a,b<8

对于 40 % 40\% 40% 的数据,有$ 1≤ n≤20,0 < a,b < 8$;

对于 60 % 60\% 60% 的数据,有 1 ≤ n ≤ 100 1≤ n≤100 1n100

对于 60 % 60\% 60% 的数据,保证答案不超过 1 0 9 10^9 109

对于 100 % 100\% 100% 的数据,有 1 ≤ n ≤ 1 , 000 , 0 < a , b < 10000 1 ≤ n ≤1,000,0 < a,b < 10000 1n1,000,0<a,b<10000

NOIP 2012 提高组 第一天 第二题

思路:

交换任意两个大臣时,只会影响他们各自的金币数,而不会影响他们之前和之后的大臣的金币数,因此可以考虑贪心对比两个大臣交换前后的金币。假设相邻的两个大臣中,其左右手分别为 a1,b1,a2,b2,之前所有人的左手乘积总和为 sum,可得交换前为 sum * a1 / b2,交换后为 sum * a2 / b1,若存在交换前 > 交换后,可推出 a1 * b1 > a2 * b2,此时交换两大臣可使获得金币减少。即对大臣左右手金币的乘积进行上升排列即是最优方法。

AC代码:

#include<map>
#include<set>
#include<stack>
#include<cmath>
#include<queue>
#include<string>
#include<bitset>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<numeric>
#define endl '\n'
using namespace std;typedef long long ll;
typedef pair<int, int>PII;
const int N=3e5+10;
const int MOD=998244353;
const int INF=0X3F3F3F3F;
const int dx[]={-1,1,0,0,-1,-1,+1,+1};
const int dy[]={0,0,-1,1,-1,+1,-1,+1};
const int M = 1e6 + 10;ll x[N] = {1}, y[N];
ll n;struct stu
{ll l, r;bool operator < (const stu &u)const {return l * r < u.l * u.r;}
}s[N];
ll cnt = 1;void chen(ll u)
{ll tem = 0;for(int i = 0; i < cnt; i ++) x[i] *= u;//左手相乘for(int i = 0; i < cnt; i ++) {tem += x[i];x[i] = tem % 10;tem /= 10;}while(tem != 0){x[cnt] = tem % 10;cnt ++;tem /= 10;}
}void chu(ll u)
{ll tem = 0;for(int i = cnt - 1; i >= 0; i --){tem = tem * 10 + x[i];y[i] = tem / u;tem %= u;}
}void print()
{ll tem = cnt;if(n == 1) cout << s[0].l / s[1].r << endl;else {while(y[tem] == 0){tem --;if(tem == -1){cout << 1;return ;}}for(int i = tem; i >= 0; i --){cout << y[i];}}}
int main()
{cin >> n;for(int i = 0; i <= n; i ++){ll a, b;cin >> s[i].l >> s[i].r;}sort(s + 1, s + 1 + n);for(int i = 0; i < n; i ++){chen(s[i].l);}chu(s[n].r);print();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<video>标签相关属性

src&#xff1a;指定视频文件的URL。 autoplay&#xff1a;如果设置该属性&#xff0c;视频将在页面加载后自动播放。请注意&#xff0c;一些浏览器可能会因为用户体验的考虑而忽略此属性。 controls&#xff1a;添加此属性将在视频上显示播放、暂停和音量控制等标准控件。 …

C#制作软件时窗体的弹出与嵌入

文章目录 一、窗体的弹出二、窗体的嵌入 一、窗体的弹出 这里面我们以Windows窗体应用程序为例&#xff0c;这里面达到的效果如下&#xff1a; 点击指定按钮&#xff0c;弹出目标窗口。接下来我们看具体操作&#xff1a; 这是我们的主窗体&#xff1a; 接下来我们需要在这个…

Stable Diffusion 模型下载:Juggernaut(主宰、真实、幻想)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 该模型是一个真实模型&#xff0c;并且具有幻想和创意色彩。 作者述&#xff1a;我选取了…

Oracle Linux 8.9 安装 Postman

Oracle Linux 8.9 安装 Postman 1. 安装 Postman2. 启动 Postman 1. 安装 Postman Install epel, sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf upgraderefer: https://snapcraft.io/docs/installing-snap-on-red-hat…

RabbitMQ备份交换机与优先级队列

1. 备份交换机 备份交换机可以理解为 RabbitMQ 中交换机的“备胎”&#xff0c;当我们为某一个交换机声明一个对应的备份交换机时&#xff0c;就是为它创建一个备胎&#xff0c;当交换机接收到一条不可路由消息时&#xff0c;将会把这条消息转发到备份交换机中&#xff0c;由备…

1. 用两种方式在springboot项目中实现适配器模式

文章目录 用两种方式在springboot项目中实现适配器模式1. 场景2. 方式1&#xff0c;通过实现类定义类型字段实现2.1 创建接口2.2 创建mysql实现类2.3 创建oracle实现类2.4 创建接口,在接口中注入service集合&#xff0c;根据每个实现类中定义的dbType进行匹配后进行调用2.5 测试…

幼猫咬不动猫粮该怎么办?

亲爱的猫友们&#xff0c;遇到幼猫咬不动猫粮的情况&#xff0c;是不是很让人着急呢&#xff1f;别担心&#xff0c;让我们一起来探讨一下解决这个问题的方法。&#x1f431;&#x1f35a; 首先&#xff0c;我们得理解幼猫的牙齿和消化系统发育还不够成熟&#xff0c;所以咬不动…

算法刷题day30:递归

目录 引言一、有序分数二、正则问题三、带分数四、约数之和 引言 本篇文章主要讲了递归的一些题型&#xff0c;递归也是一种思想&#xff0c;主要是在各种题中显现这种思想&#xff0c;你必须要脑子里能够清楚它大概的一种路线是怎样的&#xff0c;或者说要抽象出来它的功能是…

Arduino ESP8266 SSD1306 硬件I2C+LittleFS存储GBK字库实现中文显示

Arduino ESP8266 SSD1306 硬件I2C+LittleFS存储GBK字库实现中文显示 📍相关篇《Arduino esp8266 软件I2C SSD1306 +LittleFS存储GBK字库实现中文显示》 🌼显示效果: ✨将部分函数重构,和上面相关篇的软件I2C通讯相关接口函数移植过来,除了汉字显示采用自己写的API函数外…

使用 ReclaiMe Pro 恢复任意文件系统(Win/Linux/MacOS)

天津鸿萌科贸发展有限公司是 ReclaiMe Pro 数据恢复软件授权代理商。 ReclaiMe Pro 是一个通用工具包&#xff0c;几乎可以用于从所有文件系统&#xff08;从 Windows 系列文件系统、Linux 和 MacOS&#xff09;中恢复数据。此外&#xff0c;考虑到数据恢复工作的具体情况&…

如何实现Git Push之后自动部署到服务器?

在平时个人开发的过程中是不是有这样的烦恼&#xff1a; 项目开发完成&#xff0c;Push之后 登录服务器&#xff0c;手动git pull&#xff0c;然后运行部署命令 这真的很烦诶&#xff01; 那么能不能Git push之后&#xff0c;远端服务器自动 Git pull 然后运行部署命令呢&a…

2023行政区域

几乎所有业务系统&#xff0c;都会涉及行政区域。国家统计局 官网上公开了所有的区域编码&#xff0c;一年一更新。但只能在线查看&#xff0c;没有提供完整数据库下载的连接。为此&#xff0c;我编写了一个简陋的 python 脚本&#xff0c;抓取了近几年的数据&#xff0c;供大家…

ctf杂项总结

1.文件无法打开 1.1.文件拓展名损坏/错误导致 方法&#xff1a; 1.使用kali当中的file命令查看&#xff0c;之后修改为正确的后缀即可 2.通过16进制编辑器打开查看文件头 3.文件头残缺/错误&#xff0c;可以先使用kail当中的file命令查看它的类型&#xff0c;之后再通过 16…

C# EPPlus导出dataset----Excel2绘制图像

一、生成折线图方法 /// <summary> ///生成折线图 /// </summary> /// <param name="worksheet">sheet页数据 </param> /// <param name="colcount">总列数</param> /// &l…

(每日持续更新)jdk api之StreamCorruptedException基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

vue-vben-admin的编译运行

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统RuoYi-Nbcio亿事达企业管理平台 gitee源代码地址 后端代码&#xff1a;…

变量的本质和命名规则

变量的本质 内存:计算机中存储数据的地方&#xff0c;相当于一个空间变量本质:是程序在内存中申请的一块用来存放数据的小空间 变量命名规则与规范 规则: 不能用关键字 关键字:有特殊含义的字符&#xff0c;JavaScript 内置的一些英语词汇。例如:let、var、if、for等>只…

Jenkins入门指南:自动化构建与部署的艺术

概要&#xff1a; 本篇博客旨在为新手提供一个全面、易懂的Jenkins入门指南。我们将从Jenkins的基本概念讲起&#xff0c;逐步深入到安装、配置、以及如何使用Jenkins来自动化软件的构建、测试和部署过程。内容将涉及Jenkins的核心功能&#xff0c;插件管理&#xff0c;以及与…

代码随想录-动态规划7(139. 单词拆分)

139. 单词拆分 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {vector<bool> dp(s.size()1, false);unordered_set<string> wordDict_set;for (int i0; i<wordDict.size(); i){wordDict_set.insert(wordDict[i]);}dp…

掌握AI技术,轻松学习游戏开发

进入游戏开发的世界&#xff0c;就像打开了一扇通往未来的大门&#xff0c;而掌握AI技术正是这扇门的钥匙。随着AI技术在游戏行业的迅速崛起&#xff0c;它不仅为游戏设计和用户体验带来了革命性的改变&#xff0c;更为新入行者展示了一个充满创新和机遇的领域。特别是百川智能…