题意

给你两个长为 \(n+1\) 的数组 \(a,b\) ,你需要定义一个顺序 \(p\) (\(p_0\) 永远为 \(0\))

能够最小化

\[\max_{i=1}^{n} \frac{\prod_{j = 0}^{i} a_{p_j}}{b_{p_i}}
\]

\(1 \le n \le 1000, 1 \le a, b \le 10^4\)

题解

开始把原来没做完的 \(NOIp\) 题都水掉qwq

类似这种题都需要有个巧妙的排序方法,使得答案最小,其实可以大力找规律或者猜结论发现按 \(a_i \times b_i\) 排序是最优秀的。

我们尝试推导这个结论。

其实我们发现只需要考虑相邻两个数如何交换才是最优的,因为任意排列都可以由交换相邻两个数得到。

假设当前两个位置为 \(i, i+1\) ,记 \(\displaystyle p = \prod_{j = 0}^{i - 1}a_j\) 。

我们令 \(ans_0\) 为交换前的最大值,\(ans_1\) 为交换后的,那么有

\[\begin{cases}
ans_0 &= \max\{\frac{p}{b_i}, \frac{p \times a_i}{b_{i+1}}\} \\
ans_1 &= \max\{\frac{p}{b_{i+1}}, \frac{p \times a_{i+1}}{b_{i}}\}
\end{cases}
\]

因为有

\[\forall i, a_i, b_i \ge 1
\]

不难发现有

\[\begin{cases}
\displaystyle \frac{p \times a_i}{b_{i+1}} \ge \frac{p}{b_{i+1}} \\
\displaystyle \frac{p \times a_{i+1}}{b_{i}} \ge \frac{p}{b_i}
\end{cases}
\]

所以当 \(ans_1 \ge ans_0\) 也就是交换后不会更优,当且仅当

\[\begin{aligned}
\frac{p \times a_{i+1}}{b_{i}} &\ge \frac{p \times a_i}{b_{i+1}} \\
a_{i + 1} \times b_{i + 1} &\ge a_i \times b_i
\end{aligned}
\]

所以我们不难发现当 \(a_i \times b_i\) 升序的时候是最优的。

然后答案需要用高精度存储,但是我不想写。。。(用 \(python\) 水过了2333)

考试时候应该还是会头铁写高精度的。。

总结

对于重排序列使得一些要求的东西最优的时候,可以考虑不等式推导。

然后也不需要考虑相隔很远的两个数,可以考虑相邻两个数,结论也是一样的,因为交换相邻两个数也可以使得序列排序。

代码

教你 \(17\) 行 \(python3\) 代码水过2333

n = (int)(input())
a, b = map(int, input().split())
array = [[0] * 2] * n
for i in range(0, n):
array[i] = list(map(int, input().split())) def Cmp(elem):
return elem[0] * elem[1]
array.sort(key = Cmp) ans = 0
tot = a
for i in range(0, n):
ans = max(ans, tot // array[i][1])
tot = tot * array[i][0] print(ans)

[NOIp2012] 国王游戏(排序 + 贪心 + 高精度)的更多相关文章

  1. 【NOIP 2012 国王游戏】 贪心+高精度

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍 ...

  2. 【题解】洛谷P1080 [NOIP2012TG] 国王游戏(贪心+高精度)

    次元传送门::洛谷P1080 思路 我们模拟一下只有两个大臣的时候发现 当a1​∗b1​<a2​∗b2​是ans1<ans2 所以我们对所有大臣关于左右手之积进行排序 得到最多钱的大臣就是 ...

  3. luogu1080 国王游戏(贪心+高精度)

    貌似这道题是碰巧蒙对了贪心的方式..就是把ai*bi越小的放在越前面 (不过也符合直觉) 然后统计答案需要用高精度,然后就调了一年 #include<cstdio> #include< ...

  4. luoguP1080 国王游戏 (贪心+高精度)

    题目链接:https://www.luogu.org/problemnew/show/P1080 参考:https://www.luogu.org/problemnew/solution/P1080 ...

  5. Luogu 1080 【NOIP2012】国王游戏 (贪心,高精度)

    Luogu 1080 [NOIP2012]国王游戏 (贪心,高精度) Description 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己 ...

  6. P1080 国王游戏 (等待高精度AC)

    P1080 国王游戏 题解 贪心策略:按照大臣左右手数字乘积从小到大排序 假设我们已经把大臣排了一个顺序 假定在这个顺序下我们可以保证  得到奖赏最多的大臣所得奖赏最少 那么我们一旦交换任意两个大臣, ...

  7. [noip2012]国王游戏<贪心+高精度>

    题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...

  8. NOIP2012 国王游戏

    2国王游戏 (game.cpp/c/pas) [问题描述] 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数 ...

  9. 继续写高精!noip2012国王游戏。。。

    国王游戏 题目描述: 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王 ...

  10. NOIP2012国王游戏(60分题解)

    题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最前面 ...

随机推荐

  1. 分享一个小设置-项目启动时服务器指向本地IIS

    背景,在X公司做的一个网站登录时需要域名的支持,就是说浏览器地址栏在localhost+端口号的形式下无法实现登录(必须是xxxx域名的形式), 但是很多时候都会先在线下进行测试,既然本地没有线上的环 ...

  2. Ajax中文乱码的解决

    网上有很多解决Ajax中文乱码的例子,昨晚弄了很久,最终确定一种“确实”有效地方法.首先我有必要说明一下我遇到的情况:有一个注册页面,注册用户填完信息并提交后,页面获得信息并通过java servle ...

  3. Tomcat异常及解决办法——持续更新中

    公司项目,开发语言为java,中间件为Tomcat,运行过程中,从Tomcat出现了一些异常,现将异常及解决办法记录如下,仅供参考.(不断在补充中.......) 异常一: 1.日志内容 org.ap ...

  4. [转帖]关于CPU Cache -- 程序猿需要知道的那些事

    关于CPU Cache -- 程序猿需要知道的那些事 很早之前读过作者的blog 记得作者在facebook 工作.. 还写过mysql相关的内容 大拿 本文将介绍一些作为程序猿或者IT从业者应该知道 ...

  5. npm的nrm命令使用--设置镜像地址

    npm下载会很慢,因为npm默认从国外下载资源,建议修改npm镜像源地址 1.运行npm i nrm -g全局安装nrm包: 2.使用nrm ls查看当前所有可用的镜像源地址以及当前所使用的镜像源地址 ...

  6. jQuery ajax解析xml文件demo

    解析xml文件,然后将城市列表还原到下拉列表框中:当选择下拉列表框时,在对应的文本框中显示该城市信息. 前端代码: <!doctype html> <html> <hea ...

  7. mac下php开发环境的搭建

    1.phpstorm 在官网:https://www.jetbrains.com/phpstorm/,下载最新版:phpstorm-2016.2.1 在http://15.idea.lanyus.co ...

  8. 工作效率提升之Eclipse篇(1):干掉烦人的xml文件的validation

    每次启动maven项目,都会有一堆烦人的xml文件的validation,一旦网络较慢,项目重新启动的时候,这些多余的验证纯属浪费时间. Eclipse上取消validation的方法: 1.菜单[W ...

  9. eclipse 编码

    单个修改 右击 选择properties  

  10. 从主机A得到id_rsa.pub文件,在主机B创建用户danny加入该文件,实现主机A免密登录主机B

    操作步骤: 1.主机A 生成公钥id_rsa.pub文件并导出该文件 root@mytest:~# ssh-keygen Generating public/private rsa key pair. ...