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

AtCoder Beginner Contest 320

时间:2023-09-18 21:45:45浏览次数:39  
标签:AtCoder Beginner int res range pos 320 que input

A - Leyland Number

a, b = map(int, input().split(' '))
print( a ** b + b ** a )

B - Longest Palindrome

s = input()
n = len(s)
res = 0
for l in range(1, n + 1):
    for i in range(0, n - l):
        t = q = s[i: i + l]
        t = t + t[::-1]
        q = q + q[-2:: -1]
        if t in s:
            res = max(res, len(t))
        if q in s:
            res = max(res, len(q))

print(res)

C - Slot Strategy 2 (Easy)

最多只会执行\(3M\)所以可以暴力的枚举按按钮的方式

m = int(input())
s1 = input()
s2 = input()
s3 = input()

res = 1e9

for i in range(3 * m):
    for j in range(3 * m):
        if i == j:
            continue
        for k in range(3 * m):
            if i == k or j == k:
                continue
            if s1[i % m] == s2[j % m] and s2[j % m] == s3[k % m]:
                res = min(res, max(i, j, k))
print(res if res < 1e9 else -1)

D - Relative Position

从 1 开始做搜索,逐渐确定每个人的坐标,遇到冲突直接结束。

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define mp make_pair
using pii = pair<int, int>;

pii operator+(pii a, pii b) {
    return mp(a.first + b.first, a.second + b.second);
}

int32_t main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n, m;
    cin >> n >> m;
    vector<vector<pair<int, pii>>> e(n + 1);
    for (int u, v, x, y; m; m--) {
        cin >> u >> v >> x >> y;
        e[u].emplace_back(v, mp(x, y));
        e[v].emplace_back(u, mp(-x, -y));
    }
    vector<pii> pos(n + 1);
    vector<int> vis(n + 1);
    queue<int> q;
    q.push(1), vis[1] = 1;
    for (int u; !q.empty();) {
        u = q.front(), q.pop();
        for (auto [v, d]: e[u]) {
            if (vis[v]) {
                if (pos[v] == pos[u] + d) continue;
                vis[v] = 2;
            } else vis[v] = 1, pos[v] = pos[u] + d, q.push(v);
        }
    }
    for (int i = 1; i <= n; i++) {
        if (vis[i] == 1) cout << pos[i].first << " " << pos[i].second << "\n";
        else cout << "undecidable\n";
    }
    return 0;
}

E - Somen Nagashi

set维护去维护当前的队列中的,和等待进入队列的人,每次操作前先把应该入队的人重新插入到队列中。

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define mp make_pair
using pii = pair<int, int>;

int32_t main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n, m;
    cin >> n >> m;
    vector<int> cnt(n + 1);
    set<int> now;
    set<pii> que;
    for (int i = 1; i <= n; i++)
        now.insert(i);
    for (int t, w, s , x ; m; m--) {
        cin >> t >> w >> s;
        while( !que.empty() and que.begin()->first <= t )
            now.insert( que.begin()->second ) , que.erase(que.begin());
        if( now.empty() ) continue;
        x = *now.begin() , cnt[x] += w , now.erase(x) , que.emplace( t + s , x );
    }
    for( int i = 1 ; i <= n ; i ++ )
        cout << cnt[i] << "\n";
    return 0;
}

标签:AtCoder,Beginner,int,res,range,pos,320,que,input
From: https://www.cnblogs.com/PHarr/p/17713136.html

相关文章

  • abc320f <dp >
    题目F-FuelRoundTrip总结关键在于状态的定义。因为每个位置尽可加油一次,因此往返会相互影响,因而必须考考虑状态中定义去时经过此地的油量j与回时经过此地的油量k,这样才能成功转移;此外,本题状态转移比较奇特,相邻两个位置的状态的转移,在时间上包含去和回两个不同的时刻,较难......
  • ABC 320
    博主打这一次abc有点乱打,加上晚来了,倒开的,所以赛时只做了abcg,def没看。ef现在还没想,所以这篇文章:abcg正常写,d口胡(应该是对的)submissionsA可以直接for循环求值。(但是我用了快速幂)B枚举左右端点,\(O(|S|)\)判断是否回文。复杂度\(O(|S|^3)\)。优化至\(O(|S|^2)\),......
  • [ARC119F] AtCoder Express 3
    题目链接观察样例1的解释,发现切换类型的方法是比较单一的这种就是直接走一段换一段,我们可以人为钦定换乘时最多走一步,因为相邻的同色也可以视作走车站这种情况复杂一些,需要往回走一段,但是依然可以发现往回走也至多一步,因为如果走了两步说明往回走了一步到达的车站依......
  • abc320
    A题意给你\(A\)和\(B\),输出\(pow(A,B)+pow(B,A)\)#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;#definelen(x)((int)((x).size()))#defineinf0x3f3f3f3f#definemod998244353//#definemod1000000007voidsolve(){llA......
  • 【杂题乱写】AtCoder-ARC113
    AtCoder-ARC113AA*B*C枚举\(A,B\),那么\(C\in[1,\left\lfloor\frac{K}{AB}\right\rfloor]\),时间复杂度是\(O(K\logK)\)。提交记录:Submission-AtCoderAtCoder-ARC113BA^B^C\(A^k\)的末尾存在循环节,找到循环节长度\(|T|\),答案就是\(A^{B^C\bmod|T|}\bmod10\)。提......
  • [ABC320E] Somen Nagashi题解
    2023-09-16题目题目传送门翻译翻译难度&重要性(1~10):4题目来源AtCoder题目算法优先队列解题思路水题一道。需要两个优先队列:因为每一次是队首的人拿到面条,即队列中编号最小的拿面条,就用一个优先队列用来维护当前队列中的编号最小的人。由于每一次拿了面条后再......
  • [ABC320F]FuelRoundT
    [ABC320F]FuelRoundTrip这道题我们首先观察数据范围,发现\(n,h\le300\),于是就可以围绕它想一个三次方的复杂度。这个数据范围,一般明摆着就是DP,所以我先往DP方向思考。首先思考如果只要一趟的情况,发现十分简单,令\(dp_{i,j}\)表示到达第\(i\)个油站,加完/不加后剩余的......
  • [ABC320F] Fuel Round Trip 题解
    题意在坐标轴上给定\(N\)个点,坐标依次为\(X_1,X_2,\cdots,X_N\),你需要从原点前往\(X_N\)并折返,其中在第\(1\)个到第\(N-1\)个点上有加油站,其中第\(i\)个加油站可以花费\(P_i\)购买\(F_i\)升汽油,汽油持有上限为\(H\)升,每行驶一单位距离需要花费一升汽油。在......
  • 【题解】AtCoder-ABC320
    AtCoder-ABC320ALeylandNumber依题意计算。提交记录:Submission-AtCoderAtCoder-ABC320BLongestPalindrome直接\(O(n^2)\)枚举,\(O(n)\)判断。提交记录:Submission-AtCoderAtCoder-ABC320CSlotStrategy2(Easy)不妨将字符串复制三遍,枚举\([0,3m)\)判断。提交......
  • ABC320
    T1:LeylandNumber模拟代码实现a,b=map(int,input().split())print(a**b+b**a)T2:LongestPalindrome模拟代码实现#include<bits/stdc++.h>#definerep(i,n)for(inti=0;i<(n);++i)usingnamespacestd;boolisPalindrome(strings){string......