首页 > 其他分享 >ABC311

ABC311

时间:2023-07-24 14:25:05浏览次数:39  
标签:int rep cin ABC311 ans now id

T1:First ABC

模拟

代码实现
n = int(input())
s = input()

A = B = C = False
for i in range(n):
    if s[i] == 'A': A = True
    if s[i] == 'B': B = True
    if s[i] == 'C': C = True
    if A and B and C: 
        exit(print(i+1))

T2:Vacation Together

暴力

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;

int main() {
    int n, d;
    cin >> n >> d;
    
    vector<string> s(n);
    rep(i, n) cin >> s[i];
    
    string t;
    rep(i, d) {
        bool ok = true;
        rep(j, n) if (s[j][i] == 'x') ok = false;
        if (ok) t += 'o'; else t += 'x';
    }
    
    int ans = 0, now = 0;
    rep(i, d) {
        if (t[i] == 'o') now++; else now = 0;
        ans = max(ans, now);
    }
    
    cout << ans << '\n';
    
    return 0;
}

T3:Find it!

注意到无论从哪个点开始搜,最终都会走到环里,所以当第一次走到已经走过的点时可以再走一圈

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;

int main() {
    int n;
    cin >> n;
    
    vector<int> a(n+1);
    rep(i, n) cin >> a[i+1];
    
    vector<int> id(n+1);
    int k = 1;
    int v = 1;
    while (id[v] == 0) {
        id[v] = k; k++;
        v = a[v];
    }
    
    vector<int> ans;
    int len = k-id[v];
    rep(i, len) {
        ans.push_back(v);
        v = a[v];
    }
    
    cout << len << '\n';
    for (int v : ans) cout << v << ' ';
    
    return 0;
}

标签:int,rep,cin,ABC311,ans,now,id
From: https://www.cnblogs.com/Melville/p/17577082.html

相关文章

  • ABC311 A~G
    \(Atcoder\)\(Beginner\)\(Contest\)\(311\)首先,ABC题是个人都会,这里就不说了其次,Ex我是人故我不会,这里也不说了DMD读错一个题害的我瞪了好久好久。。。。题意:给定一个矩阵,其中有些是墙(边界也是),最初人在\((2,2)\),每一次可以选择上下左右四个方向中的其中一个行走,直到撞......
  • ABC311(5)
    ABC311A.#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;typedefunsignedlonglongULL;constintINF=0x3f3f3f3f;//无穷大constintMOD=1e9+7;//取余constintN=2e5+10;//初始N......