Codevs1198 国王游戏
来源:互联网 发布:重庆招聘软件开发 编辑:程序博客网 时间:2024/05/16 08:22
思路:贪心。由题意可知,交换相邻两个人对于其他人并无影响。设这两个人按顺序分别为{a1,b1},{a2,b2},交换前是max{sum*1/b1,sum*a1/b2},交换后是max{sum*1/b2,sum*a2/b1},而分母为1的项一定不会被最大值考虑到,则需要考虑max{sum*a2/b1,sum*a1/b2},即max{a2/b1,a1/b2}。如果不交换更优,则有
a1/b2<a2/b1 为关键字进行从小到大排序,会得到最优解。最后只需扫描一遍序列就行了。由于乘积可能很大,所以需要使用高精度计算。代码如下:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1005;struct node{ int a,b; node(int a=0,int b=0):a(a),b(b){} bool operator < (const node &x) const { return a*b<x.a*x.b; }};struct bignum{ int len,a[5000]; bignum() { len=1; memset(a,0,sizeof(a)); } bignum operator * (int num) { len++; int jinwei=0; for (int i=1;i<=len;++i) { a[i]=a[i]*num+jinwei; jinwei=a[i]/100000; a[i]%=100000; } if (a[len]==0) len--; return *this; } bool operator < (const bignum &b) const { if (b.len!=len) return len<b.len ? 1:0; for (int i=len;i>=1;--i) if (a[i]!=b.a[i]) return a[i]<b.a[i] ? 1:0; return 0; } bignum operator / (int num) { bignum c=*this; int jiewei=0; for (int i=len;i>=1;--i) { jiewei=a[i]+100000*jiewei; c.a[i]=jiewei/num; jiewei%=num; } while (c.a[c.len]==0) c.len--; return c; } bignum operator *= (int num) { *this=*this*num; return *this; } };void print(bignum x){ printf("%d",x.a[x.len]); for (int i=x.len-1;i>=1;--i) printf("%05d",x.a[i]);}int n;node man[maxn];int main(){ scanf("%d",&n); scanf("%d%d",&man[1].a,&man[1].b); for (int i=2;i<=n+1;++i) { int a,b; scanf("%d%d",&a,&b); man[i]=node(a,b); } sort(man+2,man+n+2); bignum ans,sum; sum.a[1]=man[1].a; for (int i=2;i<=n+1;++i) { ans=max(sum/man[i].b,ans); sum*=man[i].a; } print(ans); return 0;}
0 0
- Codevs1198 国王游戏
- 【贪心+高精度】NOIP2012D1T2国王游戏Codevs1198
- NOIP 国王游戏 codevs1198 贪心+高精度
- 国王游戏
- 国王游戏
- 国王游戏
- 国王游戏
- 【NOIP 2012】 国王游戏
- 国王游戏 题解
- VIJOS 1779 国王游戏
- wikioi1198 国王游戏
- vijos P1779 国王游戏
- noip2012国王游戏
- NOIP2012 国王游戏
- NOIP2012 国王游戏 题解
- NOIP2012国王游戏
- noip 2012 国王游戏
- NOIP2012 国王游戏
- linux下apache tomcat的安装
- 自定义view1/12
- BSE:Bridge Software Engineer
- 在c语言中自定义了一个函数,在main中调用时提示找不到标识符
- 关于Android游戏开发的资料
- Codevs1198 国王游戏
- fusioncharts属性设置
- ofbiz--service
- Java中如何遍历Map对象的4种方法
- python多线程机制
- UVa 10891 Game of Sum(博弈区间DP)
- 传奇屏幕截图
- 美图2016校招java编程
- CodeForces 261A Maxim and Discounts [想法/贪心题]