【题目描述】
恰逢HHH国国庆,国王邀请nnn位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这nnn位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。
国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。

【输入格式】
第一行包含一个整数nnn,表示大臣的人数。
第二行包含两个整数aaa和bbb,之间用一个空格隔开,分别表示国王左手和右手上的整数。
接下来nnn行,每行包含两个整数aaa和bbb,之间用一个空格隔开,分别表示每个大臣左手和右手上的整数。

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

【数据范围】
1≤n≤1,000,0<a,b<100001≤n≤1,000,0<a,b<100001≤n≤1,000,0<a,b<10000

【输入样例】

3
1 1
2 3
7 4
4 6

【输出样例】

2

【分析】


按照a∗ba*ba∗b从小到大进行排序即为最优解,乘除法时需要使用高精度计算。


【代码】

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <string>
using namespace std;typedef pair<int, int> PII;
const int N = 1010;
vector<int> sum, res;
PII item[N];
int n;//高精度sum / x
vector<int> eval_div(vector<int> sum, int x)
{vector<int> res;int r = 0;for (int i = sum.size() - 1; i >= 0; i--){r = r * 10 + sum[i];res.push_back(r / x);r %= x;}reverse(res.begin(), res.end());while (res.size() > 1 && res.back() == 0) res.pop_back();//去前导0return res;
}//高精度sum * x
vector<int> eval_mul(vector<int> sum, int x)
{vector<int> res;int t = 0;for (int i = 0; i < sum.size() || t; i++){if(i < sum.size()) t += sum[i] * x;res.push_back(t % 10);t /= 10;}while (res.size() > 1 && res.back() == 0) res.pop_back();//去前导0return res;
}int main()
{cin >> n;string a, b;cin >> a >> b;for (int i = a.size() - 1; i >= 0; i--)sum.push_back(a[i] - '0');for (int i = 0; i < n; i++){cin >> item[i].first >> item[i].second;item[i].first *= item[i].second;}sort(item, item + n);//按a * b从小到大排序for (int i = 0; i < n; i++){int right = item[i].second, left = item[i].first / right;auto tmp = eval_div(sum, right);if (tmp.size() > res.size()) res = tmp;if (tmp.size() == res.size())for (int i = res.size() - 1; i >= 0; i--)if (tmp[i] > res[i]) res = tmp;sum = eval_mul(sum, left);}for (int i = res.size() - 1; i >= 0; i--) cout << res[i];return 0;
}

洛谷P1080 [NOIP2012 提高组] 国王游戏(贪心,高精度)相关推荐

  1. 洛谷P1080 [NOIP2012 提高组] 国王游戏

    这是我的第一版,超级简单,但有个点ac不掉,想了半天才发现我理解错那个规律了 struct people{int a,b;bool operator <(const people x) cons ...

  2. [NOIP2012提高组]国王游戏

    题目:洛谷P1080.Vijos P1779.codevs1198. 题目大意:国王和每个大臣左.右手各写了一个数.规定每个大臣得到的金币数为他前面所有人左手的数字的乘积除以他自己右手的数(向下取整) ...

  3. 洛谷P1083 [NOIP2012提高组Day2T2]借教室

    P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...

  4. 洛谷P1312 [NOIP2011 提高组] Mayan 游戏 题解

    题目描述 Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个7 行 5×5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指 ...

  5. luoguP1080[NOIP2012提高组]国王游戏

    话说要不是标签我都看不出来是个贪心.. 证明一下贪心 XXX的左手为a1a_1a1​,右手为b1b_1b1​. YYY的左手为a2a_2a2​,右手为b2b_2b2​ 假设X位于Y的前边 位于XXX前 ...

  6. 信息学奥赛一本通 1844:【06NOIP提高组】金明的预算方案 | 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案

    [题目链接] ybt 1844:[06NOIP提高组]金明的预算方案 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案 [题目考点] 1. 动态规划:分组背包 2. 动态规划:依赖背包 ...

  7. 信息学奥赛一本通 1890:【15NOIP提高组】跳石头 | 洛谷 P2678 [NOIP2015 提高组] 跳石头

    [题目链接] ybt 1890:[15NOIP提高组]跳石头 洛谷 P2678 [NOIP2015 提高组] 跳石头 ybt 1247:河中跳房子 OpenJudge NOI 1.11 10:河中跳房 ...

  8. 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏

    [题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...

  9. 信息学奥赛一本通 1848:【07NOIP提高组】字符串的展开 | OpenJudge NOI 1.7 35:字符串的展开 | 洛谷 P1098 [NOIP2007 提高组] 字符串的展开

    [题目链接] ybt 1848:[07NOIP提高组]字符串的展开 OpenJudge NOI 1.7 35:字符串的展开 洛谷 P1098 [NOIP2007 提高组] 字符串的展开 [题目考点] ...

最新文章

  1. mysql innodb 1017_MySQL InnoDB表压缩
  2. 泰拉瑞亚服务器权限文件,泰拉瑞亚云服务器权限
  3. Makefile文件的使用
  4. NSDictionary 、 NSMutableDictionary
  5. oracle动态性能视图和静态,oracle最重要的9个动态性能视图
  6. 计算机审计的概念的论文,论文:浅谈计算机审计中的数据分析
  7. 选课_ctsc1997_ssl1606_树形dp
  8. ktv app html,ktv.html
  9. 跨浏览器确定一个窗口的大小
  10. toString和valueOf使得对象访问时显示一个特定格式的字符串,但是可以进行数字运算...
  11. mysql 5.7 主主配置文件_MySQL 5.7主主备份配置
  12. rstudio中读取数据_如何在RStudio中预览数据
  13. vue--后台管理系统问题和功能实现思路集锦
  14. 大一的第三次作业,/(ㄒoㄒ)/~~
  15. 自动连接 无法连接网络连接服务器,微信提示无法连接到服务器怎么办?微信无法连接服务器怎么解决?...
  16. 2021江苏连云港高考成绩查询时间,2021年江苏连云港高考时间:6月7日至9日
  17. tf2加载图片数据集并训练
  18. SpringBoot系统整理|基础篇|黑马视频
  19. windows server 2008 r2如何找到自带的磁盘清理工具
  20. 2020莱斯大学计算机全球排名,2020年莱斯大学QS世界排名

热门文章

  1. 次短路问题(陕西师范大学第九届ACM程序设计竞赛-F 新冠病毒要回家)
  2. java(17)map与IO技术
  3. qt介绍06——QMAKESPEC
  4. NR常用协议以及下载路径
  5. 【奇奇怪怪的bug】删除文件显示「找不到该项目」怎么办
  6. 分类算法及其应用场景
  7. 李连杰讲《功守道》:马云这个青年演员很敬业
  8. 【算法•日更•第九期】树型动态规划详解:二叉苹果树
  9. QMainWindow
  10. 程序员:品《漱玉词》看李清照生活审美