首页 > 其他分享 >AtCoder Beginner Contest 314

AtCoder Beginner Contest 314

时间:2023-08-24 17:22:21浏览次数:34  
标签:AtCoder Beginner int cin long 314 lst vector op

A - 3.14

#include <bits/stdc++.h>

using namespace std;

#define int long long




int32_t main() {
    ios::sync_with_stdio(0), cin.tie(0);
    string s = "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";
    int n;
    cin >> n;
    cout << "3.";
    for( int i = 0 ; i < n ; i ++ )
        cout << s[i];

    return 0;
}

B - Roulette

#include <bits/stdc++.h>

using namespace std;

#define int long long

int32_t main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int n;
    cin >> n;
    vector<int> c(n+1);
    vector<set<int>> a(n+1);
    for( int i = 1 ; i <= n ; i ++ ){
        cin >> c[i];
        for( int j = 1 , x; j <= c[i] ; j ++ )
            cin >> x , a[i].insert(x);
    }
    int m;
    cin >> m;
    vector<int> res;
    for( int i = 1 ; i <= n ; i ++ ){
        if( a[i].count(m) ){
            if( res.empty() or c[res.back()] == c[i] ) res.push_back(i);
            else if( !res.empty() and c[res.back()] > c[i] ){
                res = vector<int>();
                res.push_back(i);
            }
        }
    }
    cout << res.size() << "\n";
    for( auto i : res )
        cout << i << " ";

    return 0;
}

C - Rotate Colored Subsequence

#include <bits/stdc++.h>

using namespace std;

#define int long long

int32_t main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int n , m;
    cin >> n >> m;
    string s;
    cin >> s;
    vector<int> c( n );
    for( auto & i : c ) cin >> i;
    map<int , deque<char>> cnt;
    for( int i = 0 ; i < n ; i ++ )
        cnt[ c[i] ].push_back( s[i] );
    for( auto & [ k , q ] : cnt ){
        char c = q.back();
        q.pop_back() , q.push_front(c);
    }
    for( auto i : c ){
        cout << cnt[i].front();
        cnt[i].pop_front();
    }

    return 0;
}

D - LOWER

看起来需要很多数据结构。但实际上,操作 2、3 只有最后一次操作是有效的,所以记录最后一次操作位置即可。

#include <bits/stdc++.h>

using namespace std;

#define int long long


int32_t main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int n;
    string s;
    cin >> n >> s;
    int q;
    cin >> q;
    vector<int> op(q), x(q);
    vector<char> c(q);
    int lst = -1;
    for (int i = 0; i < q; i++) {
        cin >> op[i] >> x[i] >> c[i];
        if (op[i] != 1) lst = i;

    }
    for (int i = 0; i < lst; i++) {
        if (op[i] != 1) continue;
        s[x[i]-1] = c[i];
    }
    if (lst >= 0 and op[lst] == 2) {

        for (auto &i: s)
            if (i >= 'A' && i <= 'Z') i = i + 'a' - 'A';
    } else if (lst >= 0 and op[lst] == 3) {
        for (auto &i: s)
            if (i >= 'a' && i <= 'z') i = i + 'A' - 'a';
    }
    for (int i = lst + 1; i < q; i++)
        s[x[i]-1] = c[i];
    cout << s;
    return 0;
}

标签:AtCoder,Beginner,int,cin,long,314,lst,vector,op
From: https://www.cnblogs.com/PHarr/p/17654678.html

相关文章

  • AtCoder Beginner Contest 315
    A-tcdr#include<bits/stdc++.h>usingnamespacestd;int32_tmain(){strings;cin>>s;for(autoi:s){if(i!='a'andi!='e'andi!='i'andi!='o'andi!='u�......
  • ABC314EX 题解
    模拟退火的题解。题目的难点在于如何计算点到所有线段的距离。我们可以通过求线段的直线解析式,然后计算与其垂直的直线的斜率,将随机出来的点带入求得直线解析式,然后求两直线交点,判断是否在线段上进行分讨即可,但是我可能写挂了,所以改成用的向量。我们看到有三种情况,我们可以分......
  • AtCoder Beginner Contest 287 - C (图论简单题)
    目录C-PathGraph?C-PathGraph?题意判断给定的无向简单图是不是一条链思路n个顶点m条边的无向图若为一条链,那么边数\(m=n-1\),n个顶点相互可达,任意一个顶点的度不超过2利用并查集判整体连通性,在建图时统计度数,最后判断即可由此,n个顶点,n-1条边的无向连通......
  • [ABC314G]
    [ABC314G]Amulets考虑如果\(k\)是固定的,可以二分答案,然后暴力check。而本题显然不行。有一个简单的性质:如果我们知道了最多可以打几只怪兽,那么带某种护身符的贡献是一定的,此时可以直接计算。由于\(k\)递增时,答案也一定递增。我们可以考虑使用一个指针表示当前能够打的......
  • [ABC314F]
    ACertainGame关于题目中的样例解释翻译如下:将队伍中的球员编号表示为$x_1,\x_2,\\ldots,\x_k$的队伍称为队伍$\lbrace\x_1,\x_2,\\ldots,\x_k\\rbrace$。-在第1场比赛中,球员1所属的队伍$\lbrace\1\\rbrace$和球员2所属的队伍$\lbrace\2\\rbra......
  • AtCoder Beginner Contest 315 - E (toposort)
    目录E-PrerequisitesE-Prerequisites题意n本书,序号1~n。给定阅读每本书之前必须要看的书的序号。请你输出任意一种看第一本书所需看书数量最少的方法思路利用拓扑序列先对书之间的制约关系建图,再利用bfs找到包含书本1的连通块,再对全图进行拓扑排序得到拓扑序列......
  • Atcoder Beginner Contest 315 D~G
    D题意:给定一个\(n\timesm\)的字符矩形,重复执行以下操作直到删除字符数为0:对于每一行,若有且仅有一种字符存在,且个数大于1,将这些字符标记对于每一列,若有且仅有一种字符存在,且个数大于1,将这些字符标记删除所有标记的字符求最后还能剩下多少字符。注意到每一行每一列最多被......
  • AtCoder 题目集2
    AtCoder题目集2终于迈入了一个新的阶段,接下来希望质量能高一点吧。现在我主要刷的是1600左右的题,毕竟实力太拉,只能按照”分上200“的策略。(我觉得类型标个“思维”貌似没啥意义,毕竟AT几乎全是思维啊...)编号(NO.)题目难度类型1ABC201E1694,medium思维,XOR......
  • Atcoder Beginner Contest 315 解题报告
    AtcoderBeginnerContest315ContestlinkHintsD尝试优化暴力。A-tcdr没啥好说的,模拟。代码实现voidSolve(){ while(charch=getchar()) { if(!isalpha(ch))return; if(ch!='a'&&ch!='e'&&ch!='i'&&ch!='o......
  • AtCoder Beginner Contest 315
    A模拟,代码。B模拟,代码。C我们发现美味度最高的食物必选,排序后枚举即可。代码。D模拟。代码。EDFS。代码。F我们发现\(2^C\)增长很快,因此不选的数量最多只有\(\log\)次,直接DP即可。代码。G我们枚举\(i\),那么也就是求出\(Bj+Ck=X-Ai(1\lej\leN,1\lek\l......