Japan Registry Services (JPRS) Programming Contest 2024 (AtCoder Beginner Contest 339)(A~C)

感觉区分度不明显,D题之后感觉都有arc的难度了。

A - TLD 

输出字符串最后一个.之后的内容,比如www.baidu.com,输出com

扫一遍输出

#include 
//#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;

string s,ans;

void solve(){
    cin>>s;
    per(i,0,s.length()-1){
        ans=ans+s[i];
        if(s[i]=='.')ans="";
    }
    cout<

B - Langton's Takahashi

解释起来比较麻烦,总之就是模拟题,题目怎么说我们怎么做就可以了,具体看代码。

#include 
//#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;

int h,w,n;
int dir=1;//1up,2right,3down,4left
pairnow;
bool a[105][105];

void move(){
    if(dir==1){
        now.fr--;
        if(now.fr==0)now.fr=h;
    }else if(dir==2){
        now.se++;
        if(now.se==w+1)now.se=1;
    }else if(dir==3){
        now.fr++;
        if(now.fr==h+1)now.fr=1;
    }else if(dir==4){
        now.se--;
        if(now.se==0)now.se=w;
    }
}

void solve(){
    cin>>h>>w>>n;
    now.fr=1,now.se=1;
    while(n--){
        if(a[now.fr][now.se]==0){
            a[now.fr][now.se]=true;
            dir++;
            if(dir==5)dir=1;
            move();
        }else{
            a[now.fr][now.se]=false;
            dir--;
            if(dir==0)dir=4;
            move();
        }
    }
    per(i,1,h){
        per(j,1,w){
            if(a[i][j]==false){
                cout<<".";
            }else cout<<"#";
        }cout<

C - Perfect Bus

有一辆车,给你N个上下车的情况,问最后车上最少有多少人,车上人数一定是大于等于0的。

只要每次上下车的时候车上的人数一定是大于等于0就行了。如果某次车上人数小于0,找出最小的那个,加到最后的时间点上。

#include 
#define int long long
#define per(i,j,k) for(int (i)=(j);(i)<=(k);++(i))
#define rep(i,j,k) for(int (i)=(j);(i)>=(k);--(i))
#define fr first
#define se second
#define endl '\n'
using namespace std;
const int N=2e5+5;

int a[N],n,minn=LONG_LONG_MAX,tmp;

void solve(){
    cin>>n;
    per(i,1,n)cin>>a[i];

    tmp=a[1];
    per(i,2,n){
        minn=min(minn,tmp);
        tmp+=a[i];
    }
    minn=min(minn,tmp);

    if(minn<0)tmp-=minn;
    cout<

你可能感兴趣的:(Atcoder,c++,算法,思维,模拟,atcoder,abc)