IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【Educational Codeforces Round 130 (Rated for Div. 2)】【题解A-C】 -> 正文阅读

[C++知识库]【Educational Codeforces Round 130 (Rated for Div. 2)】【题解A-C】

2022年6月13日16:25:17

A. Parkway Walk

题目大意:

你正在穿过你家附近的公园大道。公园路有 n+1 个长椅,从左到右从 1 到 n+1 编号。长凳 i 和 i+1 之间的距离是 ai 米。

最初,你有 m 个单位的能量。要走 1 米的距离,您需要消耗 1 个单位的能量。如果你没有精力,你就不能走路。此外,您可以坐在长凳上恢复能量(这是恢复能量的唯一方法)。当你坐着时,你可以恢复任何你想要的整数能量(如果你坐得更久,你会恢复更多的能量)。请注意,您的能量可以超过 m。

你的任务是找到你必须恢复的最小能量(通过坐在长凳上)从长凳 1 到达长凳 n+1(并结束你的步行)。

你必须回答 t 个独立的测试用例。

输入
输入的第一行包含一个整数 t (1≤t≤100) — 测试用例的数量。然后是 t 个测试用例。

测试用例的第一行包含两个整数 n 和 m(1≤n≤100;1≤m≤10^4)。

测试用例的第二行包含 n 个整数 a1,a2,…,an (1≤ai≤100),其中 ai 是长凳 i 和 i+1 之间的距离。

输出
对于每个测试用例,打印一个整数——在相应的测试用例中,从长凳 1 到达长凳 n+1(并结束步行)所需恢复的最小能量(通过坐在长凳上)。

inputCopy
3
3 1
1 2 1
4 5
3 3 5 2
5 16
1 2 3 4 5
outputCopy
3
8
0

题解:

对距离求和,减去初始值,即得到答案。

void solve(){
    int n, k;
    cin >> n >> k;
    ll sum = 0;
    for (int i = 0; i < n;i++){
        int x;
        cin>>x;
        sum += x;
    }
    cout << max(sum - k,0ll) << nl;
}

B. Promo

题目大意:

商店出售 n 件商品,第 i 件商品的价格为 pi。商店管理层将举行促销活动:如果顾客至少购买 x 件商品,则其中最便宜的 y 件是免费的。

管理层尚未决定 x 和 y 的确切值。因此,他们要求您处理 q 个查询:对于给定的 x 和 y 值,如果客户进行一次购买,则确定免费收到的物品的最大总价值。

请注意,所有查询都是独立的;它们不会影响商店的库存。

输入
第一行包含两个整数 n 和 q (1≤n,q≤2?10^5)——分别是商店中的商品数量和查询次数。

第二行包含 n 个整数 p1,p2,…,pn (1≤pi≤10^6),其中 pi — 第 i 件商品的价格。

以下 q 行分别包含两个整数 xi 和 yi (1≤yi≤xi≤n) — 第 i 个查询中参数 x 和 y 的值。

输出
对于每个查询,打印一个整数——一次购买免费收到的物品的最大总价值。

inputCopy
5 3
5 3 1 5 2
3 2
1 1
5 3
outputCopy
8
5
6

题解:

贪心:排序后取最大的 xi 件衣服中偏小的 yi 件的价值和。

注意暴力会超时,选择前缀和O(1)的时间解决问题。

不开 long long 毁一生

void solve(){
    int n, q;
    cin >> n >> q;
    int p[n+1] = {0};
    for (int i = 0; i < n;i++)
        cin >> p[i];
    sort(p, p + n);
    //超时
    // while(q--){
    //     int a, b;
    //     cin >> a >> b;
    //     int sum = 0;
    //     for (int i = n - a; i < n - a + b; i++)
    //         sum += p[i];
    //     cout << sum << nl;
    // }
    ll sum[n + 1] = {0};
    sum[1] = p[0];
    for (int i = 2; i <= n;i++)
        sum[i] = sum[i - 1] + p[i - 1];
    while(q--){
        int a, b;
        cin >> a >> b;
        cout << sum[n - a + b] - sum[n - a] << nl;
    }
}

C. awoo’s Favorite Problem

题目大意:

给定两个长度为 n 的字符串 s 和 t。两个字符串中的每个字符都是“a”、“b”或“c”。

在一个动作中,您可以执行以下操作之一:

选择 s 中出现的“ab”并将其替换为“ba”;
选择 s 中出现的“bc”并将其替换为“cb”。
您可以执行任意数量的移动(可能为零)。你能改变字符串 s 使它等于字符串 t 吗?

输入
第一行包含一个整数 q (1≤q≤10^4)——测试用例的数量。

每个测试用例的第一行包含一个整数 n (1≤n≤10^5)——字符串 s 和 t 的长度。

第二行包含长度为 n 的字符串 s。每个字符是“a”、“b”或“c”。

第三行包含长度为 n 的字符串 t。每个字符是“a”、“b”或“c”。

所有测试用例的 n 总和不超过 10^5。

输出
对于每个测试用例,如果您可以通过执行任意数量的移动(可能为零)来更改字符串 s 以使其等于字符串 t,则打印“YES”。否则,打印“否”。

inputCopy
5
3
cab
cab
1
a
b
6
abbabc
bbaacb
10
bcaabababc
cbbababaac
2
ba
ab
outputCopy
YES
NO
YES
YES
NO

题解:

字符串处理,按照题意的处理方式进行分类讨论,具体见代码:

bool check(string &a,int i,int n,char b,char c){
    if(i + 1 >= n)
        return 0;
    for (int j = i + 1; j < n; ++j) {
        if(a[j] == b)
            continue;
        else if(a[j] == c) {
            swap(a[i], a[j]);
            return 1;
        } else {
            return 0;
        }
    }
}
void solve(){
    int n;
    string a, b;
    cin >> n >> a >> b;
    bool flag = 1;
    for (int i = 0; i < n && flag; ++i) {
        if(a[i] != b[i]) {
            if(a[i] == 'b' && b[i] == 'c') 
                flag = check(a, i, n,'b','c');
            else if(a[i] == 'a' && b[i] == 'b') 
                flag = check(a, i, n,'a','b');
            else 
                flag = 0;
        }
    }
    if(a != b)
        flag = 0;
    if(flag)
        cout << "yes" << nl;
    else
        cout << "no" << nl;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-20 22:53:49  更:2022-06-20 22:54:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:29:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码