3 条题解

  • 1
    @ 2025-4-14 21:45:56

    Memory Exceeded

    • -1
      @ 2025-4-14 21:43:13

      #include #include #include #include #include #include #include using namespace std; long long que[1000001]; int main(){ long long m,n; while(scanf("%lld%lld",&m,&n) > 0){ long long h1,h2,tail; tail = 1; h1 = 1; h2 = 1; que[1] = m; while(tail < n){ long long t1 = (que[h1]<<1) + 1,t2 = que[h2] * 3 + 1; //之所以用h1,h2是因为比较大的后入队列,因为可能出现后面的2x + 1 可能小于前面的3x + 1等诸如此类的情况。 if(t1 < t2){ que[++tail] = t1; h1 ++; }else if(t1 > t2){ que[++tail] = t2; h2++; }else{ que[++tail] = t2; h1++; h2++; } } printf("%lld\n",que[tail]); } return 0; }

      • -1
        @ 2025-4-12 19:50:13

        MLE代码#include<stdio.h>

        #include<stdlib.h>

        typedef struct Linklist {


        **int** **id**;
        

        **struct** **Linklist**\*** **next**;**
        

        } LNode;

        void joseefu(int n)** **{


        **LNode**\*** **h** **=** **(**LNode**\*)**malloc**(**sizeof**(**LNode**));
        

        **LNode**\*** **tail** **=** **h**;**
        

        **h**->**next** **=** **NULL**;
        

        **for** **(**int** **i** **=** **1**;** **i** **<=** **n**;** **i**++)** **{**
        

        **LNode**\*** **node** **=** **(**LNode**\*)**malloc**(**sizeof**(**LNode**));
        

        **node**->**id** **=** **i**;
        

        **node**->**next** **=** **NULL**;
        

        **tail**->**next** **=** **node**;
        

        **tail** **=** **node**;
        

        **}**
        

        **tail**->**next** **=** **h**->**next**;
        

        **LNode**\*** **pre** **=** **h**;**
        

        **LNode**\*** **p** **=** **h**->**next**;**
        

        **int** **i** **=** **0**;
        

        **while** **(**p**->**next** **!=** **p**)** **{**
        

        **i**++;
        

        **if** **(**i** **%** **3** **==** **0**)** **{**
        

        **printf**(**"%d** **"**,** **p**->**id**);**
        

        **pre**->**next** **=** **p**->**next**;
        

        **p** **=** **pre**->**next**;
        

        **}** **else** **{**
        

        **pre** **=** **p**;
        

        **p** **=** **p**->**next**;
        

        **}**
        

        **}**
        

        **printf**(**"%d**\\n**"**,** **p**->**id**);**
        

        }

        int main()** **{


        **int** **m**,** **n**;**
        

        **scanf**(**"%d"**,** **&**m**);
        

        **for** **(**int** **i** **=** **0**;** **i** **<** **m**;** **i**++)** **{**
        

        **scanf**(**"%d"**,** **&**n**);
        

        **joseefu**(**n**);
        

        **}**
        

        **return** **0**;
        

        } RE代码#include<stdio.h>

        #include<string.h>

        #include<stdlib.h>

        #define ID = 3;//报3** **者退出圈外

        int main()

        {


        **int** **n**,**i**,**j**,**people**,**index**,**count**;
        

        **int** **DeleteID**[**51**];
        

        **while**(**scanf**(**"%d"**,&**n**)** **!=** **EOF**){**
        

        **for**(**i** **=** **0**;**i** **<** **n**;**i**++){
        

        **int** **Flag**[**51**]** **=** **{**0**};**//标记1为删除**
        

        **count** **=** **0**;**//统计删除的人数**
        

        **index** **=** **1**;
        

        **scanf**(**"%d"**,&**people**);
        

        **for**(**j** **=** **0**;**j** **<** **people**;**j**++){
        

        **//报3** **者退出圈外**
        

        **if**(**index** **%** **3** **==** **0** **&&** **Flag**[**j**]** **==** **0**){**
        

        **//删除**
        

        **Flag**[**j**]** **=** **1**;**
        

        **//重新报数**
        

        **index** **=** **1**;
        

        **//标记删除的人数**
        

        **DeleteID**[**count**]** **=** **j**+**1**;**
        

        **count**++;
        

        **}**
        

        **//报数** **删除的不用报(Flag[j]** **=** **1已删除不用报数)**
        

        **if**(**Flag**[**j**]** **==** **0**){**
        

        **index**++;
        

        **}**
        

        **//下一圈报数**
        

        **if**(**j** **==** **people**-**1**){
        

        **j** **=** **-**1**;**
        

        **}**
        

        **//全部退出**
        

        **if**(**count** **==** **people**){
        

        **break**;
        

        **}**
        

        **}**//for
        

        **//输出每个退出人的原序号**
        

        **for**(**j** **=** **0**;**j** **<** **count**;**j**++){
        

        **if**(**j** **==** **count** **-** **1**){
        

        **printf**(**"%d**\\n**"**,**DeleteID**[**j**]);
        

        **}**
        

        **else**{
        

        **printf**(**"%d** **"**,**DeleteID**[**j**]);
        

        **}**
        

        **}**
        

        **}**//for
        

        **}**//while
        

        **return** **0**;
        

        } AC代码#include<bits/stdc++.h>

        using namespace std;

        #include<queue>

        queue<int>** que;**

        int main()

        {


        **int** **m**,**n**;
        

        **cin**>>**n**>>**m**;
        

        **for**(**int** **i**=**1**;**i**<=**n**;**i**++)
        

        **que**.**push**(**i**);
        

        **while**(**1**)
        

        **{**
        

        **for**(**int** **i**=**1**;**i**<=**m**-**1**;**i**++)
        

        **{**
        

        **int** **temp**=**que**.**front**();
        

        **que**.**push**(**temp**);
        

        **que**.**pop**();
        

        **}**
        

        **cout**<<**que**.**front**()<<**"** **"**;
        

        **que**.**pop**();
        

        **if**(**que**.**empty**())
        

        **break**;
        

        **}**
        

        **return** **0**;
        

        }

        • 1

        信息

        ID
        440
        时间
        1000ms
        内存
        256MiB
        难度
        5
        标签
        递交数
        41
        已通过
        16
        上传者