Educational Codeforces Round 144 (Rated for Div. 2)(A~C)

news2024/9/25 9:37:27

A. Typical Interview Problem

从1开始,遇到3的倍数就在字符串后面加F,遇到5的倍数就在字符串后面加B,若遇到3和5的倍数,就加入FB,这样可以写一个无限长的字符串,给出一个长度最多为10的字符串,判断这个字符串是不是原字符串的子串。

思路:很容易发现原字符串的循环节是FBFFBFFB,直接暴力判断就可以。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 2e5 + 5;
int t, n;
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 >> n >> s;
        std::string ss = "FBFFBFFBFBFFBFFBFBFFBFFBFBFFBFFB";
        int pos = 0;
        bool flag = false;
        for(int i = 0; i < ss.length() - s.length() + 1; i ++) {
            // std::cout << ss[i] << '\n';
            int pos = i;
            for(int j = 0; j < s.length(); j ++) {
                if(ss[pos] != s[j])
                    break;
                pos ++;
                if(j == s.length() - 1)
                    flag = true;
            }
            if(flag)
                break;
        }
        std::cout << (flag ? "YES" : "NO") << '\n';
    }
    return 0;
}

os:当时赛时因为循环节就放了两个,不够长,wa了一发QWQ

B. Asterisk-Minor Template

给出两个字符串,如果两个字符串中有相同的字母,可以在另一个字符串有其他字母的位置添加“*”,一个“*”可以表示多个字符,也可以不表示字符,表示后的字符串内字母数量不能小于“*”数量,问有没有满足条件的表示法。例如样例中,“aaab”和“zzzb”可以用“*b”表示。

思路:因为“*”的数量不能大于字符数量,所以如果在字符串中隔一个加一个“*”一定不满足条件;可以得到以下结论:如果第一个字符或者最后一个字符相同,那直接用相同的这个字母加一个“*”即可;若都不相同,那就在字符串中找有无两个相邻的字母相同,若相同可以用“*xx*”表示,若不存在,则不能表示,输出-1。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 2e5 + 5;
int t, n;
std::string a, b;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin >> t;
    while(t --) {
        std::cin >> a >> b;
        if(a[0] == b[0]) {
            std::cout << "YES" << '\n';
            std::cout << a[0] << '*' << '\n';
        }
        else if(a[a.length() - 1] == b[b.length() - 1]) {
            std::cout << "YES" << '\n';
            std::cout << '*' << b[b.length() - 1] <<  '\n';
        }
        else {
            std::map<std::string, int> mp;
            for(int i = 0; i < a.length() - 1; i ++) {
                std::string s = "";
                s += a[i];
                s += a[i + 1];
                mp[s] ++;
            }
            // for(auto [x, y] : mp)
            //     std::cout << x << ' ' << y << '\n';
            bool flag = false;
            std::string ans;
            for(int i = 0; i < b.length() - 1; i ++) {
                std::string s = "";
                s += b[i];
                s += b[i + 1];
                // std::cout << s << '\n';
                if(mp[s]) {
                    ans = s;
                    flag = true;
                    break;
                }
            }
            if(flag) {
                std::cout << "YES" << '\n';
                std::cout << '*' << ans << '*' << '\n';
            }
            else
                std::cout << "NO" << '\n';
        }
    }
    return 0;
}

C. Maximum Set

给出一个区间l和r,求最长的beautiful数组的长度,并计算区间内最长的beautiful数组有多少,答案对998244353取模。beautiful数组是指数组中任意两个数都有倍数关系的数组。

思路:最长的数组长度很好求,就是l一直乘2,一直到大于r为止。对于第二个答案,首先全乘2的数组会有一个区间,可以求得这样的数组的个数;然后分析可以将其中的2换成乘其他的数,乘3显然可以,如果乘4,那可以拆分为两个乘2,显然不满足最长的要求,再大的数类似,也不满足条件。所以易得,在乘2的序列中,尽可能将其中一个2换成3。这样的区间用同样的方法可以求得,并且对于相同开头的数组中,3乘在不同位置得到的数组不同,乘一下即可。

AC Code:

#include <bits/stdc++.h>

typedef long long ll;
const int N = 205;
int  t, l, r;

template<const int T>
struct ModInt {
    const static int mod = T;
    int x;
    ModInt(int x = 0) : x(x % mod) {}
    ModInt(ll x) : x(int(x % mod)) {} 
    int val() { return x; }
    ModInt operator + (const ModInt &a) const { int x0 = x + a.x; return ModInt(x0 < mod ? x0 : x0 - mod); }
    ModInt operator - (const ModInt &a) const { int x0 = x - a.x; return ModInt(x0 < 0 ? x0 + mod : x0); }
    ModInt operator * (const ModInt &a) const { return ModInt(1LL * x * a.x % mod); }
    ModInt operator / (const ModInt &a) const { return *this * a.inv(); }
    void operator += (const ModInt &a) { x += a.x; if (x >= mod) x -= mod; }
    void operator -= (const ModInt &a) { x -= a.x; if (x < 0) x += mod; }
    void operator *= (const ModInt &a) { x = 1LL * x * a.x % mod; }
    void operator /= (const ModInt &a) { *this = *this / a; }
    friend std::ostream &operator<<(std::ostream &os, const ModInt &a) { return os << a.x;}
    
    ModInt pow(int64_t n) const {
        ModInt res(1), mul(x);
        while(n){
            if (n & 1) res *= mul;
            mul *= mul;
            n >>= 1;
        }
        return res;
    }
    
    ModInt inv() const {
        int a = x, b = mod, u = 1, v = 0;
        while (b) {
            int t = a / b;
            a -= t * b; std::swap(a, b);
            u -= t * v; std::swap(u, v);
        }
        if (u < 0) u += mod;
        return u;
    }
    
};
typedef ModInt<998244353> mint;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin >> t;
    while(t --) {
        std::cin >> l >> r;
        if(l * 2 > r) {
            std::cout << 1 << ' ' << r - l + 1 << '\n';
            continue;
        }
        int ans1 = 0, rr = l;
        while(rr <= r) {
            ans1 ++;
            rr <<= 1;
        }
        std::cout << ans1 << ' ';
        rr = r;
        int cnt = ans1 - 1;
        while(cnt --)
            rr >>= 1;
        mint ans2 = rr - l + 1;
        cnt = ans1 - 2, rr = r;
        while(cnt --)
            rr >>= 1;
        rr = rr / 3 - l + 1;
        ans2 += std::max(rr, 0) * (ans1 - 1);
        std::cout << ans2 << '\n';
    }
    return 0;
}

os:思路还是很好想到的,但是奈何我一直读假题了,,掉大分

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

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

相关文章

CLion+Opencv+QT开发相关

一、QT安装和配置其实我并没有直接在Qt上开发&#xff0c;下载Qt而是因为&#xff1a;CLion可以通过Qt的MinGW作为Toolset&#xff0c;并且可以将Qt creator作为external tool&#xff1b;在进行Opencv的编译安装中可以用Qt自带的MinGW进行编译和安装&#xff0c;不用另外下载M…

C++类和对象:初始化列表、static成员和友元

目录 一. 初始化列表 1.1 对象实例化时成员变量的创建及初始化 1.2 初始化列表 1.3 使用初始化列表和在函数体内初始化成员变量的效率比较 1.4 成员变量的初始化顺序 1.5 explicit关键字 二. static成员 2.1 static属性的成员变量 2.2 static属性的成员函数 三. 友元 …

废气处理设备远程监控

当今工业迅速的发展&#xff0c;工业带给人们的经济效益显著&#xff0c;而同时污染问题也备受关注。国家环保标准对排放至大气的废气指标提出了更高的要求。面临着环保压力&#xff0c;企业为走可持续发展之路&#xff0c;为维护员工利益、改善工作环境及周边环境不受影响&…

一、Sping框架引入

OCP开闭原则 什么是OCP&#xff1f; OCP是软件七大开发原则当中最基本的一个原则&#xff1a;开闭原则 对什么开&#xff1f;对扩展开放。 对什么闭&#xff1f;对修改关闭。OCP原则是最核心的&#xff0c;最基本的&#xff0c;其他的六个原则都是为这个原则服务的。OCP开闭原则…

计算机行业回暖?看网友怎么说?

就业寒潮之下&#xff0c;去年的应届生们可谓哀嚎一片&#xff0c;不少人晒出自己的0offer秋招战绩。 就连过去无往不利的计算机行业&#xff0c;亦不例外。但今年开始&#xff0c;计算机行业逐渐有了回暖的迹象和讨论。 陆续有不少之前哭诉收获惨淡的计算机专业同学&#x…

防静电和浪涌TVS layout设计要点

电子产品精密化刚看过了CES2023&#xff0c;雷卯的外贸伙伴们看了最新的AR,VR,5G产品&#xff0c;新的电子产品更智能、更复杂&#xff0c;嵌入了脆弱和敏感的集成电路。这些设备的环境往往很恶劣&#xff0c;产生高水平静电和快速瞬态浪涌。这些ESD事件可能会干扰设备&#xf…

IIS之web服务器的安装、部署以及使用教程(图文详细版)

WEB服务器的部署 打开虚拟机后查看已经开放的端口&#xff0c;可以看到没有TCP 80、TCP 443&#xff0c;说明HTTP服务端口没有打开 打开我的电脑—双击CD驱动器 选择安装可选的Windows组件 选择应用程序服务器—打开Internet信息服务—选择万维网服务和FTP服务 一路确…

uniapp-首页配置

为了获取到后台服务器发来的数据&#xff0c;需要配置相应的网络地址。位置在main.js入口文件中。 import { $http } from escook/request-miniprogramuni.$http $http // 配置请求根路径 $http.baseUrl https://api-hmugo-web.itheima.net// 请求开始之前做一些事情 $http.…

Spring-Xml配置

一、Spring 简介 1.简介 文档下载地址&#xff1a;Index of /spring-framework/docs 1.简介 Spring framework 是 Spring 基础框架 学习Spring 家族产品 Spring framework SpringBoot SpringCloud Spring 能用来做什么 开发 WEB 项目 微服务 分布式系统 Spring framew…

云服务HCIE变题当天一把过!分享下学习备考和考试经验

大家好&#xff0c;我是誉天云服务学员刘同学。感谢在誉天的学习&#xff0c;让我在临考变题的情况下通过了云服务HCIE考试&#xff1b;也感谢誉天给我这次机会分享出学习备考和考试的经验。 算起来&#xff0c;我和誉天也是老朋友了&#xff1a;一开始是跟着邹老师学习云计算、…

【JAVA】线程和进程

&#x1f3c6;今日学习目标&#xff1a;线程和进程 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰本期期数&#xff1a;第三期 &#x1f389;专栏系列&#xff1a;JAVA 线程和进程前言一、进程与线程1.进程2.线程二、线程的创建2.1 继…

Pytest自动化框架~权威教程03-原有TestSuite的执行方法

前言TestSuite一直是unittest的灵活与精髓之处, 在繁多的测试用例中, 可以任意挑选和组合各种用例集, 比如smoke用例集, level1用例集, webtest用例集, bug回归用例集等等, 当然这些TestSuite需要我们提前定义好, 并把用例加载进去.Pytest采取的是完全不同的用例组织和运行方式…

有些笑话,外行人根本看不懂,只有程序员看了会狂笑不止

我一直都觉得我们写代码的程序员与众不同&#xff0c;就连笑话都跟别人不一样。 如果让外行人来看我们一些我们觉得好笑的东西&#xff0c;他们根本不知道笑点在哪里。 不信你来瞧瞧&#xff0c;但凡有看不懂的地方&#xff0c;说明你的道行还不够深。 1.大多数人开始学编程时…

论文解读14——XGBoost:A Scalable Tree Boosting System

目录1、文章贡献2、算法推导3、寻找分裂点算法3.1 精确贪心算法3.2 近似算法4、稀疏感知算法5、特征维度的并行化6、XGBoost VS GBDT7、XGBoost局限半年前看了这篇XGBoost的原文&#xff0c;网上解读很多&#xff0c;于是迟迟没有将其中的精髓记录下来&#xff0c;准备重点记一…

从工厂打螺丝到月薪18k测试工程师,我该满足吗?

以前我比较喜欢小米那句“永远相信美好的事情即将发生”&#xff0c;后来发现如果不努力不可能有美好的事情发生&#xff01;01高中毕业进厂5年&#xff0c;创业经商多次战败&#xff0c;为了生计辗转奔波高中毕业后我就进了工厂&#xff0c;第一份工作是做模具加工。从500元一…

1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等

文本抽取任务Label Studio使用指南 1.基于Label studio的训练数据标注指南&#xff1a;信息抽取&#xff08;实体关系抽取&#xff09;、文本分类等 2.基于Label studio的训练数据标注指南&#xff1a;&#xff08;智能文档&#xff09;文档抽取任务、PDF、表格、图片抽取标注等…

网络资源面经2

文章目录Kafka 原理&#xff0c;数据怎么平分到消费者生产者分区消费者分区Flume HDFS Sink 小文件处理Flink 与 Spark Streaming 的差异&#xff0c;具体效果Spark 背压机制具体实现原理Yarn 调度策略Spark Streaming消费方式及区别Zookeeper 怎么避免脑裂&#xff0c;什么是脑…

用Python自己写一个分词器,python实现分词功能,隐马尔科夫模型预测问题之维特比算法(Viterbi Algorithm)的Python实现

☕️ 本文系列文章汇总&#xff1a; &#xff08;1&#xff09;HMM开篇&#xff1a;基本概念和几个要素 &#xff08;2&#xff09;HMM计算问题&#xff1a;前后向算法 代码实现 &#xff08;3&#xff09;HMM学习问题&#xff1a;Baum-Welch算法 代码实现&#xff08…

【数据结构】关于二叉树你所应该知道的数学秘密

目录 1.什么是二叉树&#xff08;可以跳过 目录跳转&#xff09; 2.特殊的二叉树&#xff08;满二叉树/完全二叉树&#xff09; 2.1 基础知识 2.2 满二叉树 2.3 完全二叉树 3.二叉树的数学奥秘&#xff08;主体&#xff09; 3.1 高度与节点个数 3.2* 度 4.运用二叉树的…