【G】机器人

机器人

https://ac.nowcoder.com/acm/contest/9986/G

G.机器人
此题与一道经典题国王游戏很类似
假设现在只有俩组a和b,要使最后得到的结果是最大的,那么只有俩种情况
图片说明
图片说明
假设ans1>ans2

可得图片说明
根据这个关系我们就可以进行排序了,此题数据量小,因此可以直接使用冒泡排序

#include<bits/stdc++.h>
#define up_b upper_bound
#define low_b lower_bound
#define ll long long
#define m_p make_pair
#define mem(a) memset(a,0,sizeof(a))
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define INF 0x3f3f3f3f
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
const ll mod=1e9+7;
using namespace std;
const int maxn=1e5+5;
struct node{int a,b,c;}num[25],f;
long long read()
{
    long long x=0,f=1;char c=getchar();
    while(c<'0'||c>'9') {
        if(c=='-') f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9') {
        x=x*10+c-'0';
        c=getchar();
    }
    return x*f;
}
ll qpow(ll a,ll b)
{
    ll ans=1;
    while(b)
    {
        if(b&1) ans=(ans*a)%mod;
        a=(a*a)%mod;
        b/=2;
    }
    return ans;
}

__int128  ans;

void print(__int128 x)
{
    if(!x)
    {
        puts("0");
        return ;
    }
    string ret="";
    while(x)
    {
        ret+=x%10+'0';
        x/=10;
    }
    reverse(ret.begin(),ret.end());
    cout<<ret<<endl;
}
int main()
{
    //int _;_=read();while(_--)
    int n=read(),x=read();
    ans=x;
    rep(i,1,n)
    {
        num[i].a=read(),num[i].b=read();
        //num[i].c=num[i].b/(1-num[i].a);
    }
    //sort(num+1,num+1+n,cmp);
    rep(i,1,n)
    {
        rep(j,1,n)
        {
            if(num[j].a*num[i].b+num[j].b>num[i].a*num[j].b+num[i].b)
            {
                f.a=num[j].a,f.b=num[j].b;
                num[j].a=num[i].a,num[j].b=num[i].b;
                num[i].a=f.a,num[i].b=f.b;
            }
        }
    }
    rep(i,1,n)
    {
        ans=ans*num[i].a+num[i].b;
    }
    print(ans);
}



全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务