luogu 1080 国王游戏
题目大意:
有一些数对,每个数对的得分为它之前所有数对的左侧数之乘积除以它的右侧数
求重新排列后数列中所有数对中最大得分尽可能小(第一个数对不参与排序,仍然为第一个)
思路:
非常简单,可以根据它对后面的影响排序
即若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 国王游戏的更多相关文章
- Luogu P1080国王游戏(贪心)
国王游戏 题目链接:国王游戏 ps:题目数据说明了要写高精度. 这个题的答案是\(a.l * a.r < b.l * b.r\)按照这个进行排序 题解中大部分只是如何证明排序是: \(a.l * ...
- luogu P1080 国王游戏
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...
- luogu P1080国王游戏
贪心加高精 传送门:QWQ 先考虑两个人 a0 b0 p1 a1 b1 p2 a2 b2 那么满足:\(\huge ans1=\max(\frac{a0}{b1} , \frac{a0a1}{b2}) ...
- Luogu 1080 【NOIP2012】国王游戏 (贪心,高精度)
Luogu 1080 [NOIP2012]国王游戏 (贪心,高精度) Description 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己 ...
- [noip2012]国王游戏<贪心+高精度>
题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...
- NOIP2012 国王游戏
2国王游戏 (game.cpp/c/pas) [问题描述] 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数 ...
- 【NOIP 2012 国王游戏】 贪心+高精度
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍 ...
- Codevs 1198 国王游戏 2012年NOIP全国联赛提高组
1198 国王游戏 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 恰逢 H 国国庆,国王邀 ...
- luogu P2123 皇后游戏
传送门 跟国王游戏一样的分析 考虑相邻的两个大臣,设他们前面的\(\sum a_j\)为\(s\),同时注意到后面人的贡献更大 所以\(i\)在前面时,\(c_j=\max(\max(c_{last} ...
随机推荐
- Java 读取linux上的文件
今天遇到一个问题,在Windows环境上开发,测试环境和正式环境服务器都是linux: 一个导出表格的功能,在本地没问题,发布到linux服务器就报找不到文件问题,但是模板文件已经在linux下了.刚 ...
- 常用的四种设计模式 PHP代码
// 工厂模式 interface Iuser { public function getUserName(); } class UserFactory { static public functio ...
- Hadoop安装与配置
Hadoop介绍 上面是官方介绍,翻一下来总结一句话就是:Hadoop是一个高可用,用于分布式处理大规模计算的工具. Hadoop1.2 下载 . Hadoop1.2 安装 1. 安装jDK 2. 配 ...
- 闲着无聊 一个python的,三级菜单。装逼版。
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': ...
- HDU 5458 Stability
Stability Time Limit: 2000ms Memory Limit: 102400KB This problem will be judged on HDU. Original ID: ...
- [BZOJ1029] [JSOI2007]建筑抢修(贪心 + 优先队列)
传送门 把数据存在结构体中,至于怎么贪心? 肯定会有些想法,正确错误先不必说,先来试一试. 1.按照 t2 为第一关键字从小到大排,按照 t1 为第二关键字从小到大排 这个显然错,比如后面有个数的 t ...
- android源码编译时拷贝替换指定文件
由于要做版本定制,某些版本的资源文件等(例如style.xml)需要不同的配置,但是android的编译开关无法在xml里使用,于是想到了编译时根据不同的编译开关编译不同的文件,如下: 1.建立A.x ...
- 关于PHP include文件时的文件查找顺序
常常被include文件的路径搞晕. 看来是要理一理的时候了. PHP官方文档关于include搜索路径的解释是:先查找工作目录下相对于include_path设置所对应的路径,然后再搜索执行文件所在 ...
- QQ - Linux中文Wiki
QQ:http://linux-wiki.cn/wiki/zh-hans/QQ 此页由张凯于2013年7月7日 (星期日) 14:00的最后更改. 在陈泓旭和沧之声和Linux Wiki用户Chenx ...
- gradle 安装及设置本地仓库地址
进入地址:http://services.gradle.org/ 下载-bin.zip 解压到自己指定的目录. 配置环境变量 GRADLE_HOME gradle的根目录. 在path 中 添加 % ...