zoukankan      html  css  js  c++  java
  • NOIP2012 DAY1 T2 国王游戏

    题目描述

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

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

    输入输出格式

    输入格式:

     

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

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

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

     

    输出格式:

     

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

    假设最初存在3个仔[0,2],左右手分别标为ai,bi

    那么a0,b0显然代表着国王,那么队列就可能是:

    a0  b0

    a1  b1

    a2  b2

    或者是

    a0  b0

    a2  b2

    a1  b1

    那么我知道对于第一种情况最大值是

    max{a0/b1,a0*a1/b2}

    对于第二种情况是

    max{a0/b2,a0*a2/b1}

    (请自动脑补下取整符号)

    这样我们可以显然的知道:

    a0*a1/b2 > a0/b2

    a0*a2/b1 > a0/b1

    这样问题就变成了

    max{a0*a1/b2,a0*a2/b1}

    然后我们假设存在a0*a1/b2 > a0*a2/b1

    然后可以得到a1*b1 > a2*b2

    就是说我们可以按所有人左右手的乘积大小从小到大排序。

    但是这题要高精,所以我选择,去世

  • 相关阅读:
    Fbpanel-轻巧的面板措施
    Skype for Linux 1.4 Alpha 公布
    KFTPgrabber 0.8.1
    Ardour:专业的数字音频任务站
    Cinelerra:视频编纂软件
    V2EX::ING 与 INGC
    HandBrake:DVD 转换工具
    XML Copy Editor:XML 编纂器
    Abraca:XMMS2 的客户端
    KMess:MSN Messenger for KDE
  • 原文地址:https://www.cnblogs.com/ywjblog/p/11160691.html
Copyright © 2011-2022 走看看