当前位置: 首页 > news >正文

Educational Codeforces Round 144 (Rated for Div. 2),C,D

C. Maximum Set

思路:

  1. 我们求最大数组,显然是L一直乘2,直到再乘2就越过区间位置。
  2. 我们说过,再乘一个2就不行,那么我们除一个2,换句话说,就是再乘一个4就不行了。
  3. 发现,我们可能有机会乘一个3,2<3<4
  4. 而且,我们至多乘一个3。(除去一个2,必须乘一个数,该数小于4并且大于2,才能使得除去2后再乘一个数,保证数组大小不变)
  5. 所以我们首先求出只由2的倍数组成的最大size,然后再求出插入一个3的情况(而对于每一组,3是可以放在除了第一个数的其他位置上的,所以每一组都有size种情况)
#include <bits/stdc++.h>
using namespace std;
#define ll     long long
const int mod = 998244353;int main()
{std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t;cin >> t;while (t--){int l, r;cin >> l >> r;int k = 0;while ((1 << k)*l <= r)++k; //k为可以乘的2的个数--k;ll ans = (r >> k) - l + 1; //当前ans为可以只乘2获得k+1个数的数if (k > 0){int cnt = (r >> (k - 1)) / 3 - l + 1;//少乘一个2,多乘一个3cnt = max(0, cnt); //cnt可能小于0ans = (ans + cnt * k % mod) % mod;}cout << k + 1 << ' ' << ans << endl;}return 0;
}

D. Maximum Subarray

思路:

  1. 先不考虑修改值x的影响
    1. 求n个数字的最大连续子串和,因为是连续的。我们可以用dp[i]表示包含i的最大连续子串,那么结果就是max(dp[i])。
    2. 如果我们已经知道dp[i-1],显然dp[i]=max( 0,dp[i-1] )  +a[i]。(dp[i-1]不一定是正数,如果是,我取你这个连续段,不是就不要)
  2. 考虑x后,题目要求给整个数组加m个x,减去n-m个x。
    1. 我们每次更新时,都要考虑当前数组加了几个x,如果已经加了m个,那我们这次就不是a[i]加x而是减x了。如果小于m个,那就还是a[i]+x。
    2. 所以我们设dp[i][j]表示包含第i个数字的前i个数字的最大连续子串和(其中给前i个数字加了且只加了jx。那么最大答案就是max(dp[i][j])
    3. 我们由2.1得出,求dp[i][j]是需要分类讨论的:
      1. 对于dp[i-1][j](即j<i时)我们规定了只加j个x,那么我们更新时,a[i]要减x。所以dp[i][j]=max(0,dp[i-1][j])+a[i]-x(注意,我可以不要dp[i-1][j]这段子串和,但是我前i-1个还是有j个数字加了x)
      2. 如果继承dp[i-1][j-1],那么我们a[i]+x,  dp[i][j]=max( dp[i][j],   max(0, dp[i-1][j-1])   +a[i] + x)
  3. 注意,题目要求必须加m个x,所以我们j不是都从0开始的,假如你dp[i][j]更新,那么后面还有max(0,m-j)个数字需要加上x,那么我们必须保证剩下的n-i个数字够加,即j+n-i>=m,所以j>=max(0,m-n+i)&&j<=m&&j<=i
#include <bits/stdc++.h>
using namespace std;
#define ll     long long
const int N = 2e5 + 10;ll dp[N][25];
int a[N];int main()
{std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t;cin >> t;while (t--){int n, m, x;cin >> n >> m >> x;for (int i = 1; i <= n; ++i)cin >> a[i];for (int i = 0; i <= n; ++i)for (int j = 0; j <= m; ++j)dp[i][j] = 0;ll ans = 0;for (int i = 1; i <= n; ++i)for (int j = max(0, m - n + i); j <= m && j <= i; ++j){if (j < i)dp[i][j] = max(0ll, dp[i - 1][j]) + a[i] - x;//j<i就有此更新,j==i则不用,因为前面最多更新j-1个if (j)dp[i][j] = max(dp[i][j], max(0ll, dp[i - 1][j - 1])+ a[i] + x);ans = max(ans, dp[i][j]);//答案就是max(dp[i][j]),不是dp[i][m],不要求m个都在我的最大连续子串和范围内更新}cout << ans << endl;}return 0;
}

相关文章:

Educational Codeforces Round 144 (Rated for Div. 2),C,D

C. Maximum Set 思路&#xff1a; 我们求最大数组&#xff0c;显然是L一直乘2,直到再乘2就越过区间位置。我们说过&#xff0c;再乘一个2就不行&#xff0c;那么我们除一个2&#xff0c;换句话说&#xff0c;就是再乘一个4就不行了。发现&#xff0c;我们可能有机会乘一个3&a…...

【redis学习篇】Redis三种持久化方式详解

官方文档 一、Redis持久性 Redis如何将数据写入磁盘 持久性是指将数据写入持久存储&#xff0c;如固态磁盘&#xff08;SSD&#xff09;。Redis提供了一系列持久性选项。其中包括&#xff1a; RDB&#xff08;快照&#xff09;&#xff1a;RDB持久性以指定的时间间隔执行数据…...

垃圾回收中的分代年龄

为什么CMS里的分代年龄是6而不是15 CMS (Concurrent Mark Sweep) 是一种基于分代的垃圾收集器&#xff0c;其中分代年龄指的是一个对象在年轻代中经历了多少次垃圾收集。在 CMS 中&#xff0c;当一个对象的分代年龄达到阈值时&#xff0c;就会被晋升到老年代中。 在 CMS 中&a…...

蓝桥杯-左移右移(2022国赛)

蓝桥杯-左移右移1、问题描述2、解题思路与代码实现2.1 方法一&#xff1a;使用LinkedList双向链表实现(50%)2.2 方法二&#xff1a;使用HashMap左右临界值实现(100%)1、问题描述 小蓝有一个长度为 N 的数组, 初始时从左到右依次是 1,2,3,…N 。 之后小蓝对这个数组进行了 M 次操…...

你还在手撸SQL?ChatGPT笑晕在厕所

文章目录你还在手撸SQL&#xff1f;ChatGPT笑晕在厕所一、背景二、面向Chat编程1. 数据库设计2. 建表语句3. 加中文注释4. 数据模拟5. 查询成绩6. 修改课程任课老师7. 删除课程8. 删除一个有关联数据的课程总结你还在手撸SQL&#xff1f;ChatGPT笑晕在厕所 一、背景 经典3表设…...

【Redis】Redis慢查询

文章目录慢查询记录慢查询两个配置参数修改配置参数慢查询日志慢查询记录 我们都知道像mysql等持久化数据库会有慢查询日志&#xff0c;其实Redis中也有慢查询日志的功能。慢查询就是系统在执行命令的前后计算每条命令的执行时间&#xff0c;如果超过我们预设的时间&#xff0c…...

【Kubernetes】第二十一篇 - k8s 项目部署流程和操作梳理

一&#xff0c;前言 上一篇&#xff0c;介绍了 k8s 污点和容忍度&#xff1b; 在了解前面 k8s 介绍之后&#xff0c;设计并完成一个前后端项目的部署和持续集成&#xff1b; 本篇&#xff0c;介绍基于 k8s 项目部署流程设计&#xff1b; 二&#xff0c;项目部署流程设计 本…...

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

搜索Query理解和语义召回技术 随着用户规模和产品的发展, 搜索面临着越来越大的 query 长尾化挑战,query 理解是提升搜索召回质量的关键。本次将介绍搜索在 query term weighting,同义词扩展,query 改写,以及语义召回等方向上的实践方法和落地情况。 1.面临问题:长尾 qu…...

【项目精选】基于SSH的医院在线挂号系统(视频+论文+源码)

点击下载源码 医院挂号系统主要用于实现医院的挂号&#xff0c;前台基本功能包括&#xff1a;用户注册、用户登录、医院查询、挂号、取消挂号、修改个人信息、退出等。 后台基本功能包括&#xff1a;系统管理员登录、医院管理、科室管理、公告管理、退出系统等。 本系统结构如…...

Pandas库:从入门到应用(一)

一、Pandas简介 pandas是 Python 的核⼼数据分析⽀持库&#xff0c;提供了快速、灵活、明确的数据结构&#xff0c;旨在简单、直观地处理关系型、标记型数据。pandas是Python进⾏数据分析的必备⾼级⼯具。 pandas的主要数据结构是 **Series(**⼀维数据)与 DataFrame (⼆维数据…...

MySQL中concat()、concat_ws()、group_concat()函数使用

在平时工作中&#xff0c;经常记不清或者记混他们的用法&#xff0c;正好有时间就记录一下&#xff5e;concat()函数语法&#xff1a;concat(str1, str2, int1...)例如执行sql:SELECT CONCAT(id,USERNAME,USER_PHONE) FROM tb_user输出查询结果为&#xff1a; 1test15216756754…...

【JavaEE初阶】第四节.文件操作 和 IO (上篇)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、文件 1.1 文件的概念 1.2 文件的路径二、 Java中文件系统操作 2.1 File类的属性 2.2 File类的构造方法 2.3 File类的方法 …...

开源免费堡垒机Teleport堡垒机的安装

准备:纯净centos7系统一个作为堡垒机,若干个linux系统或windows系统服务器作为受保护的服务器 堡垒机IP:192.168.1.15 服务器IP:192.168.1.10 1、teleport安装 下载地址: https://www.tp4a.com/static/download/teleport-server-linux-x64-3.6.4-b3.tar.gz xshell上传压缩…...

图形报表ECharts

图形报表ECharts1 图形报表ECharts1.1 ECharts简介-富客户端图表库ECharts缩写来自Enterprise Charts&#xff0c;商业级数据图表&#xff0c;是百度的一个开源的使用JavaScript实现的数据可视化工具&#xff0c;可以流畅的运行在PC和移动设备上&#xff0c;兼容当前绝大部分浏…...

便捷式储能电源核心技术--单相逆变器设计

便捷式储能电源核心技术–单相逆变器设计 1.逆变器的规格参数 输入电压直流400V输出电压交流rms220V开关频率10kHz滤波电容6.23uF控制方式单极性倍频2.视频学习链接 视频学习链接 3.主电路仿真设计...

Gamma矫正

Gamma 曲线Gamma校正被使用在8位RGB图中。用来解决在有限的存储空间中保存尽可能多的人类感受敏感的色彩内容。Gamma 矫正Gamma校正的方式就是采样时,和输出到显示器给人类看时,对亮度进行的调整.如采样时 Gamma1/2.2 调亮Gamma&#xff0c;如显示时 Gamma2.2 调暗Gamma实际亮度…...

速懂cookie,session,token

文章目录cookiesessiontoken区别cookie 是浏览器提供的一种能力&#xff0c;可以在每次发起请求前&#xff0c;带上cookie里面的内容&#xff08;一些key&#xff0c;value值&#xff09; 分类&#xff1a; 会话级cookie&#xff1a;默认情况&#xff0c;就是会话级cookie&…...

javaEE初阶 — HTML 中的常见标签

文章目录注释标签标题标签&#xff1a;h1 h6段落标签&#xff1a;p换行标签&#xff1a;br格式化标签图片标签&#xff1a;img1. img 的 alt 属性2. img 的 title 属性3. width 与 heigth 属性用来描述图的尺寸超链接标签&#xff1a;a表格标签列表标签表单标签1. from 标签2. …...

MySQL慢查询

2 慢查询 2.1 慢查询介绍 MySQL的慢查询日志是MySQL提供的一种日志记录&#xff0c;它用来记录在MySQL中响应时间超过阀值的语句&#xff0c;具体指运行时间超过long_query_time值的SQL&#xff0c;则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL&…...

tensorflow【import transformers 报错】

目录 一、安装 安装好了tensorflow,但是import时候报错&#xff1a; import transformers 报错 一、安装 &#xff08;1&#xff09;创建环境&#xff1a; conda create -n [name] python3.3-3.7 &#xff08;2&#xff09;激活环境&#xff1a; conda activate [name] …...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...