2024年天梯賽

zzuqy發表於2024-04-21

PTA | 程式設計類實驗輔助教學平臺 (pintia.cn)

1 簽到

2024年天梯賽
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int read()
{
    int x;scanf("%d",&x);return x;
}
int main()
{
    // freopen("1.in","r",stdin);
    // freopen("3.out","w",stdout);

    cout<<"Problem? The Solution: Programming.";
}
1

2 沒看懂題,但是猜題意,輸出b-a

2024年天梯賽
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int read()
{
    int x;scanf("%d",&x);return x;
}
int main()
{
    // freopen("1.in","r",stdin);
    // freopen("3.out","w",stdout);

    int a=read(),b=read();
    cout<<b-a;
}
2

3 模擬

第一行:如果a=2或者b=1,輸出-,否則如果a=0,輸出biii,否則輸出dudu

第二行:如果是綠燈,輸出move,否則輸出stop

2024年天梯賽
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int read()
{
    int x;scanf("%d",&x);return x;
}
int main()
{
    // freopen("1.in","r",stdin);
    // freopen("3.out","w",stdout);
    int a=read(),b=read();
    if(a==2||b==1)
        printf("-");
    else if(a==0)
        printf("biii");
    else
        printf("dudu");
    puts("");
    if(a==1)
        printf("move");
    else
        printf("stop");
}
3

4 用now表示當前,前i項全能的最少人數,則剛開始now=n,每次迴圈,拿著a[i]來更新now,公式是now=max(0,now+a-n)

2024年天梯賽
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int read()
{
    int x;scanf("%d",&x);return x;
}
int n,m,now;
int main()
{
    // freopen("1.in","r",stdin);
    // freopen("3.out","w",stdout);
    now=n=read();
    m=read();
    for(int i=1;i<=m;i++)
    {
        int a=read();
        now=max(0,now+a-n);
    }
    cout<<now;
}
4

5 模擬

根據樣例5,需要先列舉n個違禁詞,再列舉每個位置,進行替換。

判斷可以迴圈或者用substr。替換可以用replace函式。

為了避免"<censored>"的字串是某個違禁詞,比如有個違禁詞叫cen。可以每次替換後寫一個i=i+10;並且替換時使用"\1\1\1\1\1\1\1\1\1\1"這個串而非"<censored>",避免違禁詞再次被替換。

2024年天梯賽
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int read()
{
    int x;scanf("%d",&x);return x;
}
string cen="<censored>",s[110],t,tt="\1\1\1\1\1\1\1\1\1\1";
int n,ans;
void work(int &i,int j)
{
    if(i+s[j].size()>t.size()){
        i++;
        return ;
    }
    for(int k=0;k<s[j].size();k++)
    {
        if(t[i+k]!=s[j][k]){
            i++;
            return ;
        }
    }
    ans++;
    t.replace(i,s[j].size(),tt);
    i=i+10;
}
int main()
{
    // freopen("1.in","r",stdin);
    // freopen("3.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>s[i];
    int k;
    cin>>k;
    getline(cin,t);
    getline(cin,t);
    for(int j=1;j<=n;j++)
        for(int i=0;i<t.size();)
            work(i,j);
    if(ans<k)
    {
        for(int i=0;i<t.size();i++)
            if(t[i]=='\1')
                t.replace(i,cen.size(),cen);
        cout<<t;
    }
    else
        cout<<ans<<"\nHe Xie Ni Quan Jia!";
}
5

相關文章