首页 > 其他分享 >AtCoder Regular Contest 151补题

AtCoder Regular Contest 151补题

时间:2022-11-17 23:46:24浏览次数:71  
标签:151 AtCoder cnt return int ll 补题 find define

AtCoder Regular Contest 151

A. Equal Hamming Distances

简单题,注意下答案需要字典序最小即可


#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l,_##i=r;i<=_##i;i++)
#define ll long long

signed main()
{
    int n;
    string a, b;
    cin >> n >> a >> b;
    int cnt(0);
    rep(i, 0, n - 1) if (a[i] != b[i]) cnt++;
    if (cnt % 2) cout << -1 << endl;
    else
    {
        string ans(a);
        int s1 = 0, s2 = 0; cnt /= 2;
        rep(i, 0, n - 1)
        {
            if (a[i] != b[i])
            {
                if (a[i] == '0')
                {
                    if (s1 < cnt) s1++;
                    else
                    {
                        ans[i] = b[i];
                        s2++;
                    }
                }
                else
                {
                    if (s2 < cnt)
                    {
                        s2++;
                        ans[i] = b[i];
                    }
                    else s1++;
                }
            }
            else ans[i] = '0';
        }
        cout << ans << endl;
    }
}

B. A < AP

知识点:计数,并查集
复杂度:\(O(n)\)

一开始被题目吓住了,以为要上带权并查集,后来发现只需要维护连通块的个数即可

枚举 \(A\) 中第一个满足 \(A_i<A_{P_i}\) 的位置
那么对所有的 \(1\) 到 \(i-1\) 都要满足 \(A_i=A_{P_i}\)
我们将之前的 \(j\) 和 \(p_j\) 使用并查集合并
那么此时符合题意的数列个数为 \(C_m^2×m^{cnt-2}\)
\(cnt\) 为连通块个数

注意 \(i\) 和 \(p_i\) 可能一开始就连通,所以要用并查集维护


#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l,_##i=r;i<=_##i;i++)
#define per(i,l,r) for(int i=r,_##i=l;i>=_##i;i--)
#define ll long long
#define fi first
#define se second
#define endl '\n'
template<class T> using vc = vector<T>;
template<class T> using vvc = vc<vc<T>>;

const int mod = 998244353;
const int N = 2e5 + 5;

int f[N];
void init(int n) { iota(f, f + n + 1, 0); }
int find(int u)
{
    if (f[u] == u) return u;
    return f[u] = find(f[u]);
}
bool link(int u, int v)
{
    int fu = find(u), fv = find(v);
    if (fu == fv) return false;
    f[fu] = fv;
    return true;
}

signed main()
{
    ios::sync_with_stdio(0), cin.tie(0);
    ll n, m;
    cin >> n >> m;
    init(n);
    vc<ll> p(n + 1), pow_m(n + 1);
    pow_m[0] = 1;
    rep(i, 1, n)
    {
        cin >> p[i];
        pow_m[i] = pow_m[i - 1] * m % mod;
    }
    ll cm2 = m * (m - 1) / 2 % mod;
    int cnt = n;
    ll ans = 0;
    for (int t = 1; t <= n; t++) if (link(t, p[t]))
    {
        ans = (ans + cm2 * pow_m[cnt - 2]) % mod;
        cnt--;
    }
    cout << ans << endl;
}

标签:151,AtCoder,cnt,return,int,ll,补题,find,define
From: https://www.cnblogs.com/lunasama/p/16901800.html

相关文章

  • 【补题】The 2022 SDUT Summer Trials
    比赛链接The2022SDUTSummerTrialsA.Ginger'snumber样例恶臭(恼)签到题简单分解因数就会发现要求的就是\(gcd\),直接算即可,时间复杂度\(\Theta(Tlog(max(x,y)))\)......
  • 绵阳2020CCPC补题
    绵阳2020CCPCD,K,J,L,GD.DefusetheBombs知识点:二分答案复杂度:\(O(nlogn+log^2n)\)vp时我猜了一个结论,验了几个样例就写了,喜提WA3然后队友写了二分答案复杂度\(O(......
  • NTMFS4C810NAT3G场效应管30V NCH,DEC1515H-D0-I/Z2集成电路TQFP
    产品参数1、型号:DEC1515H-D0-I/Z2封装:TQFP128批次:新年份2、型号:NTMFS4C810NAT3GFET类型:N通道技术:MOSFET(金属氧化物)漏源电压(Vdss):30V25°C时电流-连续漏极(Id):8.2A(Ta......
  • codeforces补题计划
    11.15CodeforcesRound#833(Div.2)知识点:D:高位和对低位无影响E:笛卡尔树上dp补题传送门......
  • Codeforces Round #833 (Div. 2)补题
    CodeforcesRound#833(Div.2)D.ConstructOR知识点:高位和对低位无影响一开始以为和广州的M一样,是数位dp,后来发现只要找到一个就行果然无论什么时候都要看清题目......
  • 大和証券プログラミングコンテスト2022 Autumn (AtCoder Beginner Contest 277)
    A.^{-1}果然是你ABC的A。//Problem:A-^{-1}//Contest:AtCoder-DaiwaSecuritiesCo.Ltd.ProgrammingContest2022Autumn(AtCoderBeginnerContest27......
  • 大和証券プログラミングコンテスト2022 Autumn (AtCoder Beginner Contest 277)
    A.^{-1}果然是你ABC的A。//Problem:A-^{-1}//Contest:AtCoder-DaiwaSecuritiesCo.Ltd.ProgrammingContest2022Autumn(AtCoderBeginnerContest27......
  • 【补题】第 46 届 ICPC EC Final
    比赛题目:第46届ICPCECFinal(正式赛)榜单A.DFSOrder签到题容易发现对于一个点,它的最小位置就是从根走一条链直接到它,最大位置就是除了它的子树,其它全已经走过了。......
  • 广州2022CCPC补题
    IInfection知识点:树上背包第一次写树上背包的题目,没想到就是在区域赛中神奇的是树上背包的复杂度,看起来是\(O(n^3)\),但是实际计算只有\(O(n^2)\)学会树上背包后可......
  • AtCoder Beginner Contest 277 (F,G,Ex)
    之前没细想过OSU那个题,被G薄纱,F也没写完,输麻了懒得放链接,代码可以直接去AtCoder上搜。ID:YunQianQwQF首先求出每列的最大最小值,然后依此排序,如果出现insertion......