P1080 国王游戏(贪心+高精度乘除)

1080 国王游戏 1080 国王游戏 首先,需要把题目进行提炼 国王有n个大臣,他们每一个人,左右手各有一个数,ai,bi国王要他们站成一排(国王自己站在前面),随后给每个大臣奖赏 对于每一个大臣如果他前面的人左手上的数乘积是A,他自己右手上的是bi,那么他会获得A/bi的奖赏,国王想要让获得奖赏最多的大臣获得的尽量少,请你安排一种顺序满足他的要求,并输出最多大臣最少获得奖赏 记住一个思路,先考虑入局很小的情况,往往是有帮助的 从而推出公式 如果只有两个大臣,两个大臣的必要条件是,大臣2放在大臣1前面得到的最大值更小,那么我 阅读详情

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

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

输入输出格式

输入格式:

 

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

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

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1: 复制

3 
1 1 
2 3 
7 4 
4 6 

输出样例#1: 复制

2

说明

【输入输出样例说明】

按 1 11 、 222 、 333 这样排列队伍,获得奖赏最多的大臣所获得金币数为 222 ;

按 111 、 333 、 222 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2 22 ;

按 222 、 111 、 333 这样排列队伍,获得奖赏最多的大臣所获得金币数为 222 ;

按 2 22 、 333 、 11 1 这样排列队伍,获得奖赏最多的大臣所获得金币数为 9 99 ;

按 333 、 111 、 22 2 这样排列队伍,获得奖赏最多的大臣所获得金币数为 222 ;

按 3 33 、 222 、 111 这样排列队伍,获得奖赏最多的大臣所获得金币数为 999 。

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

【数据范围】

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

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

对于 60%的数据,有 1≤n≤1001≤ n≤1001≤n≤100 ;

对于 60%的数据,保证答案不超过 10910^9109 ;

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

NOIP 2012 提高组 第一天 第二题


贪心后注意相乘会爆longlong,用数组存,具体详见代码

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll n,T[1000005],t=1;  // 数组开太大会RE的,因为这个RE了10几发。。。。。
struct Why
{
    ll x,y;
}A[10005];
bool cmp(Why a,Why b)
{
    return a.x*a.y<b.x*b.y; //贪心
}
void mu(ll x)    //乘
{ 
    for(int i=1;i<=t;i++)
        T[i]*=x;          //每一位都乘
    for(int i=1;i<=t;i++)
    {
        T[i+1]+=T[i]/10;      //处理进位
        T[i]=T[i]%10;
        if(i==t&&T[i+1]!=0)    //t的后一位可能依旧大于9,使循环继续
            t++;
    }
}
void di(int y)    //除
{
    for(int i=t;i>=1;i--)
    {
        T[i-1]+=((T[i]%y)*10);     //模拟除法
        T[i]=T[i]/y;
    }
    while(T[t]==0)       //处理首位为0的情况
        t--;
    if(t==0)             //如果全为0,则输出1
        cout<<1<<endl;
}
int main()
{
    ios::sync_with_stdio(false);
    cin>>n>>A[0].x>>A[0].y;
    for(int i=1;i<=n;i++)
        cin>>A[i].x>>A[i].y;
    sort(A+1,A+n+1,cmp);
    T[1]=A[0].x;
    for(int i=1;i<n;i++)
        mu(A[i].x);
    di(A[n].y);
    for(int i=t;i>=1;i--)
        cout<<T[i];
    cout<<endl;
    return 0;
}

 

新手必看:用FileZilla从武大IGS中心下载GNSS数据,再到crx2rnx转换的完整流程 本文详细介绍了新手如何通过FileZilla从武汉大学IGS中心下载GNSS数据,并使用crx2rnx工具将数据转换为RINEX格式的完整流程。涵盖工具准备、FTP连接、文件解压、格式转换及常见问题排查,帮助测绘和地信专业人员高效处理GNSS观测值数据。 阅读详情

相关推荐

零基础使用Manim画傅里叶变换

0x01 准备工作 确保你的电脑中安装的有:Python(3.6以上版本,推荐3.8)、FFmpeg(在PATH环境变量中)、LaTex发行版,如果这些都有了,就可以跳过这步。 下面是安装指南: Python:Win10用户直接在微软商店搜索Python3.8安装,也可以自行百度安装方法,在开始菜单右键打开PowerShell,或者Win+R输入PowerShell打开,输入Pyhton --version,显示3.8以上。 FFmpeg:可以直接百度下载,或者用我打包好的(下载链接)。下载好后,将ff

TagBug的博客 3191

P1080 国王游戏

题目链接P1080 这个题目需要玄学的数学证明过程,大家可以参考下洛谷的题解数学证明过程过程 这个题我就不太配写题解了,发下自己的代码 import java.math.BigInteger; import java.util.*; public class Main { public static void main(String args[]){ Scanner sc = new Sca...

fancy的博客 345

[SDIO] SD card 初始化及常用命令解析(附波形,uboot代码)

目录 初始化 1.cmd 0 2.cmd8 3.cmd55 4.acmd41 5.cmd2 6.cmd3 7.cmd9 8.cmd13 9.cmd7 10.ACMD51 11.CMD6 12.CMD16 13.CMD17 14.CMD18 15.CMD12 tuning CMD19 DW_SDHCI的tuning流程 初始化 1.cmd 0 /* Reset the Card */ err = mmc_go_idle(mmc...

Lenz_s_law的开发记录本 2万+

洛谷P1080:国王游戏 (贪心+高精度)

前言:听高一的说今晚JT会过来讨论停课集训的事情。啊啊啊好想停课啊,不想上文化课QAQ……题目传送门:https://www.luogu.org/problem/show?pid=1080题目分析:刷一下前几年的NOIP真题……这题有一个结论:将每个大臣按左手上的数乘以右手上的数从小到大排序,即是最优的排列方法。为了证明这个贪心,不妨只考虑当前相邻的两个大臣i,ji,j,看一下他们交换位置后是否使答

KsCla 1151

Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】

一直都是报 【ECharts Unknown series wordCloud】这玩意可能要刷脸,祝你好运吧~

Sky_Bug的博客 2418

Proteus下载安装快速入门:30分钟掌握全过程

手把手教你完成proteus下载安装,从环境配置到首次运行一气呵成,适合电子设计新手快速掌握仿真工具的核心操作步骤。

weixin_31974443的博客 894

luoguP1080 国王游戏 题解(NOIP2012)(贪心+高精)

luoguP1080 国王游戏 题目 #include&lt;iostream&gt; #include&lt;cstdlib&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;cmath&gt; #include&lt;algorithm&gt; #define il inline #def...

eternal风度 770

从“Hello World”到区域赛银牌:我的ACM算法打怪升级全记录(附各阶段工具包)

本文记录了作者从编程新手到ACM区域赛银牌获得者的完整学习历程,详细分享了各阶段的算法学习路线、刷题策略和实战经验。涵盖从基础算法到动态规划的系统训练方法,并附赠经过竞赛检验的工具包和资源清单,为算法竞赛爱好者提供实用参考。

weixin_29201859的博客 123

luogu P1080 国王游戏 排序 高精度

将大臣手上数字的乘积升序排序 , 就是最优排队方案 证明: 如果 mul * a1 /b2 > mul * a2 /b1 ==> a1 * b1 > a2 * b2 那么交换1和2,可以使最大值更小(最大值并不一定是最后一个大臣 , 只是说明相邻两个大臣是否需要交换) 比较乘积的时候,如果相等,就比较右手上的数,小的放前面。 就相当于我们按照这个比较规则排序一次。然后配...

weixin_30650859的博客 142

从零到一:基于Esp32与LVGL的ST7789屏幕驱动全流程实战

本文详细介绍了基于Esp32与LVGL的ST7789屏幕驱动全流程实战,包括环境准备、驱动文件改造、硬件接口配置、LVGL集成与优化等关键步骤。通过VSCode+ESP-IDF开发环境,读者可以快速掌握SPI模式下的屏幕驱动开发,解决常见问题如颜色错乱、画面撕裂等,并实现LVGL的高效集成与性能优化。

weixin_33725722的博客 711

【水下小目标检测】SWIPENet与样本重加权:应对模糊与噪声的深度学习策略

本文深入探讨了水下小目标检测的挑战与解决方案,重点介绍了SWIPENet网络架构与IMA样本重加权算法。通过空洞卷积模块、特征金字塔重构和多尺度预测机制,SWIPENet有效提升了模糊目标的检测精度。结合Invert Multi-Class Adaboost算法,系统性地解决了水下环境中的样本不均衡问题,在URPC数据集上实现了48.8%的mAP,特别适合海洋生物检测等应用场景。

weixin_29057163的博客 346

P1080 国王游戏 题解(高精度乘除+贪心)

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

海马有力量的博客 1471

P1080 国王游戏(贪心+高精度乘除及大数比较)

https://www.luogu.org/problemnew/show/P1080 题目描述 恰逢 H H国国庆,国王邀请 nn 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 nn 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的...

tb_youth的博客 281

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

洛谷 P1080 国王游戏

这是一道贪心题,贪心的策略是将大臣们按左右手金币的乘积升序排列,具体证明过程可以参见洛谷大佬的题解,这里就不再赘述了。 因为本菜鸡之前没有接触过高精度运算,对C++的运算符重载也不太熟练,所以正好借此机会记录一下用到的高精度模版。模版框架参考于:https://blog.youkuaiyun.com/Wall_F/article/details/8373395 然而,直接复制该模版会导致TLE,原因在于这...

TimDyh的博客 250

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

P1080 [NOIP 2012 提高组] 国王游戏 题解复盘

模块:贪心算法目标:重新排列大臣顺序,使获得奖金最多的大臣奖金尽可能少。

2604_96548757的博客 220

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

别再死记硬背欧拉公式了!用Python可视化带你直观理解平面图的n-m+r=2

本文通过Python可视化方法直观解析平面图的欧拉公式n-m+r=2,帮助读者摆脱死记硬背。从基础概念到交互式工具开发,结合图论经典案例,展示公式的几何本质及应用场景,让抽象理论变得生动可触。

weixin_30363509的博客 398

P1080 [NOIP2012 提高组] 国王游戏

那个小哪个大,如果交换小,就交换,反之不交换。这道题是一道邻接交换模型贪心加上高精度。为什么,我们可以想一下极端数据如果。,当然我们可以再化简写成。反之同理,所以可以化简。

TLSnail 948

洛谷P1080 [NOIP2012 提高组] 国王游戏(贪心、高精度经典练习题)

排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。位大臣来玩一个有奖游戏。按 1、2、3 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2;按3、2、1 这样排列队伍,获得奖赏最多的大臣所获得金币数为 9。一个整数,表示重新排列后的队伍中获奖赏最多的大臣所获得的金币数。

MLJYHP的博客 366

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

一道洛谷绿题

yw51026的博客 633

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

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

一只快乐的小蒟蒻~ 2157

普及练习场-贪心-P1080 国王游戏

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

zqhf123的博客 397

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

洛谷P1080国王游戏题解

NOI RP++ 3881

2012NOIP提高组之国王游戏求解与贪心算法

本文对国王游戏题目进行了解题思路详细分析与贪心算法的常用证明方法,并给出了题解的完整c++代码,同时在蓝桥杯和洛谷解题平台提交了代码,验证了代码正确性。

weixin_46846685的博客 956
上一篇: P1090 合并果子(vector操作+二分的蒟蒻做法)
下一篇: P1019 单词接龙(DFS+回溯)
Whyckck
博客等级 码龄9年 6粉丝 142原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值