1 条题解

  • 0
    @ 2025-8-24 22:16:36

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 爱晚亭哦
    Ai wanting go.

    搬运于2025-08-24 22:16:36,当前版本为作者最后更新于2020-01-31 21:39:06,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    第十个点真的恶心


    本题思维难度是橙题没错,但这第十个点和这通过率不让它止步于橙题啊

    正题:本题模拟附属物被交换的过程并求解,如果不能白嫖其每一轮换的快乐水数一定小于n,否则Inf。

    注意:

    1.开long  longlong\;long

    2.最后一个点又卡时间又卡正确性,如果是像我一样的方法就乖乖循环2800000028000000次吧,如果是隔壁题解类型的就去参考他的。

    亲测2800000028000000能过

    说到底还是自己菜嘛

    具体康注释

    Code:Code:

    #include<cstdio>
    int a[6],b[6];//b数组是当前第i个附属品数
    int n,m,sum=0,summ=0;//summ是本轮换的快乐水数
    long long ans=0;//记得long long
    int main()
    {
        scanf("%d %d",&n,&m);
        ans+=n;//开局买几瓶就喝几瓶
        sum=n;//sum是上一轮换的快乐水数
        for(int i=1;i<=m;i++)
            scanf("%d",&a[i]);
        for(int j=1;j<=28000001;j++)//我试了好久才试出来的TAT
        {
            for(int i=1;i<=m;i++)
            {
                b[i]+=sum;//加上上轮瓶子数
                summ=summ+b[i]/a[i];
                b[i]%=a[i];
            }
            if(summ>=n)//核心,如果不能白嫖其一轮换的快乐水数一定小于n
            {
            	printf("Inf");
            	return 0;
    		}
            sum=summ;
            ans+=summ;
            summ=0;
        }
        printf("%lld",ans);//lld坑了我好几次
        return 0;
    }
    

    //这么大的常数CopyCopy容易被发现哦(van♂笑

    • 1

    信息

    ID
    5020
    时间
    1500ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者