Educational-Codeforces-Round-147-Rated-for-Div-2

news2024/11/24 17:32:44

title: Educational Codeforces Round 147 (Rated for Div. 2)
date: 2023-04-21 15:47:29
categories:

  • Algorithm
  • Codeforces
    tags:
  • codeforces
  • div2

Educational Codeforces Round 147 (Rated for Div. 2)

A. Matching

image-20230421154823928

题目大意

给你一个字符串,里面包含数字和?,不可以有前导0,?可以替换任意数字,问你有多少种方式。

数字要严格大于0

思路

统计❓出现的次数,每出现一次就✖️10,如果是第一个字母为❓,那就✖️9。

代码

#include <bits/stdc++.h>

#define int long long
using namespace std;

void solve() {
    string s;
    cin >> s;
    int cnt = 0;
    for (const auto &item: s) {
        if (item == '?') cnt++;
    }
    int res = 1;
    if (cnt == 0) res = 1;
    else if (s[0] == '?') {
        res *= 9;
        cnt--;
        for (int i = 0; i < cnt; i++) {
            res *= 10;
        }
    } else {
        for (int i = 0; i < cnt; i++) {
            res *= 10;
        }
    }
    if (s[0] == '0') res = 0;
    cout << res << endl;
}

signed main() {
#ifndef ONLINE_JUDGE
    freopen("../test.in", "r", stdin);
    freopen("../test.out", "w", stdout);
#endif
    int _;
    cin >> _;
    while (_--) solve();

    return 0;
}

B. Sort the Subarray

image-20230421155249785

题目大意

给你两个数组,第一个是原数组,第二个是经过a数组排序后的数组,问你最长排序的区间是哪个。

思路

从左往右找到第一个两个数组中不同的元素位置,从右往左找到第一个两个数组中不同的元素位置,说明这一段之间一定是排序过的。

然后这个区间再分别向左和向右进行扩展,满足是升序的就加个加入到序列中。

代码

#include <bits/stdc++.h>

#define int long long
using namespace std;

void solve() {
    int n;
    cin >> n;
    vector<int> a(n + 1), b(n + 1);
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= n; i++) cin >> b[i];
    int l = 1, r = n;
    for (int i = 1; i <= n; i++) {
        if (a[i] != b[i]) {
            l = i;
            break;
        }
    }
    for (int i = n; i >= 1; i--) {
        if (a[i] != b[i]) {
            r = i;
            break;
        }
    }
    while (l > 1 && b[l] >= b[l - 1]) l--;
    while (r < n && b[r] <= b[r + 1]) r++;
    cout << l << " " << r << endl;
}

signed main() {
#ifndef ONLINE_JUDGE
    freopen("../test.in", "r", stdin);
    freopen("../test.out", "w", stdout);
#endif
    int _;
    cin >> _;
    while (_--) solve();
    return 0;
}

C. Tear It Apart

image-20230421162918880

题目大意

给你一个字符串,每次可以删除若干个字符,但是这些删除的字符不可以是连在一起的,至少要间隔一个,问你最少删除多少次,可以使得整个数组中的字符都是相同的

思路

将每个字符出现的左边记录在一个哈希表中,first为字母,second为一个vector,记录的是这个字母出现的坐标

然后去枚举每个出现的字母,我们去算假如数组最后只剩它的话,那么需要操作的次数。

很显然,如果数组只剩它,那么这种情况下需要操作的次数应该为两个这个字母中间夹着多少个其他字母,即这两个坐标之间的差值-1,设这个值为len。

我们找到最大的len,然后把最大的len都删除,那么其他长度小于len的也可以被删除了。

要把一个长度为len的字符串删除:

  • 如果len为偶数,那么最优的操作是删除1 3 5这样…显然每次可以删除len/2个,剩下len/2个
  • 如果len为奇数,那么最优的操作是删除1 3 5,显然可以删除len/2+1个,剩下le n/2个

所以每次删除剩下的元素个数为len/2,用一个while循环算要删多少次就可以了。

代码

#include <bits/stdc++.h>

#define int long long
using namespace std;

void solve() {
    string s;
    cin >> s;
    int n = s.size();
    s = " " + s;
    map<char, vector<int>> m;
    for (int i = 1; i <= n; i++) {
        m[s[i]].push_back(i);
    }
    int res = INT_MAX;
    for (const auto &item: m) {
        int pre = 0;
        int len = 0;
        auto [c, v] = item;
        v.push_back(n + 1);
        for (const auto &item1: v) {
            len = max(len, item1 - pre - 1);
            pre = item1;
        }
        int cnt = 0;
        while (len > 0) {
            len /= 2;
            cnt++;
        }
        res = min(res, cnt);
    }
    cout << res << endl;
}

signed main() {
#ifndef ONLINE_JUDGE
    freopen("../test.in", "r", stdin);
    freopen("../test.out", "w", stdout);
#endif
    int _;
    cin >> _;
    while (_--) solve();
    return 0;
}

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

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

相关文章

Redis缓存穿透和雪崩

Redis缓存穿透和雪崩 Redis缓存的使用&#xff0c;极大的提升了应用程序的性能和效率&#xff0c;特别是数据查询方面。但同时&#xff0c;它也带来了一些问题。其中&#xff0c;最要害的问题&#xff0c;就是数据的一致性问题&#xff0c;从严格意义上讲&#xff0c;这个问题…

AI 工具合辑盘点(七)持续更新 之 AI 音频生成工具

AI 音频生成工具 想要不亲自录制&#xff0c;快速将文本转换为语音&#xff1f;AI 音频生成工具为你提供数千种语音选择&#xff0c;从“普通人”的声音到模仿演员、政治家或电影角色的合成声音&#xff0c;各种声音应有尽有 &#x1f5e3; AI 音频生成工具可用于创建商业用途…

模糊PID模糊控制(清晰化方法梯形图实现)

模糊PID的模糊化请参看下面的博客文章: 博途PLC模糊PID三角隶属度函数指令(含Matlab仿真)_plc 模糊pid_RXXW_Dor的博客-CSDN博客三角隶属度函数FC,我们采用兼容C99标准的函数返回值写法,在FB里调用会更加直观,下面给大家具体讲解代码。常规写法的隶属度函数FC可以参看下…

Python小姿势 - Python中的列表推导式

Python中的列表推导式 Python中的列表推导式是一种很好的创建列表的方式。它允许你将一个操作应用于列表中的每个元素&#xff0c;并将结果放入一个新的列表中。 例如&#xff0c;假设你有一个包含数字的列表&#xff0c;但是你想将每个数字都乘以2&#xff0c;并将结果放入一个…

第三十二章 Unity Mecanim动画系统(上)

在上一章节中&#xff0c;我们介绍了Unity的旧版动画系统&#xff0c;本章节来介绍新版的Mecanim动画系统。新版的Mecanim动画系统实际是对旧版动画系统的升级。新版的Mecanim动画系统仍然是建立在动画片段的基础上的&#xff0c;只不过它给我们提供了一个可视化的窗口来编辑动…

服务攻防-数据库安全-服务应用的安全问题以及测试流程-MysqlHadoop未授权访问RCE-漏洞复现

目录 一、服务应用的安全问题 1、配置不当——未授权访问 2、安全机制——特定安全漏洞 3、安全机制——弱口令爆破攻击 二、服务应用的安全测试思路 1、判断服务是否开放 2、判断服务类型 3、判断利用方式 三、Mysql-未授权访问-CVE-2012-2122 利用 1、漏洞概述 2、…

Detours HOOK

参考文本 如何使用Detours库进行DLL注入&#xff0c;拦截API - 知乎 (zhihu.com) 解决‘nmake‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。_nmake 不是内部或外部命令,也不是可运行的程序 或批处理文件。_AI浩的博客-CSDN博客 Detours使用方法&#xff0c;简单…

五音不全?手把手教你用自己声音唱任何歌;最详细的Auto-GPT整理;4月AI绘画模型推荐;HayoAI平台简直太酷了 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『ChatGPT Code Interpreter Magic』魔法&#xff01;离谱&#xff01;正在怀疑人生… OpenAI 近期面向部分用户发放了 Code Interp…

一起单测引起的项目加载失败惨案 | 京东云技术团队

作者&#xff1a;京东科技 宋慧超 一、前言 最近在开发一个功能模块时&#xff0c;在功能自测阶段&#xff0c;通过使用单测测试功能的完整性&#xff0c;在测试单测联通性使用到静态方法测试时&#xff0c;发现单测报错&#xff0c;通过查阅解决方案发现需要对Javaassist包进…

vue3+webpack4 前端优化首屏时间

项目背景 中小项目&#xff0c;Vue-cli3 vue2 webpack4 目标 缩短白屏时间&#xff0c;用户能够更快的看到我的页面&#xff01; 白屏时间&#xff1a;从打开页面到看到页面&#xff0c;中间白屏停留的时间。 方向 1.减少资源体积&#xff0c;从而缩短请求时间 2.减少资…

企业数字化转型为什么难?低代码平台能为企业带来什么?

企业数字化转型困难原因是多方便的&#xff0c;比如&#xff1a; 遗留系统&#xff1a;许多企业在难以替换或与新技术集成的遗留技术系统上投入了大量资金。 变革阻力&#xff1a;企业越大&#xff0c;参与决策的人就越多&#xff0c;让每个人都接受新工作方式的难度就越大。 …

前端架构师-week4-Node多进程开发入门

目录 学习路径 官方文档 什么是进程 child_process 用法 exec & execFile 用法 spawn 用法以及与exec & execFile的区别 fork用法及父子进程通信机制讲解 child_process同步方法使用教程 学习路径 官方文档 中文版&#xff1a;http://nodejs.cn/api/child_pr…

Flutter 如何将代码显示到界面上

前言 如何优雅的将项目中的代码&#xff0c;亦或是你的demo代码展示到界面上&#xff1f;本文对使用简单、便于维护且通用的解决方案&#xff0c;进行相关的对比和探究 为了节省大家的时间&#xff0c;把最终解决方案的相关接入和用法写在前面 预览代码 快速开始 接入&…

C. Permutation Game(博弈 + 拓扑的思想)

Problem - C - Codeforces 经过漫长的一天&#xff0c; Aice和Bob决定玩一个小游戏。游戏棋盘由n个格子组成&#xff0c;在一条直线上&#xff0c;编号从1到n,每个格子包含一个数字4;,qy在1到n.之间&#xff0c;而且没有两个格子包含相同的数字。 一个棋子被放在其中一个格子里…

nestJS入门cli 创建项目以及集成swagger和mysql

nestJs 1. 简介 介绍 NestJS NestJS 是一个基于 TypeScript 的渐进式 Node.js 框架&#xff0c;它结合了 OOP、FP 和 FRP 的元素&#xff0c;以提供一种现代且可扩展的开发体验。NestJS 建立在 Express.js 之上&#xff0c;但是提供了更加抽象和模块化的方式来编写应用程序。…

蓝牙资讯|苹果与谷歌起草蓝牙定位追踪设备行业规范

苹果与谷歌于当地时间5月2日联合提交了一份行业规范草案&#xff0c;以帮助应对蓝牙定位追踪设备遭滥用的问题。目前已有包括三星在内的追踪设备制造厂商宣布支持该草案。 据了解&#xff0c;苹果与谷歌此次联合提交的行业规范草案将云熙蓝牙定位追踪设备兼容跨iOS以及Android平…

【LeetCode: 518. 零钱兑换 II | 暴力递归=>记忆化搜索=>动态规划 | 背包模型】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

十五周算法训练营——二叉搜索树(BST)

今天是十五周算法训练营的第五周&#xff0c;主要讲二叉搜索树专题&#xff0c;包含&#xff1a;验证二叉搜索树、不同的二叉搜索树、二叉树的最近公共祖先、二叉搜索树的最近公共祖先。&#xff08;欢迎加入十五周算法训练营&#xff0c;与小伙伴一起卷算法&#xff09; BST的…

在SQL中使用AI【EVA】

EVA 旨在支持使用深度学习模型对结构化数据&#xff08;表格、特征向量&#xff09;和非结构化数据&#xff08;视频、播客、PDF 等&#xff09;进行操作的数据库应用程序。 它使用一系列受久经考验的关系数据库系统启发的优化&#xff0c;包括函数缓存、采样和基于成本的谓词重…

mybatisPlus初识

文章目录 什么是mybatisplus依赖入门案例自动填充乐观锁悲观锁乐观锁 mybatisPlus实现乐观锁批量查询根据指定条件查询 什么是mybatisplus mybatisplus是mybatis的增强工具&#xff0c;支持多种类型的数据库。 依赖 <dependency><groupId>com.baomidou</group…