P1080 国王游戏

题目描述

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

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

输入输出格式

输入格式:

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

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

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

输出格式:

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

输入输出样例

输入样例#1:

3
1 1
2 3
7 4
4 6
输出样例#1:

2

说明

【输入输出样例说明】

按 1、2、3 号大臣这样排列队伍,获得奖赏最多的大臣所获得金币数为 2;

按 1、3、2 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2;

按 2、1、3 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2;

按 2、3、1 这样排列队伍,获得奖赏最多的大臣所获得金币数为 9;

按 3、1、2 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2;

按 3、2、1 这样排列队伍,获得奖赏最多的大臣所获得金币数为 9。

因此,奖赏最多的大臣最少获得 2 个金币,答案输出 2。

【数据范围】

对于 20%的数据,有 1≤ n≤ 10,0 < a、b < 8;

对于 40%的数据,有 1≤ n≤20,0 < a、b < 8;

对于 60%的数据,有 1≤ n≤100;

对于 60%的数据,保证答案不超过 10^9;

对于 100%的数据,有 1 ≤ n ≤1,000,0 < a、b < 10000。

NOIP 2012 提高组 第一天 第二题

/*
贪心
对于第 i个大臣和第 j 个大臣:
如果第 i 个大臣放第 j 个大臣前面对答案的贡献小些,那么第 ii 个大臣就放第 jj 个大臣前面
所以就是使 a[i].x/a[j].y<a[j].x/a[i].y
所以就是a[i].x*a[i].y<a[j].x*a[j].y
重载运算符高精
*/ #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> #define ll long long
#define N 1007 using namespace std;
int L,R,n;
struct node{
int l,r;
bool operator < (const node &x) const{
return l*r<(x.l*x.r);
}
}a[N]; class Big{ public: int size,num[N<<];
Big(){size=;memset(num,,sizeof num);} Big(int data){
size=;
while(data!=)
{
size++;
num[size]=data%;data/=;
}
} inline void init(int data){
size=;
while(data!=)
{
size++;
num[size]=data%;data/=;
}
} inline void copy(Big A){
int s1=size,s2=A.size;
size=s2;
for(int i=s2;i>=;i--) num[i]=A.num[i];
}
};
Big ans,ans1,num,big; inline ll read()
{
ll x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} Big operator + (Big A,Big B)
{
Big c;
int s=max(A.size,B.size);
c.size=s;
for(int i=;i<=s;i++) c.num[i]=A.num[i]+B.num[i];
for(int i=;i<=s;i++)
if(c.num[i]>=)
{
c.num[i+]+=c.num[i]/;
c.num[i]%=;
}
if(c.num[s+]!=) c.size++;
return c;
} Big operator - (Big A,Big B)
{
Big c;
int s=max(A.size,B.size);
c.size=s;
for(int i=;i<=s;i++) c.num[i]=A.num[i]-B.num[i];
for(int i=;i<=s;i++)
if(c.num[i]<)
{
c.num[i+]-=c.num[i]/;
c.num[i]=c.num[i]%;
}
if(c.num[s+]!=) c.size++;
return c;
} ostream & operator << (ostream &os,Big A)
{
int s=A.size;
for(int i=s;i>=;i--) os<<A.num[i];
return os;
} Big operator * (Big A,Big B)
{
Big c;
int s1=A.size,s2=B.size;
for(int i=;i<=s1;i++)
for(int j=;j<=s2;j++)
{
c.num[i+j-]+=A.num[i]*B.num[j];
c.num[i+j]+=c.num[i+j-]/;
c.num[i+j-]%=;
}
c.size=A.size+B.size;
while(c.num[c.size]==) c.size--;
return c;
} Big operator /(Big A,int b)
{
Big c;
int s1=A.size,k;k=s1;
for(int i=s1;i>=;i--)
{
c.num[i]=A.num[i]/b;
if(i!=) A.num[i-]+=(A.num[i]%b*);
A.num[i]/=b;
}
while(k>= && c.num[k]==) k--;c.size=k;
return c;
} bool operator > (Big A,Big B)
{
int s1=A.size,s2=B.size;
if(s1<s2) return ;
if(s1>s2) return ;
for(int i=s1;i>=;i--)
if(A.num[i]<B.num[i]) return ;
else return ;
return ;
} int main()
{
big.init();
n=read();L=read();R=read();
ans.init(L);
for(int i=;i<=n;i++) a[i].l=read(),a[i].r=read();
sort(a+,a+n+);
for(int i=;i<=n-;i++)
{
ans1=ans/a[i].r;
if(ans1>big) big.copy(ans1);
ans1.init(a[i].l);ans=ans*ans1;
}
ans=ans/a[n].r;
if(ans>big) big.copy(ans);
cout<<big<<endl;
return ;
}

国王游戏 2012年NOIP全国联赛提高组(贪心+高精)的更多相关文章

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

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

  2. 矩阵取数游戏 2007年NOIP全国联赛提高组(dp+高精)

    矩阵取数游戏 2007年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold     题目描述 Description [问题描述]帅帅经常跟 ...

  3. Codevs 1218 疫情控制 2012年NOIP全国联赛提高组

    1218 疫情控制 2012年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description H 国有 n 个城市,这 ...

  4. Codevs 1217 借教室 2012年NOIP全国联赛提高组

    1217 借教室 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在大学期间,经常需要租借教 ...

  5. 3285 转圈游戏 2013年NOIP全国联赛提高组

    3285 转圈游戏 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond       题目描述 Description n 个小伙伴 ...

  6. 开车旅行 2012年NOIP全国联赛提高组(倍增+set)

    开车旅行 2012年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 小A 和小B决定利用 ...

  7. Codevs 1200 同余方程 2012年NOIP全国联赛提高组

    1200 同余方程 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 求关于 x 同余方程 a ...

  8. 观光公交 2011年NOIP全国联赛提高组(贪心,递推)

    观光公交 2011年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold       题目描述 Description 风景迷人的小城 Y 市 ...

  9. 疫情控制 2012年NOIP全国联赛提高组(二分答案+贪心)

    P1084 疫情控制 题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控 ...

随机推荐

  1. CSU 1214 找最大异或值

    题目大意: 给定一堆数,从中找2个数异或得到的最大值 直接暴力会超时,我们要考虑对于每一个数去匹配找到异或的最大值,我们希望2进制越前面的数尽可能都为1 所以我们用 0-1 字典树保存这些数,因为一个 ...

  2. noip模拟赛 收集果子

    分析:显然的,树形dp,状态也很好想到:f[i][j]表示以i为根的子树收集到j个果子的方案数.转移的话就相当于是背包问题,每个子节点可以选或不选.如果不选子节点k的话,那么以k为根的子树的边无论断不 ...

  3. noip模拟赛 少女

    分析:每个连通块都是独立的,对一个连通块进行分析.如果边数>点数,显然是不可能的,因为每条边要分配给一个点,至少有一个点分配了两次以上.如果边数=点数,就形成了环,有两种方案,顺时针一个环,逆时 ...

  4. [NOIP2006] 提高组 洛谷P1064 金明的预算方案

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...

  5. redis运维相关(基本数据库命令)【十四】

    -----------------------------运维相关------------------------- redis持久化,两种方式1.rdb快照方式2.aof日志方式 --------- ...

  6. Memory Ordering in Modern Microprocessors

    Linux has supported a large number of SMP systems based on a variety of CPUs since the 2.0 kernel. L ...

  7. codevs——1742 爬楼梯

    1742 爬楼梯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的 ...

  8. Ubuntu 16.04系统启动时卡在:(initramfs)

    背景: 由于不正常的关机和重启,或者突然断电导致的关机,下次起来后不能进去系统,停留在(initramfs). 解决方法: 使用如下命令修复 fsck -y /dev/sda1 说明:其中sda1为系 ...

  9. How to remote debug neutron

    First of all, I will assume that you know how to use pydevd to remote debug normal python program. I ...

  10. cakephp2.3.8中何为component

    大胆假设,小心求证         记得这句话是以前读高三的时候,一个数学老师(圆头,有点胖胖的老师,不是很记得),经常挂在嘴边的一句话, 对于我们不理解,或者说是无法确定的东西,我们不妨先大胆地去假 ...