NOIP 国王游戏 codevs1198 贪心+高精度

原创 2016年08月31日 00:32:40

时空隧道


分析:
感觉这题的贪心比较不合常理,但是推一推还是可以推出来的…..主要是高精度难写….


代码如下:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=10000+5;
int n,tmp[maxn],a[maxn],aa[maxn],MAX[maxn],f,maxlen,len;
char str[maxn];
struct M{
    int x,y,pro; 
    friend bool operator < (M a,M b){
        if(a.pro==b.pro)
            return a.y<b.y;
        return a.pro<b.pro;
    }
}s[maxn];
inline void mul(int a[],int b){
    memset(tmp,0,sizeof(tmp));
    for(int i=1;i<=len;i++)
        tmp[i]=a[i]*b;
    for(int i=1;i<=len;i++)
        if(tmp[i]/10)
            tmp[i+1]+=tmp[i]/10,tmp[i]%=10;
    while(tmp[len+1])
        len++;
    while(tmp[len]/10)
        tmp[len+1]+=tmp[len]/10,tmp[len]%=10,len++;
    for(int i=1;i<=len;i++) 
        a[i]=tmp[i];
}
inline void div(int a[],int b){
    memset(tmp,0,sizeof(tmp));
    int x=0;
    for(int i=1;i<=len;i++)
        tmp[i]=(a[i]+x*10)/b,x=(a[i]+x*10)%b;
    int pd=0;
    for(int i=1;i<=len;i++)
        if(tmp[i]){
            pd=1;
            break;
        }
    if(pd){
        int i=1;
        for(;tmp[i]==0;i++);
        f=i;
        for(;i<=len;i++){
            if((tmp[i]>MAX[i]&&len-f+1==maxlen)||len-f+1>maxlen){
                for(int j=f;j<=len;j++)
                    MAX[j]=tmp[j];
                maxlen=len-f+1;
                break;
            }
            if(maxlen>len-f+1||tmp[i]<MAX[i])
                break;
        }
    }
}
signed main(void){
    scanf("%d",&n);
    for(int i=0;i<=n;i++)
        scanf("%d%d",&s[i].x,&s[i].y),s[i].pro=s[i].x*s[i].y;
    sort(s+1,s+n+1);
    for(int i=0;s[0].x;i++)
        str[i]=s[0].x%10+'0',s[0].x/=10;
    len=strlen(str);
    for(int i=1;i<=len;i++)
        a[i]=str[i-1]-'0';
    for(int i=1;i<=len;i++)
        aa[i]=str[len-i]-'0';
    for(int i=1;i<=n;i++){
        div(aa,s[i].y),mul(a,s[i].x);
        for(int j=1;j<=len;j++)
            aa[j]=a[len-j+1];
    }
    for(int i=f;i<=maxlen+f-1;i++)
        cout<<MAX[i];
    cout<<endl;
    return 0;
} 

by >_< neighthorn

版权声明:转载请注明出处---by 小雪刺

【NOIP 2012】 国王游戏

Description 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排成一排,国...
  • u012274244
  • u012274244
  • 2013年09月28日 15:02
  • 6100

【noip】国王游戏 贪心 高精度

说实话我一开始是不想发这道题的,虽然比较水,但不知道是不是因为我太久都没有写高精度了,还是写错了,才40分,还是发上来吧。 描述 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。首先,他...
  • u011327397
  • u011327397
  • 2016年08月25日 19:09
  • 393

【贪心+高精度】NOIP2012D1T2国王游戏Codevs1198

我这辈子最恨字符串和高精度OTZ 题目描述 Description 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在...
  • CreationAugust
  • CreationAugust
  • 2014年11月05日 13:59
  • 763

NOIP2012 国王游戏 题解

描述 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这n位大臣排成一排,国王站在队伍的最前面。排好队后...
  • zzx2015
  • zzx2015
  • 2015年08月12日 17:45
  • 860

【NOIP2012提高组】国王游戏

Description恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这n位大臣排成一排,国王站在队伍的最...
  • doyouseeman
  • doyouseeman
  • 2016年03月13日 01:20
  • 2142

【noip 2012】国王游戏 贪心+高精度

【noip 2012】国王游戏 贪心+高精度
  • pbihao
  • pbihao
  • 2016年10月20日 14:57
  • 135

[NOIP 2012]国王游戏 高精度+贪心

代码#include #include #include #include using namespace std; typedef long long ll; const int maxn ...
  • u013630329
  • u013630329
  • 2015年11月03日 21:07
  • 204

[NOIP2012][贪心][高精度]国王游戏

恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这n位大臣排成一排,国王站在队伍的最前面。排好队后,所有的...
  • yznoi2017
  • yznoi2017
  • 2016年11月17日 16:44
  • 157

Codevs1198 国王游戏

思路:贪心。由题意可知,交换相邻两个人对于其他人并无影响。设这两个人按顺序分别为{a1,b1},{a2,b2},交换前是max{sum*1/b1,sum*a1/b2},交换后是max{sum*1/b2...
  • Little_Flower_0
  • Little_Flower_0
  • 2015年10月28日 17:22
  • 443

NOIP 2012 国王游戏 贪心 高精度 (COGS 1263)

T^T,太桑心了,自己搞了好长时间的高精度,当最终搞出来没问题的高精度之后,就来写这道题了。却不曾想到自己倍增式的低级高精除T掉了。T^T…… 还是再好好搞搞高精除吧。。。来说这道题的贪心思路,又是...
  • qq_25978793
  • qq_25978793
  • 2015年09月17日 19:32
  • 161
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NOIP 国王游戏 codevs1198 贪心+高精度
举报原因:
原因补充:

(最多只允许输入30个字)