【题解】洛谷P1080 [NOIP2012TG] 国王游戏(贪心+高精度)
次元传送门:;洛谷P1080
思路
我们模拟一下只有两个大臣的时候发现
当a1∗b1<a2∗b2是ans1<ans2
所以我们对所有大臣关于左右手之积进行排序
得到最多钱的大臣就是最后一个(当有左手除右手向下取整为0的时候不一定 只有第二个点可以特判)
所以答案用前n-1个人的左手相乘除以第n个人的右手
记得高精
代码
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 100010
struct People
{
int l;
int r;
int sum;
}p[maxn];
int n,L=;
int g[maxn];//高精数组
bool cmp(People a,People b)
{
return a.sum<b.sum;
}
void mul(int x)//高精乘法
{
for(int i=;i<=L;i++) g[i]*=p[x].l;//先乘以每一位
for(int i=;i<=L;i++)
{
g[i+]+=(g[i]/);//进位
g[i]%=;
}
L++;//长度++
while(g[L]>)//延长长度
{
g[L+]+=(g[L]/);//计算下一位的进位
g[L]%=;
L++;//长度++
}
if(g[L]==) L--;//清除前导零
}
void div()//高精除法
{
for(int i=L;i>=;i--)
{
g[i-]+=((g[i]%p[n].r)*);//计算下一位
g[i]/=p[n].r;
}
while(g[L]==) L--;//清除前导零
if(L==) cout<<;//如果减完了就输出1 第二个测试点特判
}
int main()
{
cin>>n>>p[].l>>p[].r;//国王不用排序
for(int i=;i<=n;i++)
{
cin>>p[i].l>>p[i].r;
p[i].sum=p[i].l*p[i].r;//计算左右手相乘
}
sort(+p,+p+n,cmp);//排序
g[]=p[].l;//初始化高精
for(int i=;i<n;i++) mul(i);//乘以前n-1个人的左手
div();//除以第n个人的右手
for(int i=L;i>=;i--) cout<<g[i];//倒序输出
}
【题解】洛谷P1080 [NOIP2012TG] 国王游戏(贪心+高精度)的更多相关文章
- 洛谷P1080(NOIP2012)国王游戏——贪心排序与高精度
题目:https://www.luogu.org/problemnew/show/P1080 排序方法的确定,只需任取两个人,通过比较与推导,可以得出ai*bi小的人排在前面: 高精度写的时候犯了些细 ...
- 【洛谷P1080】国王游戏
我们按照左右手数的乘积升序排序,就能使最多金币数最小了 为什么呢? 我们知道: 1)如果相邻的两个人交换位置,只会影响到这两个人的值,不会影响他人 2)假设相邻的两个人i, i + 1.设A[i] B ...
- P1080 【NOIP 2012】 国王游戏[贪心+高精度]
题目来源:洛谷 题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王 ...
- [noip2012]国王游戏<贪心+高精度>
题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...
- P1080 国王游戏 贪心 高精度
题目描述 恰逢 HH国国庆,国王邀请nn 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 nn 位大臣排成一排,国王站在队伍的 ...
- 洛谷$P$2123 皇后游戏 贪心
正解:贪心 解题报告: 传送门! 心血来潮打算把$luogu$提高历练地及其之前的所有专题都打通关,,,$so$可能会写一些比较水的题目的题解$QAQ$ 这种题,显然就套路地考虑交换相邻两个人的次序的 ...
- 题解 洛谷 P3825 【[NOI2017]游戏】
从题面中四元组\((i,h_i,j,h_j)\)限制选择车子型号,不难想到这题要用\(2-SAT\)解决. 考虑转化为\(2-SAT\)模型,发现除地图\(x\)外,其他地图都只有两种车子型号可以参加 ...
- 【NOIP2012提高组】国王游戏 贪心 + 高精度
题目分析 题目答案不具有单调性,所以不可以二分,转而思考贪心.因为无法确定位置,所以考虑如何才能让对于每一个$1 ~ i$使得$i$的答案最大,即$1 ~ i$最后一个最优.若设对于位置$i$,$a[ ...
- NOIP2012 Day1 T2国王游戏 洛谷P1080
第一篇博客啊…… 由于我太弱了,还要去补不全的知识点准备参加人生第一次NOIp,所以第一篇博客就简短一点好了(偷懒就直说吧……) 洛谷P1080传送门 题意概括: 有N对数ai和bi,以及两个数a0和 ...
随机推荐
- JDBC处理事务
一.什么是事务? 在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 二.事务是必须满足4个条件(AC ...
- ES6学习笔记(四)-数值扩展
PS: 前段时间转入有道云笔记,体验非常友好,所以笔记一般记录于云笔记中,每隔一段时间,会整理一下, 发在博客上与大家一起分享,交流和学习. 以下:
- CentOS6下docker的安装和使用
CentOS6下docker的安装和使用 Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.利用Linux的LXC.AUFS.Go语言.cgroup ...
- 13 Reasons Why You Should Pay Attention to Mobile Web Performance
Mobile is no longer on the sidelines. If you’re not already thinking mobile first, you should at lea ...
- FCC上的javascript算法题之中级篇
FCC中的javascript中级算法题解答 中级算法的题目中用到了很多js的知识点,比如迭代,闭包,以及对json数据的使用等等,现在将自己中级算法的解答思路整理出来供大家参考讨论.欢迎大家提出新的 ...
- KaTeX.js
KaTeX.js 官网:https://khan.github.io/KaTeX/
- 在PHP中使用加密技术
Gpg4win 是一款基于 GPG 的非对称加密软件.非对称加密方式,简单理解就是用公钥加密文件,用私钥解密文件.如果你需要发送加密信息,首先获取接收者的公钥,然后利用该公钥加密后传递,对方利用对应的 ...
- 转:Linux中tomcat服务成功发布但局域网浏览器无法访问
转自:http://blog.csdn.net/mooncom/article/details/53168143 昨天,我在搭建Linux中服务器环境时,碰见一个问题,这里和大家分享一下. 问题描述: ...
- [算法练习]Excel Sheet Column Title
题目: Given a positive integer, return its corresponding column title as appear in an Excel sheet. For ...
- Python3 中日语料分句实现
0. 背景 因为最近在看平行语料句对齐.词对齐的缘故,想做对齐的话需要先做一个分句. 一开始利用正则和引号开关标志写了一种方法,中间想到一个小技巧,写出来比较简单通用,想把这一小段代码分享一下. 1. ...