题目大意:

有一些数对,每个数对的得分为它之前所有数对的左侧数之乘积除以它的右侧数

求重新排列后数列中所有数对中最大得分尽可能小(第一个数对不参与排序,仍然为第一个)

思路:

非常简单,可以根据它对后面的影响排序

即若a i.l/a j.r < a j.l/a i.r则a i在a j前

则a i.l * a i.r < a j.l * a j.r则a i在a j前

那么我只需要一个重载运算符

但是呢,数据较大需要高精度

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<stack>
#define inf 2147483647
#define ll long long
#define MOD 1000000000
#define MAXN 1010
using namespace std;
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int n;
struct data
{
int l,r;
bool operator < (const data &a) const
{
return (l*r<a.l*a.r)||(l*r==a.l*a.r&&r<a.r);
}
}g[MAXN];
struct bign
{
ll num[MAXN*];
int len;
bign() {memset(num,,sizeof(num));len=;}
void mul(int a)
{
ll k=;
for(int i=;i<=len;i++)
{
num[i]=num[i]*a+k;
k=num[i]/MOD;
num[i]%=MOD;
}
if(k) {len++;num[len]=k;}
}
bign div(int a)
{
ll k=;
bign res;res.len=len;
for(int i=len;i>=;i--)
{
res.num[i]=(num[i]+k)/a;
k=((num[i]+k)%a)*MOD;
}
if(!res.num[len]&&res.len) res.len--;
return res;
}
void print()
{
printf("%d",num[len]);
for(int i=len-;i>=;i--)
{
printf("%09d",num[i]);
}
}
}tmp,ans;
void amax(bign b)
{
bool flag=;
if(ans.len>b.len) return ;
if(ans.len<b.len)
{
ans.len=b.len;
for(int i=ans.len;i>=;i--) ans.num[i]=b.num[i];
return ;
}
for(int i=ans.len;i>=;i--)
if(ans.num[i]<b.num[i]) {flag=;break;}
if(flag)
for(int i=ans.len;i>=;i--) ans.num[i]=b.num[i];
}
int main()
{
n=read();
int a=read(),b=read();
for(int i=;i<=n;i++) g[i].l=read(),g[i].r=read();
sort(g+,g+n+);
tmp.num[]=a;
for(int i=;i<=n;i++)
{
amax(tmp.div(g[i].r));
tmp.mul(g[i].l);
}
ans.print();
}

orz 写了个压位,又是小技巧调一年

第一次是因为没搞清楚*=的优先级

然后是因为除法考虑余数时算错了数组

luogu 1080 国王游戏的更多相关文章

  1. Luogu P1080国王游戏(贪心)

    国王游戏 题目链接:国王游戏 ps:题目数据说明了要写高精度. 这个题的答案是\(a.l * a.r < b.l * b.r\)按照这个进行排序 题解中大部分只是如何证明排序是: \(a.l * ...

  2. luogu P1080 国王游戏

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

  3. luogu P1080国王游戏

    贪心加高精 传送门:QWQ 先考虑两个人 a0 b0 p1 a1 b1 p2 a2 b2 那么满足:\(\huge ans1=\max(\frac{a0}{b1} , \frac{a0a1}{b2}) ...

  4. Luogu 1080 【NOIP2012】国王游戏 (贪心,高精度)

    Luogu 1080 [NOIP2012]国王游戏 (贪心,高精度) Description 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己 ...

  5. [noip2012]国王游戏<贪心+高精度>

    题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...

  6. NOIP2012 国王游戏

    2国王游戏 (game.cpp/c/pas) [问题描述] 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数 ...

  7. 【NOIP 2012 国王游戏】 贪心+高精度

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

  8. Codevs 1198 国王游戏 2012年NOIP全国联赛提高组

    1198 国王游戏 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 恰逢 H 国国庆,国王邀 ...

  9. luogu P2123 皇后游戏

    传送门 跟国王游戏一样的分析 考虑相邻的两个大臣,设他们前面的\(\sum a_j\)为\(s\),同时注意到后面人的贡献更大 所以\(i\)在前面时,\(c_j=\max(\max(c_{last} ...

随机推荐

  1. [Python3网络爬虫开发实战] 2.4-会话和Cookies

    在浏览网站的过程中,我们经常会遇到需要登录的情况,有些页面只有登录之后才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录.还有一些网站,在打开浏览器时就自动登录了,而且 ...

  2. [Python3网络爬虫开发实战] 1.4.1-MySQL的安装

    MySQL是一个轻量级的关系型数据库,本节中我们来了解下它的安装方式. 1. 相关链接 官方网站:https://www.mysql.com/cn 下载地址:https://www.mysql.com ...

  3. Spring 和 Hibernate的整合

    问题 ,spring 和 hibernate 整合 如何整合 1. Spring 使用Hibernate的的SessionFactory 2. Hibernate使用Spring提供的声明式事务

  4. Xcode8、 iOS10 适配问题

    调用相机.相册.麦克风.位置等隐私问题崩溃解决办法 你的项目中访问了隐私数据,比如:相机,相册,联系人等,在Xcode8中打开编译的话,统统会crash,控制台会输出下面这样的日志: 这是因为iOS对 ...

  5. DFS template and summary

    最近一直在学习Deep Frist Search,也在leetcode上练习了不少题目.从最开始的懵懂,到现在遇到问题基本有了思路.依然清晰的记得今年2月份刚开始刷题的时做subsets的那个吃力劲, ...

  6. zoj4710暴力

    #include<stdio.h> #include<string.h> #define N 110 int map[N][N]; int main() { int n,m,k ...

  7. [K/3Cloud] 如何设置设置单据分录中的整列的精度

    有时,你可能想设置整列的精度,可以在插件中完成. 设置方法如下 : this.View.GetFieldEditor<DecimalFieldEditor>("FAmount&q ...

  8. Jam's balance set 暴力

    Jim has a balance and N weights. (1≤N≤20)(1≤N≤20) The balance can only tell whether things on differ ...

  9. request详究

    本文主要是对在学习过程中遇到的request用法进行归纳总结,彻底的搞明白request在jsp中的作用. 百度百科的介绍如下: Request对象的作用是与客户端交互,收集客户端的Form.Cook ...

  10. 洛谷——P1151 子数整数

    P1151 子数整数 题目描述 对于一个五位数a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5 例如,五位数20207可以拆分成 s ...