AtCoder Beginner Contest 158 BCD

Posted lukelmouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AtCoder Beginner Contest 158 BCD相关的知识,希望对你有一定的参考价值。

AtCoder Beginner Contest 158 BCD

B

先找到循环节的长度乘以每个循环节中(a) 的数量,然后在加上

注意 long long

#include <bits/stdc++.h>
using namespace std;
int main() {
    long long n,a,b;
    cin >> n >> a >> b;
    cout <<( n / (a + b) * a + min(a,n % (a + b)) );
    return 0;
}

C

枚举

(O(1)) 解法 先算出max(ceil(a/0.08),ceil(b/0.1)),再看这个数能否回去

#include <bits/stdc++.h>
using namespace std;
int main() {
    int a,b;
    cin >> a >> b;
    for(int i = 1;i <= 1250; ++i) {
        if(floor(i * 0.08) == a && floor(i * 0.1) == b) {
            cout << i ;
            return 0;
        }
    }
    cout << -1;
    return 0;
}

D

加个反转标记,deque的插入删除都是(O(1))

https://blog.csdn.net/like_that/article/details/98446479

#include <bits/stdc++.h>
using namespace std;
int main() {
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    deque<char> q;
    string s;
    int Q,t,f;
    bool k = 1;
    char c;
    cin >> s >> Q;
    for(int i = 0;i < s.size(); ++i) {
        q.push_back(s[i]);
    }
    while(Q --) {
        cin >> t;
        if(t == 1) k = !k;
        else {
            cin >> f >> c;
            if(f == 1) {
                if(k == 1) q.push_front(c);
                else q.push_back(c);
            }
            else {
                if(k == 1) q.push_back(c);
                else q.push_front(c);
            }
        }
    }
    if(k) for(int i = 0;i < q.size(); ++i) cout << q[i] ;
    else for(int i = q.size() - 1;i >= 0; --i) cout << q[i];
    return 0;
}

以上是关于AtCoder Beginner Contest 158 BCD的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder Beginner Contest 234

AtCoder Beginner Contest 115 题解

AtCoder Beginner Contest 154 题解

AtCoder Beginner Contest 103

AtCoder Beginner Contest 228

AtCoder Beginner Contest 242