Codeforces Round #843 (Div. 2)(A~C,E)

news2025/1/20 3:37:48

A1/A2. Gardener and the Capybaras (easy version)

三个字符串,按照顺序连在一起,三个字符串满足第二个字符串大于等于第一个和第三个,或者第二个字符串小于等于第一个和第三个,输出满足情况的三个字符串。

思路:对于长度为3的字符串,三个字符串长度都只能为1,特判一下;对于其他情况,如果除了第一个字母和最后一个字母,中间的存在a,那可以输出a和前面的字符串,以及后面的字符串;若是不存在a,则输出第一个字母和最后一个字母,中间的直接输出即可,这样可以满足中间的字符串的条件。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 1e5 + 5;
int t;
std::string s;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin >> t;
    while(t --) {
        std::cin >> s;
        int len = s.length();
        if(len == 3) {
            if(s[0] >= s[1] && s[2] >= s[1] || s[0] <= s[1] && s[2] <= s[1])
                std::cout << s[0] << ' ' << s[1] << ' ' << s[2] << '\n';
            else
                std::cout << ":(" << '\n';
            continue;
        }
        int pos = -1;
        for(int i = 1; i < len - 1; i ++) {
            if(s[i] == 'a') {
                pos = i;
                break;
            }
        }
        if(pos != -1) {
            for(int i = 0; i < pos; i ++) {
                std::cout << s[i];
            }
            std::cout << ' ';
            std::cout << 'a' << ' ';
            for(int i = pos + 1; i < len; i ++) {
                std::cout << s[i];
            }
            std::cout << '\n';
            continue;
        }
        std::cout << s[0] << ' ';
        for(int i = 1; i < len - 1; i ++) {
            std::cout << s[i];
        }
        std::cout << ' ';
        std::cout << s[len - 1] << '\n';
    }
    return 0;
}

B. Gardener and the Array

给出数组a,但是给出的形式是对于每个数字,给出二进制下哪些位是1, 判断存不存在两个不同的子序列,使得子序列的或和相等。

思路:只要存在一个数,它的每一位1都不是唯一存在的即可满足条件。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 1e5 + 5;
int t, n, u, x;
std::vector<int> a[N];

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin >> t;
    while(t --) {
        std::cin >> n;
        std::map<int, int> mp;
        for(int i = 1; i <= n; i ++)
            a[i].clear();
        for(int i = 1; i <= n; i ++) {
            std::cin >> x;
            for(int j = 1; j <= x; j ++) {
                std::cin >> u;
                mp[u] ++;
                a[i].push_back(u);
            }
        }
        bool flag = false;
        for(int i = 1; i <= n; i ++) {
            bool f = true;
            for(auto u : a[i]) {
                if(mp[u] == 1) {
                    f = false;
                    break;
                }
            }
            if(f) {
                flag = true;
                break;
            }
        }
        std::cout << (flag ? "Yes" : "No") << '\n';
    }
    return 0;
}

os:因为memset被卡TLE了好几发,很难过

C. Interesting Sequence

给出n和x,求最小的m使得n & (n + 1) & (n + 2) & ... & m = x。

思路:按位考虑是最简单的。

(1)n该位为0,x该位也为0,m的选值没有影响;

(2)n该位为0,x该位为1,不可能满足,输出-1;

(3)n该位为1,x该位为0,需要等到该位是0的数字出现才可满足条件,设该数为k,则在现有的范围与大于等于k取交集;

(4)n该位为1,x该位也为1,需要在该位变成0之前取值,这样可以取到一个最大值k,则在现有的范围与小于等于k取交集。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 1e5 + 5;
int t;
ll n, x;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin >> t;
    while(t --) {
        std::cin >> n >> x;
        std::bitset<64> a(n), b(x);
        ll l = n, r = 3e18;
        for(int i = 63; i >= 0; i --) {
            if(!a[i] && b[i]) {
                l = r + 1;
                break;
            }
            if(!a[i] && !b[i]) continue;
            if(a[i] && !b[i]) 
                l = std::max(l, ((n / ((ll)1 << i)) + 1) * ((ll)1 << i));
            else
                r = std::min(r, ((n / ((ll)1 << i)) + 1) * ((ll)1 << i) - 1);
        }
        if(l <= r)
            std::cout << l << '\n';
        else
            std::cout << -1 << '\n';
    }
    return 0;
}

E. The Human Equation

给出数组,可以对数组进行两种操作:选择一个子数组,并对其中偶数位置的数-1,奇数位置的数+1;

选择一个子数组,并对其中奇数位置的数-1,偶数位置的数+1,问将所有数字全部变为0所需最少的操作次数。

思路:学习佬的思路

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 2e5 + 5;
int t, n;
ll a[N];

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin >> t;
    while(t --) {
        std::cin >> n;
        ll x = 0, y = 0;
        ll ans = 0;
        for(int i = 1; i <= n; i ++) {
            std::cin >> a[i];
            if(a[i] > 0) {
                ll res = std::min(a[i], y);
                y -= res;
                a[i] -= res;
                ans += a[i];
                x += a[i] + res;
            }
            if(a[i] < 0) {
                a[i] = -a[i];
                ll res = std::min(a[i], x);
                x -= res;
                a[i] -= res;
                ans += a[i];
                y += a[i] + res;
            }
        }
        std::cout << ans << '\n';
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu18.04系统下挂载新的机械硬盘

ubuntu18.04系统下挂载新的机械硬盘1.显示硬盘以及所属分区情况sudo fdisk -lDisk /dev/sda doesnt contain a valid partition table硬盘分区 对机械硬盘进行操作 sudo fdisk /dev/sda下图表示的是具体流程截图&#xff1a; The partition table has been altered!硬盘格式…

AWS RDS开启审计日志

问题 需要对AWS的RDS开启相关日志。先检查RDS是否开启日志&#xff0c;如下图&#xff1a; 选中一个数据库实例&#xff0c;查看到只开启了数据库的错误日志。但是&#xff0c;我们需要开启其他类型的审计日志。下面开始怎么样开启其他类型日志&#xff0c;来启用高级审计模…

corrosion 靶机(ffuf模糊测试,命令执行)

环境准备 靶机链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;c2j6 虚拟机网络链接模式&#xff1a;桥接模式 攻击机系统&#xff1a;kali linux 2022.03 信息收集 1.探测目标靶机开放端口和服务情况 2.用gobuster扫描目录&#xff0c;并访问 gobuster dir -…

手把手编译FFmpeg

支持centos8.6、ubuntu20.04 export 建议开始之前&#xff0c;弄一台干净的机子&#xff0c;或者系统恢复到出厂设置&#xff0c;否则容易出问题 然后设置动态库默认加载目录&#xff08;注意/usr/local/lib不是系统默认的路径&#xff0c;/lib和/usr/lib才是&#xff09; …

jsp库存管理管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 库存管理管理系统 是一套完善的系统源码&#xff0c;对理解JSP java serlvet MVC编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档&#xff0c;系统主要采用B/S 模式开发。 通过本系统建设&#xff0c…

ArcGIS基础实验操作100例--实验97计算河道方向坡度

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验97 计算河道方向坡度 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

内存管理-模板初阶理解-string类的模拟实现

文章目录1. 内存管理operator new和operator delete面试题&#xff1a;malloc、free和new、delete的区别2. 内存泄漏1. 内存泄漏&#xff1a;2. 内存泄漏危害&#xff1a;3.堆内存泄漏4.系统资源泄漏3. 模板初阶函数模板类模板&#xff1a;模板运行时不检查数据类型&#xff0c…

黑马编程资源最新最全全清单:速来收藏~

今年是黑马坚持免费分享视频教程的第16年&#xff0c;每年到了这个时候&#xff0c;「成绩单」也不会缺席&#xff0c;不仅是对过往的回顾&#xff0c;更是对那些选择跟着黑马持续学习的小伙伴们的一种激励。 黑马视频教程2022年速报 截至年底&#xff0c;黑马程序员 B 站累计…

ArcGIS基础实验操作100例--实验96创建地形剖面图

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验96 创建地形剖面图 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&am…

头戴式耳机跑步方便吗、公认最好的跑步耳机排行榜

平时&#xff0c;我们总能看到许多运动健身的人群&#xff0c;在锻炼时都佩戴着耳机。但运动耳机的选择&#xff0c;同样是大有学问的。如果佩戴传统的真无线蓝牙耳机&#xff0c;有可能出现佩戴不稳、耳道肿胀等问题&#xff0c;影响运动体验。所以今天我们特意给大家带来几款…

时间段查询将00:00:00更换成23:59:59

目录 一.问题描述 二.解决问题 2.1.思路一(时间戳赋值) 2.2思路二(LocalDateTime 方法赋值) 三.总结 一.问题描述 在我们作web项目的时候总会有时间段的查询条件 例如: 问题: 前端传到后台的时间: reportStartTime: 2023-01-01 00:00:00 reportEndTime: 2023-01-13 00…

Vue3和Vue2的区别

vue经历从2.0到3.0更新之后&#xff0c;简⽽⾔之就是变得更轻&#xff0c;更快&#xff0c;使⽤起来更加⽅便&#xff0c;每⼀次的版本迭代都是对上⼀个版本的升级优化&#xff0c;不管 是对于我们开发者还是对于⽤户体验都是不断地在越来越⽅便&#xff0c; 选项式Api与组合式…

【计数服务】计数服务落地

一、计数服务 计数服务是针对某个动作在不同维度行为次数的统计或者累加&#xff0c;计数服务需要满足计数的准确性&#xff0c;并且在满足准确性的同时&#xff0c;要注意其性能。 二、计数服务的实现 计数服务分为 非精准计数和精准计数 非精准计数&#xff1a;点赞量、浏…

【Blender UV映射03】如何处理复杂的结构 如何整理UV

写在前面 前面的学习记录&#xff1a; 【Blende UV映射01】创建UV 使用UV贴图处理纹理 【Blender UV映射02】智能UV映射 创建和应用法线纹理 依旧是跟着Blender 2.8 UV Mapping教程&#xff0c;本文是教程的P13-P19的过程记录。 1 善用L分析模型结构 拿到一个相对复杂的模…

压轴级教程!Java人必学的微服务项目上线!

给你说个冷知识下周末就要过年了……年关将至有人欢喜有人愁欢喜的是在外奔波一年终于可以和家人相聚愁的则是回家无非是&#xff1a;1.圆了亲戚的媒婆梦2.让亲戚过过嘴瘾3.成为晚辈的反面教材面对七大姑八大姨的灵魂拷问——有对象了吗&#xff1f;——现在做啥工作&#xff1…

2022年美赛B题O奖获奖分享

1.美赛获奖分享&#xff1a; ** 可以去我的网站逛逛点击传输 ** 首先是选题&#xff0c;今年MCM选择A,B题目的队伍相对较少&#xff0c;超60%的队伍选择C题&#xff0c;对题目的选择需要慎重&#xff0c;较难的题目参赛的队伍会少一些&#xff0c;获得O奖的概率理论上较高…

day14|110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

110.平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输…

【正点原子FPGA连载】 第十七章 呼吸灯实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十七章 呼吸灯…

队列的讲解和实现(图解+代码/C语言+循环队列OJ)

今天为大家分享的是队列的实现&#xff0c;本文主要介绍单向链表来模拟实现队列&#xff0c;最后给出力扣上一道循队列的OJ实现。 目录 一、图解队列的结构 二、模拟栈的分步实现 &#xff08;1&#xff09;队列的初始化 &#xff08;2&#xff09;队尾入队 &#xff08;3&…

【自学Python】Python比较运算符is和==区别

Python比较运算符is和区别 Python比较运算符is和区别教程 在 Python 中&#xff0c;比较运算符 is 和 is not 用于比较两个对象是否是同一个对象&#xff0c; 和 ! 用于比较两个 变量 的数据是否相等。 案例 比较数值型 数值型&#xff0c;使用 is 和 效果相同 print(&q…