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

AtCoder Beginner Contest 344

时间:2024-03-09 23:13:17浏览次数:26  
标签:std AtCoder itMap Beginner sz int cin 344 str

基本情况

ABCE 秒了,D小细节处理出错(太久没写dp)+4。

D - String Bags

https://atcoder.jp/contests/abc344/tasks/abc344_d

分组背包,但是字符串的细节要注意

signed main() {
    int n;
    std::string T, str[110][15];
    int F[110][110], a[110];
    std::cin >> T >> n;
    int m(sz(T));
    for (int i = 1; i <= n; i++) {
        std::cin >> a[i];
        for (int j = 1; j <= a[i]; j++) {
            std::cin >> str[i][j];
        }
    }
    std::memset(F, 0x3f, sizeof F);
    F[0][0] = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 0; j <= m; j++)  {
            F[i][j] = F[i - 1][j];
            for (int k = 1; k <= a[i]; k++) {
                if (j >= sz(str[i][k]) and T.substr(j - sz(str[i][k]), sz(str[i][k])) == str[i][k]) {
                    F[i][j] = std::min(F[i][j], F[i - 1][j - sz(str[i][k])] + 1);
                }
            }
        }
    }
    if (F[n][m] == 0x3f3f3f3f) {
        F[n][m] = -1;
    }
    std::cout << F[n][m] << '\n';
    return 0;
}

E - Insert or Erase

https://atcoder.jp/contests/abc344/tasks/abc344_e

思路很直接,用 \(map\) 映射双链表的下标即可。

\(MyCode\)

signed main() {
    
    std::map<int, int> l, r;

    r[0] = INT_MAX;
    l[INT_MAX] = 0;

    int n, q;

    std::cin >> n;

    auto add = [&](int x, int y) -> void {//把y插入到x右边
        r[y] = r[x];
        l[r[x]] = y;
        r[x] = y;
        l[y] = x;
    };

    auto del = [&](int x) -> void {//删除x元素
        r[l[x]] = r[x];
        l[r[x]] = l[x];
    };  


    for (int i = 0, x = 0, y; i < n; i++) {//读入初始元素
        std::cin >> y;
        add(x, y);
        x = y;
    }

    std::cin >> q;

    for (int i = 0, op, x, y; i < q; i++) {
        std::cin >> op;
        if (op == 1) {
            std::cin >> x >> y;
            add(x, y);
        }
        else {
            std::cin >> x;
            del(x);
        }
    }   

    for (int x = r[0]; x != INT_MAX; x = r[x]) {
        std::cout << x << ' ';
    }
    
    return 0;
}

\(\texttt{STLcode}\)

signed main(){
    std::list<int> L;
    int n, q;
    std::cin >> n;
    std::map<int, std::list<int>::iterator> itMap;//存元素x对应的迭代器
    for (int i = 0, x; i < n; i++) {
        std::cin >> x;
        L.emplace_back(x);
        itMap[x] = (--L.end());
    }
    std::cin >> q;
    while(q--) {
        int o; std::cin >> o;
        if (o == 1) {
            int x, y; std::cin >> x >> y;
            auto it(itMap[x]);
            ++it;//所以it要自增
            L.emplace(it, y);//emplace在it之前插入
            itMap[y] = --it; 
        }
        else {
            int y; std::cin >> y;
            L.erase(itMap[y]);
        }
    }
    for (auto x : L) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

标签:std,AtCoder,itMap,Beginner,sz,int,cin,344,str
From: https://www.cnblogs.com/kdlyh/p/18063567

相关文章

  • AT_abc344_d 题解
    赌狗天天输的一集。大意你最开始有一个空字符串\(S\)。你还有编号为\(1,2,\dots,N\)的袋子,每个袋子都包含一些字符串。袋子\(i\)包含\(A_i\)个字符串\(S_{i,1},S_{i,2},\dots,S_{i,A_i}\)。对\(i=1,2,\dots,N\)重复以下步骤仅一次(这里原题没有讲清楚):......
  • AtCoder Regular Contest 171
    Preface小补一场ARC,D还是很有意思的但想了半天不会,鉴定为纯纯的彩笔A-NoAttacking考虑怎么放rook能使得留下来能放pawn的格子数量最多,手玩一下会发现先按照\((2,2),(4,4),(6,6),\cdots\)的顺序放,放满后再接着放\((1,1),(3,3),(5,5),\cdots\)是最优的手玩一下可以得出在放......
  • AtCoder Beginner Contest 343
    A-WrongAnswer(abc343A)题目大意给定\(a,b\),输出\(c\),使得\(a+b\neqc\)解题思路从\(0\)开始枚举\(c\)的取值即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_stdio(false);cin.......
  • AtCoder Beginner Contest 321
    \[\large\text{Round12:AtCoderBeginnerContest321}\]一言:只要你在,我便无所不能。——进击的巨人感觉只有最后一道题有点意思,其他的就是时间问题,但是速度还是不够快,思维要跟上啊。有意思的是,周考考了回退背包,这里居然又来一次。。\(\text{G:ElectricCircuit}......
  • AtCoder Regular Contest 171
    \[\large\text{Round13:AtCoderRegularContest171}\]一言:我并不是要失去自由,而是要去收获那无可替代的不自由。——SSSS.电光机王几年没写了,但是我们仍然要捡回来!没啥好写的,T1,T2能力范围之内,T3不会,T4感觉很好,但是没做出来。\(\text{D:RollingHash}\)这题无论......
  • AtCoder Beginner Contest 298
    \[\large\text{Round5:AtCoderBeginnerContest298(VP)}\]一言:成一事者,是失之不渝的愚者;毁一事者,是停滞不前的贤者。——不正经的魔法讲师\(\text{Ex:SumofMinofLength}\)这次比赛总体难度不是很大,可能也是我第一次自己独立做出\(\text{Ex}\)。(虽然不是场切......
  • AtCoder Beginner Contest 315
    \[\large\text{Round6:AtCoderBeginnerContest315}\]一言:愿悲、爱恋、你和宇宙以及那颗星辰,能够永远拥抱我们。——THEBEYOND-機動戦士ガンダム40周年纪念曲这场打的一般,主要还是一开始网卡爆了把心态弄得很不好,一定程度上影响了发挥。\(\text{G:Ai+Bj+Ck......
  • AtCoder Beginner Contest 310
    \[\large\text{Round8:AtCoderBeginnerContest310(VP)}\]一言:虚伪的眼泪,会伤害别人,虚伪的笑容,会伤害自己。——反叛的鲁鲁修\(\text{F}\)竟然没有第一时间想到状压,还是太蒟了。。\(\text{F:Make10Again}\)这题看到一个子集,再加上子集和的范围只需要考虑小于......
  • AtCoder Beginner Contest 313
    \[\large\text{Round2:AtCoderBeginnerContest313(VP)}\]一言:当我拔出第二把剑时,就是为了我所爱之人——刀剑神域这场比赛真的是大败而归,只A了\(A,B,C,E\)。。。虽然但是,\(F,G\)确实不可做,但是\(D\)题还是有点可惜了。\(\text{D:OddorEven}\)感觉考场......
  • AtCoder Beginner Contest 343
    AtCoderBeginnerContest343比赛链接A-WrongAnswer思路简单的模拟,事实上我们需要注意一下当a和b都为0的情况Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){ inta,b; cin>>a>>b; intans=a+b; //cout<<a+b-1<<en......