首页 > 其他分享 >ABC342

ABC342

时间:2024-03-13 23:13:00浏览次数:28  
标签:int rep cin ++ zero ABC342 using

T1:Yay!

模拟

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

using namespace std;

int main() {
    string s;
    cin >> s;
    
    vector<int> cnt(256);
    for (char c : s) cnt[c]++;
    
    char one = '?';
    for (char c = 'a'; c <= 'z'; ++c) {
        if (cnt[c] == 1) one = c;
    }
    
    rep(i, s.size()) {
        if (s[i] == one) {
            cout << i+1 << '\n';
        }
    }
    
	return 0;
}

T2:Which is ahead?

模拟

代码实现
#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> p(n);
    rep(i, n) cin >> p[i];
    
    vector<int> x(n+1);
    rep(i, n) x[p[i]] = i;
    
    int q;
    cin >> q;
    rep(qi, q) {
        int a, b;
        cin >> a >> b;
        if (x[a] < x[b]) cout << a << '\n';
        else cout << b << '\n';
    }
    
	return 0;
}

T3:Many Replacement

只需记录每种字符最后变成了哪个字符即可

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

using namespace std;

int main() {
    int n, q;
    string s;
    cin >> n >> s >> q;
    
    string t;
    rep(i, 26) t += 'a'+i;
    
    rep(qi, q) {
        char c, d;
        cin >> c >> d;
        rep(i, 26) {
            if (t[i] == c) t[i] = d;
        }
    }
    
    rep(i, n) {
        int j = s[i]-'a';
        s[i] = t[j];
    }
    
    cout << s << '\n';
    
	return 0;
}

T4:Square Pair

可以先将每个数中的最大的平方因子除掉,然后就变成简单的组合计数问题了

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

using namespace std;
using ll = long long;

int main() {
    int n;
    cin >> n;
    
    vector<int> a(n);
    rep(i, n) cin >> a[i];
    
    rep(i, n) {
        int x = a[i];
        for (int j = 2; ; ++j) {
            int y = j*j;
            if (y > x) break;
            while (x%y == 0) x /= y; 
        }
        a[i] = x;
    }
    
    ll ans = 0;
    int zero = 0;
    rep(i, n) {
        if (a[i] == 0) {
            zero++;
        }
    }
    ans += (ll)zero*(zero-1)/2;
    map<int, int> mp;
    for (int x : a) {
        if (x == 0) continue;
        ans += zero;
        ans += mp[x];
        mp[x]++;
    }
    
    cout << ans << '\n';
    
    return 0;
}

标签:int,rep,cin,++,zero,ABC342,using
From: https://www.cnblogs.com/Melville/p/18071795

相关文章

  • abc342D 乘积为完全平方数的对数
    题面:给定长为n的数组A,问有多少对下标(i,j)满足A[i]*A[j]为完全平方数?范围:n<=2E5;A[i]<=2E5思路:完全平方数即质因子的个数为偶数,因此对元素进行化简,把偶次质因子都去掉,再统计即可。另外,0乘任何数都为0,需要单独处理。#include<bits/stdc++.h>usingnamespacestd;#defineint......
  • ABC342
    Clink我们可以把所有字母都存上,代表换到最后这个字母换成什么了,当然最开始就是它本身。那么,把\(c\)改成\(d\)的时候,就只要把所有等于\(c\)的都改成\(d\)就行了。点击查看代码#include<bits/stdc++.h>usingnamespacestd;intn,q;chars[200005];inta[30];signed......
  • 数组关系_ABC342_D - Square Pair
    目录问题概述思路想法参考代码问题反思问题概述原题参考:D-SquarePair对于长度为n的数组,给出满足要求的数对对数:i<ja[i]*a[j]是一个平方数思路想法其实和以前的数组关系那题差不多,也是找关系,就是关系找不出来而已,对于两数相乘为平方数应该怎么考虑,可以知道对于任意数......
  • [ABC342D] Square Pair 题解
    洛谷传送门原题传送门题意给出一个数列\(A\),求出满足\(A_iA_j\)为完全平方数的无序数对\((i,j)\)的个数。分析容易想到(但是我在昨晚没想到,可以原地AFO了),对于每个数,如果是\(0\)的话可以直接统计答案(记录\(0\)的个数\(cnt\),最后\(ans\leftarrowans+cnt(n-cnt)+\f......
  • [ABC342E] Last Train 题解
    洛谷传送门原题传送门题意给出一些由\((l,d,k,c,A,B)\)描述的列车,表示每当时间为\(l,l+d,l+2d,\cdots,l+(k-1)d\)时有一半列车从\(A\)出发,经过\(c\)的时间到达\(B\)。问如果从站点\(i,i\in(0,n)\)出发要去站点\(n\),最晚什么时候到达站点\(i\)可以去到站点\(n\)......
  • [ABC342C] Many Replacement 题解
    洛谷传送门原题传送门题意给出由小写字母初始字符串,每次操作将字符串中所有为\(c\)的字符改为\(d\)。输出最终的字符串。分析很明显只需要开一个\(fa\)数组,其中\(fa[i]=j\)表示字母\(i\)被改为了\(j\)。对于每次操作只需要遍历\(26\)个字母,将\(fa[i]=c\)的那些......
  • [ABC342G] Retroactive Range Chmax 题解
    洛谷传送门原题传送门题意维护一个数列,有以下三个操作:区间最值操作,即将\([l,r]\)区间内的\(A_i\)变成\(\max(A_i,v)\)。删除操作操作,即将第\(i\)次操作删除,保证第\(i\)次操作是操作\(1\),且未被删除。注:仅删除第\(i\)次操作,后续操作仍然在。查询,询问当前的......
  • At-abc342
    AtCoderBeginnerContest342(已更新:CD)C似曾相识的经典映射题……而只会map的蒟蒻成功又被卡住了简单的用map映射无法处理如r->a,a->r这样的多重映射,应该在先存下原本的信息,再作映射写到这突然悟了……再改改果然是没有悟一点(⊙﹏⊙),由于只处理26个字母,每次修改实时更......
  • ABC342总结
    ABC342总结A+B+C+D虽然有奖,但是一无所获,都排到2000名左右了。赛时快速通过前四题,但是第五题被题目迷惑,第六题思路混乱,第七题本来是能力范围之内(数据结构是chnoier的特长),但是没读题。E一个最短路,这是有提示的,但是有一个迷惑信息。题目让我们求从A最晚出发的时间能到达N,其......