【题解】洛谷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和 ...
随机推荐
- HDU 4747(AC不能)
http://acm.hdu.edu.cn/showproblem.php?pid=4747
- web杂记-禁止输入框自动填充文字
1:背景 公司基于业务需求开发了一套纯JS的时间控件,本来用得好好得.后来发现在部分浏览器下使用该时间控件会出现输入框自动填充的部分与控件的展示产生了冲突: 如图: 2:问题分析 因为部分浏览太人性化 ...
- react 使用 ref 报错 ,[eslint] Using string literals in ref attributes is deprecated. (react/no-string-refs)
react 项目中给指定元素加事件,使用到 react 的 ref 属性,Eslink 报错 [eslint] Using string literals in ref attributes is d ...
- arcgis10.2 serverstyle 制作工具位置 小计
跟9.3时候的套路还是一样的,只是工具已经放到了arcgis desktop的安装目录的bin文件夹下面. engine和developerkit都不附带该工具. 但是engine会附带一组默认的转换 ...
- Android 简单图片浏览器 读取sdcard图片+形成缩略图+Gallery
1.读取SD卡上面的图片信息 //想要的返回值所在的列 String[] projection = { MediaStore.Images.Thumbnails._ID}; //图片信息存储在 and ...
- Single Number 数组中除了某个元素出现一次,其他都出现两次,找出这个元素
Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...
- Rxjava学习(一基础篇)
一.Rxjava跟EventBus的区别 RxJava 是一个响应式编程框架,通过一种扩展的观察者设计模式来实现异步操作. 跟AsyncTask和Handler类似,但是比AsyncTask和Hand ...
- Unihan(统汉字)常用字段介绍
0 背景 1 文件 1.1 IRG Sources 1.2 Dictionary Indices 1.3 Dictionary-like Data 1.4 Other Mappings 1.5 Rad ...
- Java基础之JSONObject的使用
private static JSONObject createJSONObject() { JSONObject jsonObject = new JSONObject(); jsonObject. ...
- [翻译] AsyncDisplayKit
AsyncDisplayKit AsyncDisplayKit is an iOS framework that keeps even the most complex user interfaces ...