NOIP 2012 T2 国王游戏 (贪心+高精)

原创 2016年08月30日 23:29:31

思路:

呃呃网上那么多题解写得都不错…..

就是高精 巨坑。。。

这里展出的是任氏高精(纯自己yy滴)

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm> 
using namespace std;
int n,temp[5555],len,A[5555],ans[5555],ans_max;
char s[11],jya[11];
struct Node{
    char a[11];
    int alen,b;
}node[1005];
bool cmp(Node x,Node y){
    int xa=0,ya=0;
    for(int i=x.alen-1;~i;i--)xa=xa*10+x.a[i];
    for(int i=y.alen-1;~i;i--)ya=ya*10+y.a[i];
    return xa*x.b<ya*y.b;
}
int main(){
    scanf("%d",&n);
    scanf("%s%d",s,&node[0].b);
    len=strlen(s)-1;
    for(int i=0;i<=len;i++)A[i]=s[len-i]-'0';
    for(int i=1;i<=n;i++){
        scanf("%s%d",jya,&node[i].b);
        node[i].alen=strlen(jya);
        for(int j=0;j<node[i].alen;j++)
            node[i].a[j]=jya[node[i].alen-j-1]-'0';
    }
    sort(node+1,node+1+n,cmp);
    for(int i=1;i<=n;i++){
        memset(temp,0,sizeof(temp));
        int res=0,maxx=0;
        for(int j=len;~j;j--){
            res=res*10+A[j];
            temp[j]=res/node[i].b;
            if(temp[j])maxx=max(maxx,j);
            res=res%node[i].b;
        }
        for(int j=5000;~j;j--)
            if(ans[j]<temp[j]){
                for(int j=maxx;~j;j--)
                    ans[j]=temp[j];
                    ans_max=maxx;
                    break;
            }
            else if(ans[j]>temp[j])break;
        memset(temp,0,sizeof(temp));
        for(int j=0;j<=len;j++)
            for(int k=0;k<node[i].alen;k++)
                temp[j+k]+=A[j]*node[i].a[k];
        for(int j=0;j<=len+10;j++){
            temp[j+1]+=temp[j]/10;
            temp[j]=temp[j]%10;
            if(temp[j])len=j;
        }
        for(int j=len;~j;j--)A[j]=temp[j];
    }
    for(int j=ans_max;~j;j--)printf("%d",ans[j]);
}

这里写图片描述

版权声明:本文由SiriusRen原创,未经允许不得转载

【NOIP 2012】 国王游戏

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

NOIP 2012 提高组 DAY1 T2 国王游戏

题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右 手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排 成一排,国王站...
  • WhiStLenA
  • WhiStLenA
  • 2017年10月15日 13:50
  • 122

【NOIP2012】国王游戏

【codevs 1198】 1198 国王游戏 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题...
  • Loi_Shirley
  • Loi_Shirley
  • 2016年11月15日 17:17
  • 507

国王游戏[NOIP2012]解题报告

在做这道题之前已经预先知道这道题是贪心了,但是贪心的思路却一直没想到,所以看了题解,发现做法还是很神奇的。 Step 1 一个定理:        对于一个序列,通过交换其相邻的两个元素,一定可以变成...
  • TA201314
  • TA201314
  • 2014年11月05日 16:37
  • 1739

NOIP2012提高组day1T2国王游戏 题解

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

【NOIP2012提高组】国王游戏

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

NOIP2012 提高组 复赛 day1 game 国王游戏 再见

NOIP2012 提高组 复赛 day1 game 再见 2017-1-15 20:48 1.经过近半年的历练,重回此题,一看样例解释,马上发现这是一个回溯问题,需用到深度优先遍历,效果等同于找出本...
  • mrcrack
  • mrcrack
  • 2017年01月15日 22:04
  • 570

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

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

NOIP2015普及组-扫雷游戏

题目太简单,不解释: #include int main(void) { char a[101][101]; int sum[100][100]={0}; int ...
  • qq_16964363
  • qq_16964363
  • 2016年08月20日 10:59
  • 1685

NOIP 2012 国王游戏

solution 实际上还是找一种排序让答案最优 只考虑 aa 和 bb怎么排,假设前面所有人左手上数的乘积为 PP 如果 aa 排在 bb 前面,那么money[b]=P∗left[a]/right...
  • NuclearSubmarines
  • NuclearSubmarines
  • 2017年10月15日 21:34
  • 234
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NOIP 2012 T2 国王游戏 (贪心+高精)
举报原因:
原因补充:

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