【LGR-196-Div.4】洛谷入门赛 #26

【LGR-196-Div.4】洛谷入门赛 #26

\(A\) luogu B4017 [语言月赛 202408] 相识于 2016 \(AC\)

  • 顺序结构。

    点击查看代码
    int main()
    {
        int x,y;
        cin>>x>>y;
        if(x==2016)
        {
            cout<<y-7<<endl;
        }
        else
        {
            cout<<(x-2017)*12+5+y<<endl;
        }
        return 0;
    }
    

\(B\) luogu B4018 [语言月赛 202408] 游戏与共同语言 \(AC\)

  • 选择结构。

    点击查看代码
    int main()
    {
        int wa,ca,ta,wb,cb,tb;
        cin>>wa>>ca>>ta>>wb>>cb>>tb;
        if(wa>wb)
        {
            cout<<"A"<<endl;
        }
        if(wa==wb)
        {
            if(ca>cb)
            {
                cout<<"A"<<endl;
            }
            if(ca==cb)
            {
                if(ta>tb)
                {
                    cout<<"A"<<endl;
                }
                else
                {
                    cout<<"B"<<endl;
                }
            }
            if(ca<cb)
            {
                cout<<"B"<<endl;
            }
        }
        if(wa<wb)
        {
            cout<<"B"<<endl;
        }
        return 0;
    }
    

\(C\) luogu B4019 [语言月赛 202408] 皆与生物有缘 \(AC\)

  • 循环结构。

    点击查看代码
    ll a[200010],b[200010];
    int main()
    {
        ll n,sum1=0,sum2=0,i;
        cin>>n;
        for(i=1;i<=n;i++)
        {
            cin>>a[i];
            sum1+=a[i];
        }
        for(i=1;i<=n;i++)
        {
            cin>>b[i];
            sum2+=b[i];
        }
        cout<<(sum1+sum2+1)/2<<endl;
        return 0;
    }
    

\(D\) luogu B4020 [语言月赛 202408] 两座城市的 543 千米 \(AC\)

  • 循环结构。
    点击查看代码 ```cpp int main() { int n,m,ans=0,flag,l,x,a,b,i,j; cin>>n>>m>>a>>b; for(i=1;i<=m;i++) {相识于 2016 cin>>l; flag=0; for(j=1;j<=l;j++) { cin>>x; flag|=(x==a); if(flag==1&&x==b) { ans++; } } } cout<

\(E\) luogu B4021 [语言月赛 202408] 于抑郁中支持 \(AC\)

  • 开个桶统计即可。

    点击查看代码
    int cnt[10010];
    int main()
    {
        int n,t,p,x,ans=0,i;
        cin>>n>>t;
        p=pow(10,t);
        for(i=1;i<=n;i++)
        {
            cin>>x;
            cnt[x%p]++;
            ans+=(cnt[x%p]==1);
        }
        cout<<ans<<endl;
        return 0;
    }
    

\(F\) luogu B4022 [语言月赛 202408] 蓝色的网易云 \(AC\)

  • 顺序输出每种种类的数。

    点击查看代码
    vector<int>c[1010];
    int main()
    {
        int n,m,x,i,j;
        cin>>n>>m;
        for(i=1;i<=n;i++)
        {
            cin>>x;
            c[x].push_back(i);
        }
        for(i=0;i<n/m;i++)
        {
            for(j=1;j<=m;j++)
            {
                cout<<c[j][i]<<endl;
            }
        }
        return 0;
    }
    

\(G\) luogu B4023 [语言月赛 202408] 因友情而终结 \(AC\)

  • 记录下每个 friend 的出现位置,尽可能用一个 love 替换掉两个 friend

    点击查看代码
    int vis[1000010];
    char s[1000010];
    vector<int>pos;
    int main()
    {
        int n,ans=0,i;
        cin>>(s+1);
        n=strlen(s+1);
        for(i=1;i<=n;i++)
        {
            if(i+5<=n&&s[i]=='f'&&s[i+1]=='r'&&s[i+2]=='i'&&s[i+3]=='e'&&s[i+4]=='n'&&s[i+5]=='d')
            {
                pos.push_back(i);
                i+=5;
            }
        }
        for(i=0;i<pos.size();i++)
        {
            if(vis[i]==0)
            {
                if(i+1<pos.size()&&pos[i+1]-(pos[i]+5)<=3)
                {
                    vis[i+1]=1;
                }
                vis[i]=1;
                ans++;
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    

\(H\) luogu B4024 [语言月赛 202408] 保持连接的方式 \(AC\)

  • vectorerase 来支持删除。

    点击查看代码
    vector<int>c[110][110];
    int main()
    {
        int n,m,k,t,a,x,y,minn,pos,i,j;
        cin>>n>>m>>k>>t;
        for(i=1;i<=t;i++)
        {
            cin>>a>>x>>y;
            if(c[x][y].size()==k)
            {
                minn=0x7f7f7f7f;
                pos=-1;
                for(j=0;j<k;j++)
                {
                    if(c[x][y][j]<=minn)
                    {
                        minn=c[x][y][j];
                        pos=j;
                    }
                }
                cout<<minn<<" "<<k-pos-1<<endl;
                c[x][y].erase(c[x][y].begin()+pos);	
            }
            else
            {
                cout<<"-1"<<endl;
            }
            c[x][y].push_back(a);
        }
        return 0;
    }
    

总结

  • 开题顺序: \(ABCFEDGH\)
    • 看到 \(D\) 以为是什么逆天大模拟,写完 \(E,F\) 回来看了眼才发现只是小模拟。
    • \(G,H\) 第一眼觉得不太可做,可能是因为没立刻看数据范围导致的吧(?)
  • \(C\)ceil((sum1+sum2)/2.0)写成了 ceil(sum1+sum2)/2.0 ,吃了发罚时。
  • \(E\) 数组少写了个 \(0\) ,吃了发罚时。
  • \(G\) 第一、二发没考虑同时替换两个 friend 的情况,吃了两发罚时。
posted @ 2024-08-19 07:07  hzoi_Shadow  阅读(120)  评论(2编辑  收藏  举报
扩大
缩小