Educational Codeforces Round 161 (Rated for Div. 2)

这篇具有很好参考价值的文章主要介绍了Educational Codeforces Round 161 (Rated for Div. 2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Educational Codeforces Round 161 (Rated for Div. 2),算法,c++,数据结构,codeforces

Educational Codeforces Round 161 (Rated for Div. 2)

Educational Codeforces Round 161 (Rated for Div. 2)

A. Tricky Template

题意:开始没看懂。。。给出长度均为n的三个字符串abc,字符串s与模板t匹配的条件为:当模板位置字符为小写时, s i s_i si t i t_i ti必须相同,大写时二者必须不同。这里注意,字符匹配过程是不区分大小写的,’C‘与’c’是相同的。
现在需要找出一个模板t,使得t与字符串a和b匹配,且与c不匹配,是否能找到。

思路:只要字符串c存在一个位置的字符与a和b都不同即可。

AC code:

void solve() {
    cin >> n;
    string a, b, c; cin >> a >> b >> c;
    for (int i = 0; i < n; i ++) {
        if (a[i] != c[i] && b[i] != c[i]) {
            cout << "YES" << endl;
            return;
        }
    } cout << "NO" << endl;
}

B. Forming Triangles

题意:有n根棍,任取三根组成三角形,有多少种可能,现给出n个整数 a i a_i ai,第i根棍的长度为(2^ a i a_i ai)。

思路:组成的三角形一定是等腰三角形,才能满足任意两边之和大于第三边这样的三角形定理:

  • 三条边相等:长度相同的棍,任取仨
  • 两条边相等,长度相同的棍,任取俩,注意,第三条边只能去找比当前相同的两根棍严格小的边才能组成三角形

AC code:文章来源地址https://www.toymoban.com/news/detail-803803.html

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define pb emplace_back
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;
 
typedef long long LL;
typedef pair<char, int> PCI;
typedef pair<int, int> PII;
const int N = 2e5+10, M = 2001;
const int INF = 0x3f3f3f3f3f, mod = 998244353;
int T, n;
int a[N];
 
int sum(int x) {
    if (x < 3) return 0;
    return x * (x - 1) * (x - 2) / 6;
}
int sum2(int x) {
    if (x < 2) return 0;
    return  x * (x - 1) / 2;
}
 
void solve() {
    map<int, int> mp;
    cin >> n;
    for (int i = 1; i <= n; i ++) {
        int x; cin >> x;
        mp[x] ++;
    }
    int ans = 0;
    for (auto [x, y] : mp) {
        ans += sum(y);//任取仨
    }
    int now = 0;
    for (auto [x, y] : mp) {
        ans += sum2(y) * now;//二带一
        now += y;
    }
    cout << ans << endl;
}
 
signed main() {
    fast();
    
    T = 1;
    cin >> T;
    while (T --) {
        solve();
    }
    return 0;
}

C. Closest Cities

题意:有n座城市,按顺序给出每个城市的坐标 a i a_i ai,我们定义一个城市到另一个最近城市的距离为两城市坐标差的绝对值,最近城市有且只有一个。一个城市到最近城市花费为一枚硬币,否则花费硬币数为两城市的距离。
给出t个查询,每次查询城市A->B的最小花费。

思路:

  • 首先给出城市是按照坐标大小排列的,意味着一个城市的最近城市有且只有一个并且相邻;

  • 当我们的路径上存在最近城市这条路时,我们的硬币花费就为1,假设路径不存在最近城市,那么我们的花费直接就是两城市的距离。现在每当路径上存在一段最近城市距离,我们的花费就会减少(这两个最近城市的距离再-1)枚硬币。

  • 然后一个城市到达另一个城市可以分两种情况去讨论,我们定义城市A<城市B:

    • A->B:一个前缀和,计算可以省去的硬币数;
    • B->A:一个后缀和,计算可以省去的硬币数;
  • 则两城市间的最小花费为,两城市的距离 - 可以省去的硬币数

AC code:

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define pb emplace_back
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;
 
typedef long long LL;
typedef pair<char, int> PCI;
typedef pair<int, int> PII;
const int N = 2e5+10, M = 2001;
const int INF = 0x3f3f3f3f3f, mod = 998244353;
int T, n;
int a[N];
 
void solve() {
    cin >> n;
    vector<int> l(n + 1, 0), r(n + 1, 0);
    a[0] = -INF;
    for (int i = 1; i <= n; i ++) {
        cin >> a[i];
        if (i == 1) {
            continue;
        }
        l[i] = l[i - 1];
        if (a[i] - a[i - 1] < a[i - 1] - a[i - 2]) l[i] += (a[i] - a[i - 1]) - 1;
    }
    a[n + 1] = INF;
    for (int i = n - 1; i >= 1; i --) {
        r[i] = r[i + 1];
        if (a[i + 1] - a[i] < a[i + 2] - a[i + 1]) r[i] += (a[i + 1] - a[i]) - 1;
    }
    int t; cin >> t;
    while (t --) {
        int x, y; cin >> x >> y;
        if (x < y) {
            cout << a[y] - a[x] - (l[y] - l[x]) << endl;
        } else {
            cout << a[x] - a[y] - (r[y] - r[x]) << endl;
        }
    }
 
}
 
signed main() {
    fast();
    
    T = 1;
    cin >> T;
    while (T --) {
        solve();
    }
    return 0;
}

到了这里,关于Educational Codeforces Round 161 (Rated for Div. 2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Educational Codeforces Round 148 (Rated for Div. 2) 题解

    总结:5.21下午VP一场,死在了A题,给我wa崩溃了,浪费了差不多一个小时,BC还挺顺畅,虽然C题是在结束后不久交上去的。。。。 思路:其实思路很简单, “ The string s a palindrome ”, 题目已经说了所给的为回文字符串,所以直接判断一半 有几种字符 即可(开始的时候计算整

    2024年02月06日
    浏览(37)
  • Educational Codeforces Round 154 (Rated for Div. 2)(A—D)

    从1到9,每个数后面都可以加一个数构成一个含有两个数的质数,只需要从s[1]~s[9]中找到一个数与s[0]构成质数即可 观察样例即可发现两个字符串只要在相同位置都有 01 存在就能成功实现转换后两个字符串相等 可以先假设字符串是可以成立的,那么接下来就判断它什么时间是

    2024年02月10日
    浏览(36)
  • Educational Codeforces Round 154 (Rated for Div. 2)(A—C)

    从1到9,每个数后面都可以加一个数构成一个含有两个数的质数,只需要从s[1]~s[9]中找到一个数与s[0]构成质数即可 观察样例即可发现两个字符串只要在相同位置都有 01 存在就能成功实现转换后两个字符串相等 可以先假设字符串是可以成立的,那么接下来就判断它什么时间是

    2024年02月10日
    浏览(40)
  • Educational Codeforces Round 62 (Rated for Div. 2) C. Playlist

     一开始肯定要排个序,b相同时t大的在前边,不同时b大的在前面。 然后想最多只能选k个的限制,可以这样想,每次用到的b只能用已选到的最小的值,那可以把每个b都枚举一遍,然后每一次选时长最长的,且b大于等于当前的b的那k个不就好了吗,时间复杂度也才O(n),然

    2024年02月12日
    浏览(40)
  • Educational Codeforces Round 135 (Rated for Div. 2)C. Digital Logarithm(思维)

    C. Digital Logarithm 给两个长度位 n n n 的数组 a a a 、 b b b ,一个操作 f f f 定义操作 f f f 为, a [ i ] = f ( a [ i ] ) = a [ i ] a[i]=f(a[i])=a[i] a [ i ] = f ( a [ i ]) = a [ i ] 的位数 求最少多少次操作可以使 a 、 b a、b a 、 b 两个数组变得完全相同 性质: 对于任何数,经过两次操作我们一定可以

    2024年02月20日
    浏览(38)
  • 【每日一题】—— B. Ternary String (Educational Codeforces Round 87 (Rated for Div. 2))

    🌏博客主页: PH_modest的博客主页 🚩当前专栏: 每日一题 💌其他专栏: 🔴 每日反刍 🟡 C++跬步积累 🟢 C语言跬步积累 🌈座右铭: 广积粮,缓称王! 题目大意:给你一串由1、2、3组成的数组,让你求一个最短的子串,要求这个子串包含1、2、3 题目链接:B. Ternary String

    2024年02月16日
    浏览(38)
  • Educational Codeforces Round 157 (Rated for Div. 2) F. Fancy Arrays(容斥+组合数学)

    题目 称一个长为n的数列a是fancy的,当且仅当: 1. 数组内至少有一个元素在[x,x+k-1]之间 2. 相邻项的差的绝对值不超过k,即 t(t=50)组样例,每次给定n(1=n=1e9),x(1=x=40), 求fancy的数组的数量,答案对1e9+7取模 思路来源 灵茶山艾府群 官方题解 题解 看到 至少 的字眼,首先想到容斥,

    2024年02月05日
    浏览(40)
  • Educational Codeforces Round 145 Div. 2 题解

    目录 A. Garland(签到) 题面翻译 思路: 代码 B. Points on Plane(数学) 题面翻译 思路: 代码 C. Sum on Subarray(构造) 题面翻译: 思路: 代码 D. Binary String Sorting 题面翻译 思路: 代码 You have a garland consisting of 4 colored light bulbs, the color of the i-th light bulb is si. Initially, all the l

    2023年04月09日
    浏览(38)
  • Educational Codeforces Round 147 div2题解

    目录 A. Matching(签到) 思路: 代码:  B. Sort the Subarray(签到) 思路: 代码: C. Tear It Apart(枚举) 思路: 代码: D. Black Cells(模拟) 思路:  代码一: 代码二:(模仿自\\\"AG\\\"佬) An integer template is a string consisting of digits and/or question marks. A positive (strictly greater than 0) in

    2023年04月21日
    浏览(39)
  • Educational Codeforces Round 134 (Div.2) D 题解

    D. Maximum AND 给定两组序列 (a) (b) ,长度为 (n) ,现有一新序列 (c) ,长度也为 (n) 。 其中, (c_i = a_i oplus b_i) 。 定义 (f(a,b) = c_1c_2……c_n) 。 现在你可以随意编排 (b) 序列的顺序,求 (f(a,b)) 的最大值。 以下位运算均是二进制。 由于按位与的运算结果是越来越小的

    2024年02月06日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包