首页 > 其他分享 >2021CCPC桂林

2021CCPC桂林

时间:2023-11-16 23:34:34浏览次数:36  
标签:cnt vector int auto cin edge 2021CCPC 桂林

B

题意:1e6位a+b=c算式。每次修改某个加数的某一位,求这一位修改后的值和算式改变的位数。

题解:用set维护 \(a_i+b_i\neq 9\) 的位置,这样修改后的修改位的值和改变的位数都可以通过它算出来,然后每次修改至多往set插入或删除一个元素。

//
// Created by blackbird on 2023/11/16.
//
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;

signed main() {
    cin.tie(nullptr)->sync_with_stdio(false);

    int n, q; cin >> n >> q;
    string s0, s1; cin >> s0 >> s1;

    set<int> s;
    vector<int> a[2] = {vector<int>(n + 1), vector<int>(n + 1)};
    for (int i = 1; i <= n; i++) {
        a[0][i] = s0[i - 1] - '0';
        a[1][i] = s1[i - 1] - '0';
        if (a[0][i] + a[1][i] != 9)
            s.insert(i);
    }

    while (q--) {
        int r, c, d; cin >> r >> c >> d; r--;
        auto it = s.upper_bound(c);
        int carry = it != s.end() && a[0][*it] + a[1][*it] >= 10;
        int pre = a[0][c] + a[1][c] + carry;
        a[r][c] = d;
        int now = a[0][c] + a[1][c] + carry;
        cout << now % 10 << " ";

        if (pre == now) cout << "0\n";
        else if ((pre < 10) != (now < 10)) {
            it = s.lower_bound(c);
            int prec = it == s.begin() ? 0 : *prev(it) - 1;
            cout << 1 + (c - prec) << "\n";
        } else cout << "2\n";

        if (a[0][c] + a[1][c] != 9) s.insert(c);
        else s.erase(c);
    }
    return 0;
}

K

题意:求1号点到各节点的最小费用最短路。每条边属于一个集合,第k次走集合t的边花费\(k\cdot w_t\)。\(n\le50\)。

题解:

bfs求出最短路数组d,则(u,v)在最短路中的条件是d[v]=d[u]+1。

由于最短路径数量不会超过3(n/3)(考虑k(n/k)最大值),搜索所有最短路即可。

//
// Created by blackbird on 2023/11/16.
//
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#define pii pair<int,int>
using namespace std;

signed main() {
    cin.tie(nullptr)->sync_with_stdio(false); srand(time(0));

    int n, m; cin >> n >> m;
    vector<vector<pii>> g(n + 1);
    vector<int> w(m + 1), c(m + 1);

    for (int i = 1; i <= m; i++) cin >> w[i];
    for (int i = 1; i <= m; i++) {
        int u, v; cin >> u >> v >> c[i];
        g[u].push_back({v, i}); g[v].push_back({u, i});
    }

    vector<int> d(n + 1, -1);
    d[1] = 0;
    queue<int> q; q.push(1);
    while (!q.empty()) {
        int u = q.front(); q.pop();
        for (auto [v, edge] : g[u]) {
            if (d[v] != -1) continue;
            d[v] = d[u] + 1;
            q.push(v);
        }
    }

    vector<int> ans(n + 1, 1e9);
    vector<int> cnt(m + 1);
    auto dfs = [&](auto self, int u, int sum) -> void {
        for (auto [v, edge] : g[u]) {
            if (d[v] == d[u] + 1) {
                int nsum = sum + (cnt[c[edge]] + 1) * w[c[edge]];
                ans[v] = min(ans[v], nsum);
                cnt[c[edge]]++;
                self(self, v, nsum);
                cnt[c[edge]]--;
            }
        }
    };
    dfs(dfs, 1, 0);

    for (int i = 2; i <= n; i++) cout << ans[i] << "\n";
    return 0;
}

标签:cnt,vector,int,auto,cin,edge,2021CCPC,桂林
From: https://www.cnblogs.com/vv123/p/17837540.html

相关文章

  • CCPC2023桂林站嗦粉记
    特别提示:因为这场ACM要被搬到opencup,题面,题解均未公开,为了避免剧透带来的不适,请谨慎阅读以下内容,本人也尽量不提及比赛相关内容虽然但是,为什么有人写游记不写比赛内容啊友链CCPC2023桂林站银定记-ShunpowerCCPC2023桂林站游记-StayAlone2023CCPC桂林站游记-Ishy......
  • 2023CCPC桂林站游记
    2023CCPC桂林站游记Day0起爆器,启动!起爆器,启动!起爆器,启动!起爆器,启动!起爆器,启动!柚子÷真恶心。夜宴丁真,鉴定为玩柚子社玩的。和liuhangxin联机MC。看liuhangxin玩原神。看liuhangxin玩原神。看liuhangxin玩原神。看liuhangxin玩原神。看liuhangxin玩原......
  • 2021 CCPC桂林 B.A Plus B Problem (线段树)
    传送门线段树大模拟!。考验线段树功底的时候来了,作为队伍的史山选手,写这么史也是情有可原的。#include<bits/stdc++.h>usingll=longlong;constintINF=0x3f3f3f3f;constintN=1e6+10;typedefstd::pair<int,int>PII;#definelsu<<1#definersu<<1|......
  • 2021 CCPC 桂林 ADEGIK
    2021CCPC桂林ADEGIKhttps://codeforces.com/gym/103409女队vp。就做了四道比较签到的题,后续补了两题,感觉比较考察思维。本身的代码不难写。其中,D题要能明白那个贪心的思想,尽量把大的放在前面,并且要知道怎么才能把大的放在前面!!!K题非常神奇,想了半天但其实是直接在边权为1的最短......
  • 华为工程师(王桂林)带你实战C++
    适合人群:有一定的C语言基础或是想提高C++水平的在职人员或是想要从事C、C++开发的绝大多数人你将学到:本课程我以实战为主,课上全部代码均为边讲边手敲,学会此套课程,可以达到一个C++中高级研发者的水平。课程简介:王桂林老师,曾供职于海尔,华为等世界500强企业。现在专职于C++教......
  • RPA赋能桂林银行业务创新发展
    近年来,随着金融科技不断发展以及数字化进程的持续推进,银行致力于通过技术手段推动金融创新,提高金融服务水平。其中机器人流程自动化(RPA)技术融合人工智能(AI)技术,提供了一种新......
  • 2022 CCPC 桂林
    B题面看着很吓人,但只要读完就发现很好理解,并且根据题意暴力状压DP即可。原本忘记可以调顺序,发现后纠结了一下,注意到重复选必然更劣故不用管,所以状压转移的时候,直接枚举选......
  • 2022 CCPC 桂林 E
    E.Drawatriangle题链不难发现可以用叉积来求我们假设A指向B的向量为(-b,a)注意这里是-ba假设A指向C的向量为(x,y)题目给出了AB坐标我们就知道了第一个向量我们......
  • 2022CCPC桂林 (2022 China Collegiate Programming Contest (CCPC) Guilin Site)
    链接:https://codeforces.com/gym/104008A.LilyC++Code#include"bits/stdc++.h"usingnamespacestd;usingi64=longlong;voidsolve(){intn;cin......
  • CCPC 2022桂林 J.Permutation Puzzle
    模拟赛的时候这道题细节写挂了,硬是调不出来。。。首先想到拓补排序。然后可以发现,正反各跑一次可以获得每个点的取值范围,即上界和下界。(特殊地,对于已知点,其上下界相等且等......