两个难点。

  • 怎么想到的贪心?

首先确定算法:

显然不是数据结构题。转成图论也不太可能。

考虑DP:f[i][j]表示前i个人取j状态的最小最大值......2^1000,直接放弃。

因为出现了“最大值最小”,考虑二分答案:如果我们有一个ans是最大值,我们怎么判断是否可行?

要确保每一个数都不会超过ans,这很困难。

思路戛然而止。

然后思考:本题要求排序。zbtrs:排序不就是贪心吗?

然后想到邻位互换法,得出贪心策略。

显然很难想出贪心来......

  • 高精度

这个没什么好说的,写个高精度乘单精度,除单精度,比较大小,输出,就行了。


跑的十分之快,136ms十个点
 #include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
const int N = ;
struct LL {
string num;
void out() {
for(int i = ; i < num.size(); i++) {
putchar(num[i]);
}
return;
}
LL operator * (const int& x) const {
int len = num.size();
int a[len + ];
memset(a, , sizeof(a));
for(int i = ; i < len; i++) {
a[i] = num[len - i - ] - '';
a[i] *= x;
}
for(int i = ; i < len; i++) {
if(a[i] > ) {
a[i + ] += a[i] / ;
a[i] %= ;
if(i + == len) {
len++;
}
}
}
string f = "";
for(int i = len - ; i >= ; i--) {
f += (a[i] + '');
}
LL t;
t.num = f;
return t;
}
LL operator / (const int x) const {
int len = num.size();
int a[len];
for(int i = ; i < len; i++) {
a[i] = num[len - i - ] - '';
}
for(int i = len - ; i > ; i--) {
a[i - ] += * (a[i] % x);
a[i] /= x;
}
a[] /= x;
while(len >= && a[len - ] == ) {
len--;
}
string f = "";
for(int i = len - ; i >= ; i--) {
f += (a[i] + '');
}
LL t;
t.num = f;
return t;
}
bool operator < (const LL& x) const {
if(num.size() != x.num.size()) {
return num.size() < x.num.size();
}
for(int i = ; i < num.size(); i++) {
if(num[i] != x.num[i]) {
return num[i] < x.num[i];
}
}
return ;
}
};
struct Man {
int a, b, c;
bool operator < (const Man &f) const{
return this->c < f.c;
}
}man[N];
int main() {
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf("%d%d", &man[i].a, &man[i].b);
man[i].c = man[i].a * man[i].b;
} sort(man + , man + n + );
/*
for(int i = 1; i <= n; i++) {
printf("%d %d %d\n", man[i].a, man[i].b, man[i].c);
}
printf("\n");
*/
LL ans, now;
now.num = "";
ans.num = "";
for(int i = ; i < n; i++) {
now = now * man[i].a;
LL t = now / man[i + ].b;
if(ans < t) {
ans = t;
}
}
ans.out();
return ;
}
/**
3
1 7
6 1
2 3
2 3
ans:4
*/

AC代码

洛谷P1080 国王游戏的更多相关文章

  1. 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山

    前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...

  2. 【题解】洛谷 P1080 国王游戏

    目录 题目 思路 \(Code\) 题目 P1080 国王游戏 思路 贪心+高精度.按\(a \times b\)从小到大排序就可以了. \(Code\) #include<bits/stdc+ ...

  3. 洛谷P1080 国王游戏 python解法 - 高精 贪心 排序

    洛谷的题目实在是裹脚布 还编的像童话 这题要 "使得获得奖赏最多的大臣,所获奖赏尽可能的少." 看了半天都觉得不像人话 总算理解后 简单说题目的意思就是 根据既定的运算规则 如何排 ...

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

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍 ...

  5. 洛谷 P1080 国王游戏

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...

  6. 洛谷—— P1080 国王游戏

    https://www.luogu.org/problem/show?pid=1080 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整 ...

  7. 洛谷P1080 国王游戏【大数】【贪心】

    题目:https://www.luogu.org/problemnew/show/P1080 题意: 一个国王和n个大臣,每个人左右手上都有一个数值. 现在将国王排在队首,将大臣进行排序.每个大臣的值 ...

  8. 洛谷 P1080 国王游戏 题解

    原题 传送门 思路 分析 我们先假设队伍如下: People left hand right hand Before \(S_a\) A \(a_1\) \(b_1\) B \(a_2\) \(b_2 ...

  9. 【题解】洛谷P1080 [NOIP2012TG] 国王游戏(贪心+高精度)

    次元传送门::洛谷P1080 思路 我们模拟一下只有两个大臣的时候发现 当a1​∗b1​<a2​∗b2​是ans1<ans2 所以我们对所有大臣关于左右手之积进行排序 得到最多钱的大臣就是 ...

随机推荐

  1. Java中List集合去除重复数据的四种方法

    1. 循环list中的所有元素然后删除重复   public static List removeDuplicate(List list) { for ( int i = 0 ; i < lis ...

  2. K3CLOUD常用数据表

    一.数据库查询常用表 --查询数据表select * from ( select convert(varchar(4000),t1.FKERNELXML.query('//TableName')) a ...

  3. Sublime Text3 配置 NodeJs 开发环境

    题外话:使用visual studio开发NodeJs也是很方便,只需要安装插件即可. 本着对Sublime Text3的喜爱,尤其是最近更新后,界面和功能上感觉更nice了,那就配置一发环境吧! ( ...

  4. C# Note26: [MethodImpl(MethodImplOptions.Synchronized)]与lock机制

    在进行.NET开发时,经常会遇见如何保持线程同步的情况.在众多的线程同步的可选方式中,加锁无疑是最为常用的.如果仅仅是基于方法级别的线程同步,使用System.Runtime.CompilerServ ...

  5. Spring框架IOC和AOP的实现原理

    IoC(Inversion of Control) (1). IoC(Inversion of Control)是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码直接操控.控制权由应用代码中 ...

  6. mktemp -t -d用法

    mktemp命令用于建立暂存文件或者文件夹,帮助文档如下: Usage: mktemp [OPTION]... [TEMPLATE] Create a temporary file or direct ...

  7. ES6 & Map & hashMap

    ES6 & Map & hashMap 01 two-sum https://leetcode.com/submissions/detail/141732589/ hashMap ht ...

  8. JQ 动态修改/替换某个节点的内容

     <div class="box">我们定位于中国心理行业第一<div> $(".box").html($(".box&quo ...

  9. Java权限访问修饰符

    私有的,以 private 修饰符指定,在同一类内可见. 默认的,也称为 default,在同一包内可见,不使用任何修饰符. 受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见 ...

  10. Memcached cas 陷阱

    本地使用的 php7环境,测试好上传到服务器后发现memcached get 报错,服务器上是php5环境: 出错代码如下: $memConnect->get($key,null, Memcac ...