Codeforces Round 963 (Div. 2) A~C

news2024/9/30 19:39:47

封面原图 画师やんよ
掉大分的一场 连夜补题 真的不会写啊真的红温了

A - Question Marks

题意

选择题中答案为ABCD的题目各有n道,小明的答案给你,其中?表示这道题空着没写,问他的最高得分

思路

空着的题目肯定没分 超出选项最大个数的肯定也是错的

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

void solve()
{
    int n;
    scanf("%d",&n);
    string s;
    cin>>s;
    int A=0,B=0,C=0,D=0;
    int cnt=0;
    for(char c: s)
    {
        if(c=='A') A++;
        if(c=='B') B++;
        if(c=='C') C++;
        if(c=='D') D++;
        if(c=='?') cnt++;
    }
    int ans=s.length();
    ans-=A-n>0?A-n:0;
    ans-=B-n>0?B-n:0;
    ans-=C-n>0?C-n:0;
    ans-=D-n>0?D-n:0;
    ans-=cnt;
    printf("%d\n",ans);
}

int main()
{
    int T=1;
    scanf("%d",&T);
    while(T--)
    {
        solve();
    }
    return 0;
}

B - Parity and Sum

题意

给一个数列,每次可以任选两个奇偶性不同的数把其中较小的数变成两个数的和,问至少多少次可以使整个数列的奇偶性相同

思路

每次修改肯定是改出一个奇数,所以除了一开始全是偶数的特判之外我的目标一定是变成奇数,而偶数变成奇数只需要和一个比他的的奇数做题目给出的操作即可,我肯定是尽量要有更多更大的奇数,所以每个偶数都和最大的奇数做操作,如果一直到最后还是有偶数比最大的奇数还大那就操作两次,第一次把奇数变成一个更大的奇数第二次把偶数用这个更大的奇数变成新的奇数即可

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

void solve()
{
    ll n;
    scanf("%lld",&n);
    priority_queue<ll> p;
    priority_queue<ll,vector<ll>,greater<ll>> q;
    ll m=0;
    for(ll i=0;i<n;i++)
    {
        ll x;
        scanf("%lld",&x);
        if(x&1)
        {
            p.push(x);
        }
        else
        {
            m=max(m,x);
            q.push(x);
        }
    }
    if(p.size()==n or q.size()==n)
    {
        printf("0\n");
        return;
    }
    if(m<p.top())
    {
        printf("%d\n",q.size());
        return;
    }
    else
    {
        m=q.size()+1;
    }
    ll ans=0;
    while(q.size())
    {
        ll a=p.top();
        ll b=q.top();
        if(b<a)
        {
            q.pop();
            p.push(a+b);
        }
        else
        {
            p.pop();
            p.push(a+b);
        }
        ans++;
    }
    ans=min(ans,m);
    printf("%lld\n",ans);
}

int main()
{
    int T=1;
    scanf("%d",&T);
    while(T--)
    {
        solve();
    }
    return 0;
}

C - Light Switches

题意

有n个开关,一开始都是关的,第一次打开是在 a i a_i ai时刻,之后每 k k k分钟按一次,问最早什么时候所有开关都是开的状态

思路

首先我们要找的时间一定比最后开的开关还靠后,我们的第一步是先要统一我们要找的区间(检查他是否能够让所有开关都打开)的起点,但是实际上前面部分开关开的时间覆盖的区间的起点可能在这一段之前,所以我们要先往右边移动两格,第一次是移动到最右边的第一个关灯的位置,然后再移到下一个开灯的位置,注意在这里判断每个灯之前开关灯次数的奇偶性判断到底要不要在这里多开关一次统一灯的状态,具体看一下这个图
在这里插入图片描述
然后我们再判断我们找到的这个区间有没有机会满足所有开关都打开就可以了

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

void solve()
{
    ll n,k;
    scanf("%lld%lld",&n,&k);
    vector<ll> a(n);
    for(ll i=0;i<n;i++)
    {
        scanf("%lld",&a[i]);
    }
    sort(a.begin(),a.end());
    ll t=a.back();//最大值
    for(int i=0;i<n;i++)
    {
        ll cnt=1ll+(a.back()-a[i])/k;
        if(cnt%2ll==0ll)
            t=max(t,a[i]+cnt*k);
    }
    ll _t=t;
    for(int i=0;i<n;i++)
    {
        ll cnt=1ll+(t-a[i])/k;
        if(cnt%2ll==0ll)
            _t=max(_t,a[i]+cnt*k);
    }
    for(int i=0;i<n;i++)
    {
        ll cnt=1ll+(_t-a[i])/k;
        if(cnt%2ll==0ll)
        {
            printf("-1\n");
            return ;
        }
    }
    printf("%lld\n",_t);
}

int main()
{
    int T=1;
    scanf("%d",&T);
    while(T--)
    {
        solve();
    }
    return 0;
}

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

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

相关文章

【连续数组】python刷题记录

R3-前缀和专题 绝对要用字典记录 ben神&#xff0c;前缀和字典 class Solution:def findMaxLength(self, nums: List[int]) -> int:#前缀和字典,key为差值&#xff0c;value为坐标dict{0:-1}#当前1和0的差值counter0ret0for i,num in enumerate(nums):#多1&#xff0b;1if…

服务器自动部署网络安装环境

实验环境 rhel7&#xff1a;IP地址为172.25.254.200、主机名为node1.rhel7.org 实验配置 一.kickstart自动安装脚本制作 1.安装图形化生成kickstart自动安装脚本的工具 [rootnode1 ~]# yum install system-config-kickstart 2. 启动图形制作工具 [rootnode1 ~]# system-…

[Meachines] [Easy] shocker CGI-BIN Shell Shock + Perl权限提升

信息收集 IP AddressOpening Ports10.10.10.56TCP:80,2222 $ nmap -p- 10.10.10.56 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-title: Site doesnt have a title (text/html). |_http-server-…

《集成学习实战》:解锁机器学习的智慧合力

《集成学习实战》&#xff1a;解锁机器学习的智慧合力 在机器学习的浩瀚领域中&#xff0c;集成学习以其独特的“集体智慧”理念脱颖而出&#xff0c;成为解决复杂问题、提升模型性能的强大工具。《集成学习实战》一书&#xff0c;正是这样一本引领读者深入探索集成学习奥秘的…

task1打卡:Linux

闯关任务 hello_world 任务1 Linux命令 任务2 conda创建虚拟环境并运行test.py 任务3 test.sh

Spark wordcount实验

Spark WordCount实验一 启动spark 1. 数据准备 创建建数据文件夹 进入data文件夹 创建文本文件 并查看是否创建成功 文件内容 查看文件目录 启动pyspark 3、输入代码 从本地读入文本数据 读入1中创建好的data.txt文本文件。 并计算打印结果 Spark WordCount实验二 切工作目…

链表(真题)

1.两两交换&#xff1a;给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。【2021计专】 struct ListNode* swapPairs(struct ListNode* head) {typedef struct ListNode LTNode;//设置虚拟头结点LTNode* dummyHead (LTNode*)malloc(siz…

浅谈哈希与哈希表(c++)

目录 一、哈希的基本概念&#xff08;一&#xff09;哈希函数的特性&#xff08;二&#xff09;哈希冲突 二、C 中的哈希表实现三、哈希表的性能分析四、哈希表的应用场景五、优化哈希表的策略六、例题讲解【模板】字符串哈希题目描述输入格式输出格式样例 #1样例输入 #1样例输…

Vue Amazing UI:高颜值、高性能的前端组件库

Vue Amazing UI&#xff1a;高颜值、高性能的前端组件库 在当今前端开发中&#xff0c;Vue Amazing UI 作为一款功能强大的 UI 组件库&#xff0c;为开发者提供了全面的解决方案。本文将介绍 Vue Amazing UI 的基本信息、特点以及如何快速部署和使用。 软件简介 Vue Amazing U…

解决方案:Cannot write to ‘torch-2.0.1+cu118-cp310-cp310-linux_x86_64.whl.3’ (成功).

文章目录 一、现象二、解决方案 一、现象 在服务器执行以下语句 wget https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl报的错误如下&#xff1a; --2024-06-16 17:01:40-- https://download.pytorch.org/whl/cu118/torch-2.0.1%…

Visual Studio 配置Go开发环境

文章目录 安装Go配置环境变量Visual Studio 配置Go开发环境安装GO扩展安装/更新GO工具 编写Hello World 安装Go 本文基于Windows安装演示&#xff0c;安装链接Go安装包&#xff0c;根据需要选择对应安装包即可&#xff0c;没有需要直接根据系统选择最新安装包。 安装包长这样…

C语言程序设计-[3] 运算符和表达式

C语言的运算符也存在优先级和结合性的概念&#xff0c;在同一表达式中&#xff0c;优先级高的先结合&#xff0c;优先级相同时&#xff0c;就需要考虑结合性(分为左结合性和右结合性——对于单目、三目和赋值运算符表达式&#xff0c;从右至左运算&#xff1b;其他运算符表达式…

【Android】跨程序共享数据——内容提供器初识

跨程序共享数据——探究内容提供器 内容提供器的简介 主要用于在不同的应用程序之间实现数据共享的功能&#xff0c;它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供器是Android实现跨程序共享数据的标准方式。…

modbus控制传感器

文章目录 modbus报文分析实例移植libmodbus问题 添加freertos初始化发送和接收发送和接收的回调函数flush 主从设备代码分析-主控如何读写从机1、串口传输&#xff0c;设置哪个串口、波特率、校验码、数据个数、体制位2、connect连接只是初始化3、主设备读写从设备14、硬件操作…

LinuxC++(11):创建一个进程

Linux的0、1和2号进程 整个linux系统全部的进程是一个树形结构。 0号进程&#xff08;系统进程&#xff09;是所有进程的祖先&#xff0c;它创建了1号和2号进程。 &#xff08;相当于是我们世界的时间线&#xff09; 1号进程&#xff08;systemd&#xff09;负责执行内核的…

批发行业手机入库识别单据 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、手机入库好处 1. 便捷性高&#xff1a;可以随时随地通过手机进行入库操作&#xff0c;不受时间和地点的限制&#xff0c;方便库存管理者或相关人员及时记录商品或物品的入库信息。 2. 提高效率&#xff1a;采用手机端快速数据录入&#xff0c;避免了繁琐的手工记录&#x…

Linux从0到1——基础IO(上)【文件描述符/重定向/缓冲区】

Linux从0到1——基础IO&#xff08;上&#xff09; 1. 预备知识2. 复习一下常见的C语言文件接口3. 系统调用接口3.1 函数传参小技巧——标志位3.2 使用系统调用接口3.2.1 open3.2.2 write3.2.3 read 4. 文件描述符fd4.1 fd的本质4.2 理解struct file结构体4.3 fd的分配规则 5. …

学习分享:解析电商 API 接入的技术重难点及解决方案

在当今电商业务迅速发展的时代&#xff0c;接入电商 API 已成为许多企业提升竞争力和拓展业务的重要手段。然而&#xff0c;在这个过程中&#xff0c;往往会遇到一系列的技术重难点。本文将深入解析这些问题&#xff0c;并提供相应的解决方案。 一、电商 API 接入的技术重难点 …

按摩虎口穴位的作用

按摩虎口穴位的作用 虎口穴位是人体手背上的一个重要穴位&#xff0c;它位于手指掌侧第一指骨和第二指骨之间的凹陷处。 按摩虎口穴位有很多益处&#xff0c;包括&#xff1a; 缓解头痛和眼疲劳&#xff1a; 按摩虎口穴位可以缓解头痛和眼疲劳&#xff0c;特别是由于长时间使用…

未授权访问漏洞系列详解①!

Redis未授权访问漏洞 Redis 默认情况下&#xff0c;会绑定在 0.0.0.0:6379 &#xff0c;如果没有进行采用相关的策略&#xff0c;比如添加防火墙规则避免其他非信任来源 ip 访问等&#xff0c;这样将会将 Redis 服务暴露到公网上&#xff0c;如果在没有设置密码认证(一般为空)的…