AHUT周赛2

news2024/12/23 7:28:00

1.A - Mahmoud and Ehab and the MEX

Problem - A - Codeforces

核心在于x之前的数肯定是有的,x是没有的

所以从0开始一直到x,如果哪个数没有就加上哪个数(操作数+1),如果有x就删去x(操作数+1)

 

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 110,M=1010;
int a[N];
bool st[M];
int ans;
int cnt;
int main()
{
    int n, x;
    cin >> n >> x;
    for (int i =0; i < n; i++) {
        cin >> a[i];
    }
    for (int i = 0; i < n; i++) {
        st[a[i]] = true;
    }
    for (int i = 0; i < x; i++) {
        if (!st[i]) ans++;
    }
    if (st[x]) ans++;
    cout << ans << endl;
    return 0;
}

2.A - Beautiful Sequence

Problem - A - Codeforces

对于位置i的数,如果该数小于等于i,那么YES,否则NO

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 110;
int a[N];
int idx[N];
int main()
{
    int t;
    cin >> t;
    bool flag;
    while (t--) {
        int n;
        cin >> n;
        for (int i = 1; i <= n; i++) {
            idx[i] = i;
        }
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
        }
        flag = false;
        for (int i = 1; i <= n; i++) {
            if (a[i] <= idx[i]) {
                flag = true;
                break;
            }
        }
        //for (int i = 1; i <= n; i++) {
        //    cout << idx[i] << " " << a[i] << endl;
        //}
        if (flag) puts("YES");
        else puts("NO");
    }
    return 0;
}

3.D. Remove Two Letters

Problem - D - Codeforces

题意是一个字符串,从中删除两个连续的字符,能得到多少个不同的字符串(注意是连续两个字符,我当时做题的时候不知道)

对于长度为n的字符串,无非就是删除1,2或2,3或3,4.....n-1,一共n-1种情况

所以什么情况下删除两个连续的字符时不会增加一个新的字符串呢?当遇到aba型时,删除ab和ba都会留下一个a,那么删除ab时增加了一个新的字符串,但是删除ba时没有增加新的字符串,所以只要从头遍历一遍,如果某字符与上上个字符相等,那么就不会增加一个新的字符串,否则增加一个新的字符串

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        string s;
        cin >> s;
        int ans = 1;
        for (int i = 2; i < n; i++) {
            if (s[i] == s[i - 2]) continue;
            else ans++;
        }
        cout << ans << endl;
    }
    return 0;
}

4.D. Palindromes Coloring

Problem - D - Codeforces

大致题意就是能否在一个字符串中找到k个分隔的回文串,并且使得这k个回文串最短的那个长度最大,输出长度

与顺序无关,那么只与数量有关,统计相同字符的元素的个数,cnt1记录一共有几对相同的元素(两两一对),cnt2记录一共有多少个字符是只有一个的

要想使得最短的长度最大,那么分配时要尽量满足平均

一共k组,每组基本字符数量是cnt1/k*2,剩下的没有用过字符只能以一个字符的方式加到每组中,使得每组仍能够是回文串并且最小长度的字符串能+1,那么剩下的字符个数得大于k

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int N = 50;
int a[N];
int cnt1, cnt2;
int main()
{
    int t;
    cin >> t;
    while (t--) {
        int n, k;
        cin >> n >> k;
        string s;
        cin >> s;
        memset(a, 0, sizeof a);
        cnt1 = 0;
        cnt2 = 0;
        for (int i = 0; i < n; i++) {
            a[s[i] - 'a' + 1]++;
        }
        for (int i = 1; i <= 26; i++) {
            cnt1 += a[i] / 2;
            cnt2 += a[i] % 2;
        }            
        if ((cnt1 - cnt1 / k*k)*2+cnt2>=k) cout << cnt1 / k * 2 + 1 << endl;
        else cout << cnt1 / k * 2 << endl;
    }
    return 0;
}

5.D. Masha and a Beautiful Tree

Problem - D - Codeforces

用分治的思想,类似于归并排序,先排好左半边和右半边,然后将排好的左半边和右半边进行比较,看是否要交换两边的子树,每交换一次两边的子树ans++

最后排好后看是否是从1开始的递增序列,如果不是说明不能变成完美二叉树,则输出-1,否则输出ans

归并排序见(1条消息) 算法:排序_m0_74087709的博客-CSDN博客

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1e6 + 10;
int a[N];
int n;
int ans;
void dfs(int l, int r) {
    if (l == r) return;
    int mid = (l + r) / 2;
    dfs(l, mid), dfs(mid + 1, r);
    if (a[l] > a[r]) {
        ans++;
        for (int i = l; i <= mid; i++) {
            swap(a[i], a[i - l + mid + 1]);
        }
    }
}
int main()
{
    int t;
    cin >> t;
    while (t--) {
        ans = 0;
        cin >> n;
        for (int i = 1; i <= n; i++) cin >> a[i];
        dfs(1, n);
        bool flag = true;
        for (int i = 1; i < n; i++) {
            if (a[i] > a[i +1]) {
                flag = false;
                break;
            }
        }
        if (!flag) cout << -1 << endl;
        else cout << ans << endl;
    }
    return 0;
}

6.E - Swap PlacesE - Swap Places 

 

 暂时不会,之后再补

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

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

相关文章

【UML】

文章目录 1.uml图2.类图3.类合类之间关系&#xff1a;泛化关系4.类合类之间关系&#xff1a;实现关系5.类合类之间关系&#xff1a;关联关系6. 聚合关系 组合关系 依赖关系6.1聚合关系6.2 组合关系6.3 依赖关系 7.用例图8.时序图9.状态图10.活动图 1.uml图 2.类图 新建类图 新…

【超全解决方法】关于anaconda navigator启动时一直卡在 loading applications 的问题

问题描述 点开 anaconda navigator 一直处于以下页面&#xff0c;且过了很长时间都加载不出来。 &#xff08;至于为什么会出现这样的问题&#xff0c;原因是我更新了anaconda navigator 之后就出现一大堆问题&#xff0c;最终点开anaconda navigator却一直开在下面的页面&am…

【sop】基于灵敏度分析的有源配电网智能软开关优化配置(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【类和对象(中)】六大默认成员函数

文章目录 前言一、&#x1f33a;构造函数&#xff08;重点&#x1f33a;&#xff09;1.构造函数的特性 二、&#x1f33a;析构函数&#xff08;重点&#x1f33a;&#xff09;1.析构函数的特性 三、&#x1f33a;拷贝构造函数 &#xff08;重点&#x1f33a;&#xff09;1.拷贝…

Powerlink协议在嵌入式linux上的移植和测试(电脑和linux板通信实验)

使用最新的openPOWERLINK 2.7.2源码&#xff0c;业余时间搞定了Powerlink协议在嵌入式linux上的移植和测试&#xff0c;并进行了下电脑和linux开发板之间的通信实验。添加了一个节点配置&#xff0c;跑通了源码中提供的主站和从站的两个demo。这里总结下移植过程分享给有需要的…

4。计算机组成原理(4)CPU

嵌入式软件开发&#xff0c;非科班专业必须掌握的基本计算机知识 核心知识点&#xff1a;数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统 CPU&#xff08;中央处理器&#xff09;是计算机的核心部件&#xff0c;它主要负责执行计算机指令&#xff0c…

万字超详细的Java图书管理系统

&#x1f495;”生命中的每个人都是一个故事&#xff0c;而每个故事都值得被讲述“&#x1f495; &#x1f386;作者&#xff1a;不能再留遗憾了&#x1f386; &#x1f43c;专栏&#xff1a;Java学习&#x1f43c; &#x1f697;该文章主要内容&#xff1a;用Java实现简单的图…

三、PEMFC基础之组件间热传导

三、PEMFC基础之组件间热传导 一、理论基础二、编程实践 一、理论基础 热传导主要基于傅里叶热传导定律。在燃料电池中&#xff0c;除了各组件内部的热传导外&#xff0c;还有冷却流体与双极板的对流换热。公式略。 燃料电池内部稳态导热&#xff1a; d 2 T d x 2 q i n t k…

iMazing2软件最新版本功能技术参数详细介绍

这里有iMazing 的产品概述、功能特性、技术参数等详细介绍&#xff0c; 可以帮助您快速入门&#xff0c;了解iMazing的功能。不管是 iPhone、iPad 或 iPod Touch 设备&#xff0c;只要使用 USB 电缆将设备连接到计算机&#xff0c;就可以处理不同类型的数据。 自动备份 iMazi…

【Linux】基础IO——文件描述符

目录 什么是文件描述符标准输入、输出、错误的返回值类型FILE*的理解进程中文件描述符的分配规则重定向的原理重定向的实际使用方法dup2 如何理解缓冲区 什么是文件描述符 在基础IO的上一篇博客里有提到过&#xff0c;系统调用open与close的返回值问题&#xff1a; 成功返回文…

PyQGIS中一次性加载多个shp文件

目录 遍历添加多个图层 打印图层列表清单 打开QGIS Desktop 3.22.16&#xff0c;点击菜单栏 【设置】——>【Python控制台】 在Python控制台中点击【显示编辑器】按钮&#xff0c;打开Python编辑器 点击Python编辑器的第一个按钮 【打开脚本文件】&#xff0c;选择加载遍历…

2023年继续使用WordPress的6个最重要原因

为什么要使用 WordPress&#xff1f;我的网站不够好吗&#xff1f;为什么我需要从另一个平台切换到 WordPress&#xff1f; 在本文中&#xff0c;我们将分享您应该使用 WordPress 的最重要原因。我们还将涵盖您可以使用 WordPress 创建的所有不同类型的网站&#xff0c;并展示…

c高级(常用命令及软件安装与下载)

初始工作路径不在家目录下&#xff0c;在不切换路径的情况下&#xff0c;在家目录下创建一个subdir目录&#xff0c;在subdir这个目录下&#xff0c;创建subdir1和subdir2&#xff0c;并且把/etc/passwd拷贝到subdir1中&#xff0c;把/etc/group文件拷贝到subdir2中&#xff0c…

开源趣事~ 记给 OpenHarmony 提 PR 的那些事

大家好哇&#xff0c;许久不见&#xff0c;也感谢大家这么久一直以来的关注&#xff0c;也感谢在短视频盛行的今天&#xff0c;你们还能静下心来坚守文字的阵地。 说到这次的主题&#xff0c;参加鸿蒙项目的开源&#xff0c;也是小编第一次拥抱开源&#xff0c;就像是别人有困…

vue脚手架+elementUI,实现登录用户时的Loading...窗口

文章目录 App.vuevuex全局变量登陆成功Login组件使用AboutMe组件中关闭 登录失败情况login组件中关闭 改为aop思想的请求拦截器 App.vue 为了全局通用控制此标签&#xff0c;所以我建议把他放到App.vue文件中 <!--全局加载ing&#xff0c;保证不会在转换组件时被销毁-->…

Day965.从持续集成到持续部署 -遗留系统现代化实战

从持续集成到持续部署 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于从持续集成到持续部署的内容。 只有做好任务分解和小步提交&#xff0c;才能放心大胆地 PUSH 代码&#xff0c;触发持续构建&#xff1b; 只有通过质量门禁&#xff0c;才能得到一个有信心的制…

【Spring MVC】Spring MVC的执行流程以及运行原理

文章目录 一、 什么是MVC&#xff1f;二、什么是SpringMVC&#xff1f;三、SpringMVC中的核心组件四、SpringMVC的执行流程五、关于DispatcherServlet的配置说明六、关于SpringMVC的配置文件以及常用部分注解解释七、参考资料 一、 什么是MVC&#xff1f; MVC 是 Model、View …

软件工程的基础

软件危机软件工程软件工程是将系统化的&#xff0c;严格约束的&#xff0c;可量化的方法应用于软件的开发&#xff0c;运行和维护&#xff0c;将工程应用于软件。 软件工程的三个要素&#xff1a;方法&#xff0c;工具&#xff0c;过程软件的生命周期&#xff0c;是指从从软…

Vue列表展示【第二篇】

&#x1f331; 1、vue列表展示案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vueDemo02列表展示</title> </head> <body> <div id"xy"><!--原始展示方式…

深入篇【C++】类与对象:运算符重载详解 -(下)+日期类的实现

[TOC](深入篇【C】类与对象&#xff1a;运算符重载详解-(下&#xff09;日期类的实现&#x1f4af;干货满满&#xff01;) ⏰一.运算符重载 内置类型(int /double…… )是可以之间进行运算符之间的比较的&#xff0c;因为编译器知道它们之间的比较规则&#xff0c;可以之间转…