P1080 国王游戏

题解

贪心策略:按照大臣左右手数字乘积从小到大排序

假设我们已经把大臣排了一个顺序

假定在这个顺序下我们可以保证  得到奖赏最多的大臣所得奖赏最少

那么我们一旦交换任意两个大臣,得到奖赏最多的大臣所得奖赏就不是最少的

假设 3,4 号大臣是候选 “ 所得奖赏最多的大臣 ” ,那么我们现在交换他们的顺序

交换之后 3,4 之前的大臣以及3,4之后的大臣所得奖赏都不会被影响,受到影响的只是3,4号大臣

那么我们设3,4之前的大臣左手上的乘积和为 S

所以,

对于交换前:ans1 = max(  s / b[3]  ,  s * a[3] / b[4]  )

对于交换后:ans2 = max(  s / b[4]  ,  s * a[4] / b[3]  )

由于交换后无法得到更优解,所以

ans1  <  ans2

max(  s / b[3]  ,  s * a[3] / b[4]  )  <   max(  s / b[4]  ,  s * a[4] / b[3]  )

max(  1 / b[3]  ,  1 * a[3] / b[4]  )  <  max(  1 / b[4]  ,  1 * a[4] / b[3]  )

所以答案只和第2,4项有关

a[3] / b[4]  <  a[4] / b[3]

移项

a[3] * b[3]  <  a[4] * b[4]

所以:

贪心策略:按照大臣左右手数字乘积从小到大排序

剩下的问题就是高精度处理了QWQ

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<queue> using namespace std; #define ll long long inline int read()
{
int ans=;
char last=' ',ch=getchar();
while(ch<''||ch>'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=ans*+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} int n;
long long ans;
struct node
{
int a,b;
long long val;
long long mul;
}peo[]; bool cmp(node x,node y)
{
return x.mul <y.mul ;
} int main()
{
n=read();
for(int i=;i<=n;i++)
{
peo[i].a =read();
peo[i].b =read();
peo[i].mul =peo[i].a *peo[i].b ;
} sort(peo+,peo+n+,cmp); for(int i=;i<=n;i++)
{
long long res=;
for(int j=;j<i;j++)
res*=peo[j].a ;
res/=peo[i].b ;
ans=max(ans,res);
} printf("%lld\n",ans); return ;
}

60' 没加高精度

最新文章

  1. Android中的dp, px, pt
  2. javascript里阻止事件冒泡
  3. 清橙 A1206 小Z的袜子(莫队算法)
  4. Java学习-010-创建文件夹源代码
  5. Flask框架学习笔记(API接口管理平台 V2.0)
  6. 【BZOJ】【2818】Gcd
  7. 【C#学习笔记】读文件
  8. 在android中进行视频的分割
  9. hdu 2460
  10. Spark里面:获取图Spark有多少行代码
  11. VS2015下的Android开发系列02——用VS开发第一个Android APP
  12. &lt;iOS&gt;UIImage变为NSData并进行压缩
  13. HI3531网络tftp、nfs加载
  14. 解决ASP.NET Core MVC调试慢的问题
  15. Linux操作系统的文件链接
  16. 《Linux就该这么学》第十五天课程
  17. GDB调试qemu-kvm
  18. 修改任务显示WrkTaskIp.aspx页面
  19. mysql 8.0 ~ 安装
  20. ASP.NET Core 2.0 Preview 1 中贴心的新特性

热门文章

  1. mysql中binglog底层原理分析
  2. 16.Listener(监听器)
  3. MYSQL 遇见各种有意思题库
  4. 【坑】Spring中抽象父类属性注入,子类调用父类方法使用父类注入属性
  5. SURF算法源代码OPENSURF分析
  6. vue-element-admin后台的安装
  7. AtCoder Beginner Contest 132 F Small Products
  8. css网页使用自定义字体方法
  9. hdu 6074 Phone Call
  10. vue中使用v-chart改变柱状图颜色以及X轴Y轴的文字颜色和大小以及标题