cf-913-div3


title: cf 913 div3
date: 2024-01-16 16:42:45
tags: vp
categories: 比赛

A. Rook

题目大意

可以在棋盘上横向或纵向移动任意步数,找出车的所有走法

解题思路

直接输出横向和纵向车能移动的位置即可

代码实现

void solve()
{string s; cin >> s;string s1, s2;s1 = s2 = s;vector<string> vec;for (int i = 0; i < 8; i++) {s1[0] = char(i + 'a');s2[1] = char(i + '1');vec.push_back(s1);vec.push_back(s2);}for (auto x : vec) {if (x == s) continue;cout << x << endl;}}

B. YetnotherrokenKeoard

题目大意

按顺序输入字符串,遇到 ′ B ′ 'B' B 删除输入的字符串中最右侧的大写字母,没有则不做改变,输入到 ′ b ′ 'b' b,删除输入的字符串中最右侧的小写字母,没有则不改变

解题思路

类似于队列,维护大写字母和小写字母最优侧下标,那么我们则将小标与对应的字符存储在一起,按照顺序输入,操作。

代码实现

PII a[N];
void solve()
{string s; cin >> s;//维护序列当中最右边大写小写字母vector<PII> lc, uc;for (int i = 0; i < (int)s.size(); i++) {char x = s[i];if (x == 'b') {if (lc.size()) lc.pop_back();}else if (x == 'B') {if (uc.size()) uc.pop_back();}else if (isupper(x)) {uc.push_back({ i,x });}else lc.push_back({ i,x });}vector<PII> vec;for (auto it : lc) {vec.push_back(it);}for (auto it : uc) {vec.push_back(it);}sort(vec.begin(), vec.end());for (auto it : vec) {cout << char(it.second);}cout << endl;
}

C. Removal of Unattractive Pairs

题目大意

给出一个字符串,满足任意删除相邻的一对不同字符,求出最短的字符串

解题思路

模拟发现,最后的状态一定不存在字符或者只存在一个字符,因此考虑将其余字符删除,能将字符变得多短

代码实现

void solve()
{int cnt = 0;int n; cin >> n;string s; cin >> s;map<int, int> mp;for (int i = 0; i < (int)s.size(); i++) {mp[s[i]]++;cnt = max(mp[s[i]], cnt);}cout << n - min(n / 2, n - cnt) * 2 << endl;
}

D. Jumping Through Segments

题目大意

给出 n n n 个线段,第 i i i 次移动要在第 i i i 个线段上面,可以在 k k k 范围内任意距离移动,求最小的 k k k

解题思路

二分答案。每一次移动范围内,存在移动范围与下一个下段有交集即合法。

代码实现

bool check(int k)
{int l = 0, r = 0;for (auto it : a) {int L = max(0, l - k), R = r + k;if (L > it.second || R < it.first) return 0;l = max(L,it.first),r = min(R,it.second);}return 1;
}
void solve()
{int n; cin >> n;a = b;for (int i = 0; i < n; i++) {int l, r;;cin >> l >> r;a.push_back({ l,r });}int l = 0, r = 2e9;while (l < r) {int mid = l + r >> 1;if (check(mid)) r = mid;else l = mid + 1;}cout << l << endl;
}

E. Good Triples

题目大意

给出一个整数 n n n,满足三个非负整数 a 、 b 、 c a、b、c abc之和为 n n n,并且他们的数位之和等于 n n n 的数位之和的方案数。

解题思路

若要满足条件,三个数是不能进位。因此每一位是不受其他位影响,将每一数的每一位贡献相乘即可

代码实现

int pre[10];
void solve()
{int n; cin >> n;ll ans = 1;while (n) {ans *= pre[n % 10];n /= 10;}cout << ans << endl;
}
int main()
{for (int i = 0; i <= 9; i++) {for (int j = 0; i + j <= 9; j++) {for (int k = 0; i + k + j <= 9; k++) {pre[i + j + k]++;}}}int t; cin >> t;while (t--) solve();return 0;
}

F. Shift and Reverse

题目大意

给出一个数组 a a a,可以进行两种操作
移位:将最后一个数组移到首位
反转:将整个数组反转

解题思路

将数组变成环,遍历找到递增的或者递减的,模拟操作即可

代码实现


void solve()
{int n; cin >> n;vector<int> a(2 * n);for (int i = 0; i < n; i++) {cin >> a[i];a[i + n] = a[i];}int ans = -1;for (int i = 0; i < n; i++) {int st = i;int cnt = 1;while (i < 2 * n - 1 && a[i] >= a[i + 1]) {cnt++;i++;}if (cnt >= n) {ans = min(st + 1, n - st + 1);}}for (int i = 0; i < n; i++) {int st = i;int cnt = 1;while (i < 2 * n - 1 && a[i] <= a[i + 1]) {cnt++;i++;}if (cnt >= n) {if (ans == -1) {ans = min(n - st, st + 2);//移动多少个,翻转两次,一次时移动多少个}else {ans = min(ans, min(n - st, st + 2));}if (st == 0) ans = 0;}}cout << ans << endl;
}

G. Lights

题目大意

n n n 盏灯和 n n n 个开关,改变 i i i 的状态,也会改变 a i a_i ai 状态。求出最少开关关掉所有的灯,不可能输出 -1。

解题思路

建边后发现是一颗基环树,环外的边的操作固定,用拓扑排序处理非环上的点。环的部分,如果剩余亮着的灯数量为奇数,则无法全部熄灭。

代码实现


void solve()
{int n; cin >> n;vector<int> in(n + 5), e(n + 5);string s; cin >> s;s = " " + s;for (int i = 1; i <= n; i++) {int u = i, v;cin >> v;e[u] = v;in[v] ++;}queue<int>q;for (int i = 1; i <= n; i++) {if (in[i] == 0) q.push(i);}vector<int>ans;while (!q.empty()) {int x = q.front();q.pop();if (s[x] == '1') {s[x] = '0';ans.push_back(x);if (s[e[x]] == '1') {s[e[x]] = '0';}else s[e[x]] = '1';}in[e[x]] --;if (in[e[x]] == 0) {q.push(e[x]);}}for (int i = 1; i <= n; i++) {if (in[i]) {int j = i;int t = 0;int len = 0;int res = 0;while (in[j]) {//环if (s[j] == '1') {t ^= 1;}res += t;in[j] = 0;len++;j = e[j];}if (t == 1) {cout << -1 << endl;return;}for (int k = 0; k < len; k++) {if (s[j] == '1') {t ^= 1;}if (t == (res < len - res)) ans.push_back(j);j = e[j];}}}cout << ans.size() << endl;for (auto it : ans) cout << it << ' ';cout << endl;
}

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

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

相关文章

走迷宫之推箱子

前言&#xff1a; 在上一篇文章当中我介绍了一个走迷宫的写法&#xff0c;但是那个迷宫没什么可玩性和趣味性&#xff0c;所以我打算在迷宫的基础上加上一个推箱子&#xff0c;使之有更好的操作空间&#xff0c;从而增强了游戏的可玩性和趣味性。 1. 打印菜单 void menu() {…

探索 Python:发现有趣的库——第 1 章:数据可视化之旅

在一个充满活力的科技世界中&#xff0c;数据分析专家“算法仙”和编程爱好者“代码侠”相遇了&#xff0c;决定一起踏上数据可视化的探险之旅。他们将运用 Matplotlib 和 Seaborn 这两个强大的 Python 库&#xff0c;将枯燥的数据转化为生动的图形。 算法仙&#xff1a;你好&…

为什么要进行数模转换,数模转换的应用场景有哪些?

问题描述&#xff1a;为什么要进行数模转换&#xff0c;数模转换的应用场景有哪些&#xff1f; 问题解答&#xff1a; 数模转换&#xff08;Digital-to-Analog Conversion&#xff0c;简称DAC&#xff09;是将数字信号转换为模拟信号的过程。进行数模转换的原因和一些应用场景…

Kafka 的 Consumer Group 解读

作为一份笔记&#xff0c;本文再次梳理一下 Kafka 的 Consumer Group。我们知道&#xff0c;一个 Topic 往往会有多个 Partition&#xff0c;一条消息只会被写到一个 Kafka 的 Partition 中&#xff0c;那 Consumer 是怎么消费 Message 的呢&#xff1f; Consumer Group 又从中…

如何低成本打造高效跨国企业内网

随着企业数字化转型的加速&#xff0c;企业对网络连接、安全性和可靠性的需求也变得越来越高&#xff0c;最近小编收到了好几封私信&#xff0c;咨询跨境企业内部组网方案。 投稿的是某跨国公司的IT运维人员&#xff0c;总部在海外&#xff0c;国内分支机构每天都需要进行数据互…

【ASP.NET Core 基础知识】--中间件--什么是中间件

本篇文章作为中间件单元的开篇文章&#xff0c;通过这篇文章可以了解什么是中间件、内置中间件的使用以及怎么创建自定义中间件。我们先来看一下中间件的角色、目的和重要性。 1. 角色 请求处理管道的构建块&#xff1a; 中间件是构成ASP.NET Core请求处理管道的基本组成部分…

[Android]实现一个权限申请类

[Android]实现一个权限申请类 导言 在引入了动态权限申请之后&#xff0c;Android的权限申请就变得尤为繁琐&#xff0c;若是按照原有的方法一板一眼地进行申请&#xff0c;样板代码未免太多。因此本篇文章就使用ActivityResult API&#xff0c;来实现一个简单的权限申请类来帮…

C练习——魔术师猜三位数

题目&#xff1a; 有一种室内互动游戏&#xff0c;魔术师要每位观众心里想一个三位数abc&#xff08;a、b、c分别是百位、十位和个位数字&#xff09;&#xff0c;然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这5个数的和值。只要观众说出这个和是多少&#xf…

设计模式之多线程分工模式--- 生产-消费者模式

系列文章目录 设计模式之避免共享的设计模式Immutability&#xff08;不变性&#xff09;模式 设计模式之并发特定场景下的设计模式 Two-phase Termination&#xff08;两阶段终止&#xff09;模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…

Linux定时删除n天前的数据

Linux定时删除n天前的数据 1.创建删除脚本并授权 touch /home/data/script/shell/auto-del-60-days-ago-log.sh chmod x auto-del-60-days-ago-log.sh 2.编写shell脚本&#xff08;auto-del-60-days-ago-log.sh&#xff09; vi auto-del-60-days-ago-log.sh 添加如下内容&a…

Golang 替换数字卡码54题

文章目录 替换数字 54卡码网直接操作读取的[]byte 替换数字 54卡码网 本题为卡码网的54题&#xff0c;起为acm模式的答题 这里我们不在输入获得的[]byte类型上直接修改&#xff0c;而是保存在新建的[]byte上 golang小知识&#xff1a; 单引号’&#xff0c;表示byte类型或rune…

进程的创建与回收学习笔记

目录 一、进程内容&#xff1a; 二、进程常用命令 三、创建子进程 四、子进程进阶 五、进程的退出 六、进程的回收 一、进程内容&#xff1a; 程序&#xff1a; 存放在磁盘上的指令和数据的有序集合&#xff08;文件&#xff09; 静态的 进程&#xff1a; 执行一个程序所…

Image Sensor常见分辨率下HTS,VTS设置

本文介绍Image Sensor常见分辨率下HTS&#xff0c;VTS设置。 Image Sensor的HTS&#xff0c;VTS设置非常重要&#xff0c;其与Pixel Clock和FPS有一定的相关性&#xff0c;本文列出常见的分辨率下HTS&#xff0c;VTS的设置。 常见的分辨率下HTS&#xff0c;VTS的设置如下表。…

拍照后的相机logo怎么去掉?看完你就知道了

在日常生活中&#xff0c;拍照已经成为了我们捕捉美好瞬间的习惯。山川湖海、花鸟鱼虫&#xff0c;城市风光、街角趣闻&#xff0c;我们都喜欢用相机或手机留住这些美好的回忆。然而&#xff0c;有时候&#xff0c;当我们按下的那一刹那&#xff0c;一些不速之客——logo&#…

SQL语句详解五-DCL(数据控制语言)

文章目录 DCL管理用户示例代码 权限管理示例代码用户权限 DCL 概述&#xff1a;DCL&#xff0c;数据库控制语言&#xff0c;用来管理用户和给用户授予权限的 管理用户 添加用户 CREATE USER 用户名主机名 IDENTIFIED BY 密码;删除用户 DROP USER 用户名主机名;修改用户密码 S…

安全狗连续3年获得中国网络空间安全协会感谢

在2024年的新年伊始&#xff0c;安全狗依托在2023年期间协助中国网络空间安全协会完成《网络安全态势感知研判分析报告》并支持相关网络安全态势研判工作而获得感谢信。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;创办于2013年&#xff0c;是…

3d模型为什么打光只显示黑色---模大狮模型网

3D建模是现代制作动画、电影、游戏等数字媒体内容的重要工具。在建模过程中&#xff0c;打光是一个重要的环节&#xff0c;它可以让3D模型更加真实、有趣和生动。然而&#xff0c;如果打光不当&#xff0c;3D模型可能会呈现出黑色的效果&#xff0c;这可能会让人感到困惑和沮丧…

mybatisplus多租户执行复杂sql(如带case when之类的语句)报错问题

mybatisplus在多租户情况下&#xff0c;执行复杂sql时&#xff0c;会报&#xff1a;Failed to process,Error SQL:select ...&#xff0c;之前版本是加SqlParser注解关闭租户验证&#xff0c;新版本替换为&#xff1a;InterceptorIgnore(tenantLine "1")

vue批量下载图片打包为压缩包

yarn add jszip yarn add file-saver<template><div class"home"><button click"attachDownload">批量下载</button><div class"home_wrap"><div class"home_wrap_item" v-for"item in imageLi…

模拟瑞幸小程序购物车

是根据渡一袁老师的大师课写的&#xff0c;如有什么地方存在问题&#xff0c;还请大家指出来哟ど⁰̷̴͈꒨⁰̷̴͈う♡&#xff5e; index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-e…