Codeforces Round 917 (Div. 2)

news2025/2/5 22:05:19

在这里插入图片描述

Codeforces Round 917 (Div. 2)

Codeforces Round 917 (Div. 2)

A. Least Product

题意:

给出整数数组a,现在可以执行任意次数以下操作:任意选择数组a的一个元素 a i a_i ai,若 a i a_i ai>0可以任意替换为[0, a i a_i ai]的一个数,若 a i a_i ai<0则可以任意替换为[ a i a_i ai,0]的一个数。

最小化a数组中所有元素的乘积需要的最小操作次数。

思路:

  • 若存在 a i a_i ai=0,则任何操作都无意义,乘积总为0,操作数为0;
  • 若负数的个数为奇数,则最终乘积为负,操作无法扩大元素绝对值,所以此时操作也无意义,操作数为0;
  • 其他情况最佳操作为选择任意一个数变成0即可,操作数为1。

AC code:

void solve(){
    int cnt = 0;
    cin >> n;
    for(int i = 0; i < n; i ++){
        int u; cin >> u;
        if(u < 0) cnt ++;
        if(u == 0) cnt = -INF;
    }
    if(cnt < 0 || cnt % 2){
        cout << 0 << endl;
        return;
    }
    cout << 1 << endl;
    cout << "1 0" << endl;
}

B. Erase First or Second Letter

题意:

给出长度为n的字符串,每次操作可以选择删除当前字符串的第一个字符或第二个字符,求对初始字符串进行任意次数/顺序的操作后,可以生成的非空字符串的数量。

思路:

删除操作只能删除第一或第二个字符,那么可以保留当前字符为前缀一直走到最后,每次需要统计第一次出现的字符来增加遍历到新字符时的新的字符串的数量,第一和第二字符不可能同时保留,保留的过程可以通过不断删除第二字符来保留第一字符,然后再从初始字符串中删除当前第一字符,再重复保留第二字符。

AC code:

void solve(){
    map<char, int> mp;
    cin >> n >> s;
    int cnt = 0, ans = 0;
    for(int i = 0; i < n; i ++){
        if(!mp[s[i]]){
            mp[s[i]] ++;
            cnt ++;
        }ans += cnt;
    }cout << ans << endl;
}

C. Watering an Array

题意:

对长度为n的整数数组a进行d次操作,每次可以选择以下两个操作之一:

  • 对数组a的每个前 b i b_i bi个元素+1
  • 统计 a j a_j aj=j的数量c,然后就将c加到分数中,然后将序列全部归0,注意初始分数为0

d可能非常大,所以d多个b序列数组的连接, b = [ v 1 , v 2 , … , v k , v 1 , v 2 , … , v k , … ] b = [v_1, v_2, \ldots, v_k, v_1, v_2, \ldots, v_k, \ldots] b=[v1,v2,,vk,v1,v2,,vk,]

思路:

首先,第一种操作是对序列前缀进行递增操作,无法递减,无法精准操作到某一元素,一旦有过一次第二种操作,整个序列会归零,那么再进行第一次操作对分数的贡献最多为1;

所以要最大化第一次使用第二种操作得到的分数,那么剩下的操作次数/2向下取整即为剩余操作所能获得的分数;

因为每次都必须选择一个操作进行,一旦选择了第二种操作,那么之后的操作次数的分数可以直接得到,我们从前往后进行操作,记录每次得到的分数,取最大值即可。

AC code:

void solve(){
    cin >> n >> k >> d;
    for(int i = 1; i <= n; i ++) cin >> a[i];
    for(int i = 1; i <= k; i ++) cin >> b[i];

    int cnt = 0, ans = 0;
    for(int i = 1; i <= min(2*n, d); i ++){
        cnt = 0;
        for(int j = 1; j <= n; j ++){
            if(a[j] == j) cnt ++;
        }
        ans = max(ans, cnt + (d - i) / 2) ;
        int now = i % k + (i % k == 0) * k;
        for(int j = 1; j <= b[now]; j ++)
            a[j] ++;
    }
    cout << ans << endl;
}

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

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

相关文章

网络的七层结构模型

网络的七层结构模型&#xff0c;亦称OSI&#xff08;Open Systems Interconnection&#xff09;模型&#xff0c;包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。以下是各层的主要功能&#xff1a; 从下往上分别是1-7&#xff0c;总共7层&#xff0c;每一层…

【NI-RIO入门】记录和监控数据

1.内部存储器 可以使用常规文件 I/O VI 在嵌入式程序中以编程方式访问实时控制器的内部存储。文件路径结构根据控制器运行的实时操作系统 (RTOS) 的不同而有所不同。 该文件路径语法记录在教程&#xff1a;使用实时目标上的文件路径 中。 可以通过在Measurement & Automati…

全国5米土地利用遥感监测数据(GB/T 21010-2017)

全国5米土地利用遥感监测数据 全国5米土地利用类型遥感监测空间分布数据&#xff0c;是基于谷歌高分辨率影像数据人机交互解译形成&#xff0c;并使用POI数据、ROI数据进行数据修正。根据GB/T 21010-2017《土地利用现状分类》将土地利用类型分为12个一级类&#xff0c;73个二级…

SpringBoot 3.2.0 基于Logback定制日志框架

依赖版本 JDK 17 Spring Boot 3.2.0 工程源码&#xff1a;Gitee 日志门面和日志实现 日志门面&#xff08;如Slf4j&#xff09;就是一个标准&#xff0c;同JDBC一样来制定“规则”&#xff0c;把不同的日志系统的实现进行了具体的抽象化&#xff0c;只提供了统一的日志使用接…

SAP ME21/22/23N 创建增强ME_PROCESS_PO_CUST

增强ME_PROCESS_PO_CUST 二、实现方式&#xff1a;实现的方式可以有很多种&#xff0c;这里讲一下用BADI增强ME_PROCESS_PO_CUST实现的方式 第一步&#xff1a;执行事务码se19,在BAdI Name处输入&#xff1a;ME_PROCESS_PO_CUST&#xff0c;然后点“Create Impl”按钮 第二步…

鸿蒙列表,item组件封装传参问题?@ObjectLink 和@Observerd

鸿蒙列表渲染&#xff0c;封装内容组件&#xff0c;进行item传参会报错&#xff1f; class FoodClass {order_id: number 0food_name: string ""food_price: number 0food_count: number 0 }Entry Component struct Demo07 {State message: string Hello World…

C练习——不创建临时变量,交换两个数值

面试可能会问 方法一&#xff08;有缺陷&#xff0c;int 型数值有上限&#xff0c;ab可能超范围&#xff09; // int 型数值有上限&#xff0c;ab可能超范围 #include <stdio.h> int main() {int a 2;int b 3;printf("交换前&#xff1a;%d %d\n", a, b);a…

SpringBoot整合JWT+Spring Security+Redis实现登录拦截(一)登录认证

一、JWT简介 JWT 全称 JSON Web Token&#xff0c;JWT 主要用于用户登录鉴权&#xff0c;当用户登录之后&#xff0c;返回给前端一个Token&#xff0c;之后用户利用Token进行信息交互。 除了JWT认证之外&#xff0c;比较传统的还有Session认证&#xff0c;如何选择可以查看之前…

基于单片机的语音识别自动避障小车(论文+源码)

1.系统设计 此次基于单片机的语音识别自动避障小车&#xff0c;以STC89C52单片机作为系统的主控制器&#xff0c;利用超声波模块来实现小车与障碍物距离的测量并通过LCD液晶显示&#xff0c;当距离低于阈值时会通过WT588语音模块进行报警提示&#xff0c;并且小车会后退来躲避…

知识付费saas租户平台的核心功能设计:打造高效、个性化的学习体验

在在当今数字化时代&#xff0c;知识付费市场正在迅速崛起&#xff0c;而私域流量的概念也日益受到重视。私域流量指的是企业通过自有渠道获取的、能够自由支配的流量&#xff0c;这种流量具有更高的用户粘性和转化率。因此&#xff0c;打造一个基于私域流量的知识付费小程序平…

【C++】并发:异步操作

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍并发&#xff1a;异步操作。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不…

Astro无人车发布,颜值与功能兼修

介绍 Astro是云讷科技&#xff08;深圳&#xff09;有限公司推出的一款高度智能化和轻量化的小型无人车&#xff0c;其外观基于Tesla Cybertruck 1:10比例还原&#xff0c;支持ROS机器人软件系统开发和视觉SLAM、激光SLAM、路径规划、深度学习等应用。 在线文档&#xff1a; h…

【Unity6.0+AI】Sentis加载模型识别手写数字案例实现

按照国际惯例,看效果: 素材准备: 自己在PS中绘制黑底白字手写字体,导出jpg,尺寸28*28! 素材设置 基本步骤 准备工作:从 ONNX Model Zoo 下载手写识别 ONNX 模型文件 【下载模型】MNIST 手写数字识别模型 mnist-12.onnx,并将其拖入项目窗口的 Assets 文件夹。 【下载模…

亿赛通电子文档安全管理系统 user JNDI远程命令执行

产品简介 亿赛通电子文档安全管理系统&#xff0c;&#xff08;简称&#xff1a;CDG&#xff09;是一款电子文档安全加密软件&#xff0c;该系统利用驱动层透明加密技术&#xff0c;通过对电子文档的加密保护&#xff0c;防止内部员工泄密和外部人员非法窃取企业核心重要数据资…

Dbeaver如何连接Oceanbase?

Dbeaver & Oceanbase 一、新增驱动二、连接数据库 一、新增驱动 1、新建驱动 点击数据库 -> 驱动管理器 -> 新建 2、设置驱动 驱动名称可随意填写注意驱动类型要是Generichost:port填写实际的host和port 库中新增下载的oceanbase驱动jar包 二、连接数据库 1、找…

RK3568驱动指南|第八篇 设备树插件-第83章 设备树插件驱动分析实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

JAVA web面试大全(全)

摘自&#xff1a; Java技术栈 公众号 一、JVM篇 &#xff08;含&#xff1a;JVM类加载机制&#xff0c;JVM内存模型&#xff0c;垃圾收集机制&#xff0c;类字节码实现机制&#xff0c;JVM调优案例&#xff0c;GC日志详解等&#xff09; 二、Java并发编程 &#xff08;含&am…

微信小程序---API的promise化

1.实现API promise化 npm install --save miniprogram-api-promise1.0.4 2.构建miniprogram_npm&#xff0c;先把miniprogram_npm删除&#xff0c;再点击工具->构建npm 3. 4.页面使用 async getInfo(){const {data:res} await wx.p.request({method:GET,url:https://ap…

项目管理及系统规划

一、项目管理 1.软件工程基本概念 1.1 软件 &#xff08;1&#xff09;什么是软件&#xff1f; 软件一般认为由三部分组成&#xff1a; • 程序&#xff1a;在运行时&#xff0c;能提供所希望的功能和性能的指令集。 • 数据结构&#xff1a;使程序能够正确运行的数据结构 …