CF2149题解

A. Be Positive

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 1e4;
int T;
int n,a[NN];
int cnt1,cnt2;
void solve(){cnt1 = cnt2 = 0;cin >> n;for(int i = 1; i <= n; ++i){cin >> a[i];if(a[i] == -1) ++cnt1;else if(a[i] == 0) ++cnt2;}cout << cnt2 + (cnt1&1) * 2 << '\n';
} 
int main(){cin >> T;while(T--){solve();}
} 

B. Unconventional Pairs

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 2e5 + 8;
int t,n;
int a[NN];
void solve(){cin >> n;for(int i = 1; i <= n; ++i){cin >> a[i];}sort(a+1,a+1+n);int ans = 0;for(int i = 1; i <= n/2; ++i){ans = max(a[i*2]-a[i*2-1],ans);}cout << ans << '\n';
}
int main(){ios::sync_with_stdio(false),cin.tie(0);cin >> t;while(t--){solve();}
}

C. MEX rose

可以乱改求 \(mex\)

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 2e5 + 8;
int t;
int n,k;
int a[NN];
void solve(){int cnt1 = 0,cnt2 = 0;cin >> n >> k;for(int i = 1; i <= n; ++i){cin >> a[i];if(a[i] == k) ++cnt1;}sort(a+1,a+1+n);for(int i = 1; i <= n; ++i){if(a[i] < k && a[i] != a[i-1]) ++cnt2;}cout << max(cnt1,k-cnt2) << '\n';
}
int main(){ios::sync_with_stdio(false),cin.tie(0);cin >> t;a[0] = -1;while(t--){solve();}
} 

D. A and B

求让一种字符连在一起的最小步数

我们首先提取出 \(a,b\) 两种字符的下标组,并且重新编辑位置为该字母前面与它不同的字符数量

然后我们最后的问题就变为了每一次操作 \(+1/-1\) 求最小的使得所有数相同的操作次数。

这个问题十分经典,就是让所有数变成中位数即可

code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int NN = 2e5 + 8;
int t,n;
int a[NN],b[NN],lena,lenb;
string s;
void solve(){cin >> n; cin >> s;lena = lenb = 0;for(int i = 0,dela = 0,delb = 0; i < n; ++i){if(s[i] == 'a'){a[++lena] = i-dela;++dela;}else{b[++lenb] = i-delb;++delb;}}int mda = (lena + 1) / 2,mdb = (lenb + 1) / 2;ll ansa = 0,ansb = 0;for(int i = 1; i <= lena; ++i){ansa += abs(a[i]-a[mda]);}for(int i = 1; i <= lenb; ++i){ansb += abs(b[i]-b[mdb]);}cout << min(ansa,ansb) << '\n';
}
int main(){ios::sync_with_stdio(false),cin.tie(0);cin >> t;while(t--){solve();}
} 

E. Hidden Knowledge of the Ancients

求长度为 \([l,r]\) 的有 \(k\) 种数的子区间的个数

第一种方法是两套双指针,然后对于每一个 \(l\),维护从 \(l\) 开始有 \(k\) 种数的最小区间和最大区间

本人写了第二种复杂很多的算法,我们可以发现,一个对于一个区间元素种类能够做出贡献,当且仅当在这个包含它的区间内并且在它前面没有和它相同的数(相当于一个矩形加)

然后我们需要找到有 \(k\) 种元素的区间个数,这个可以通过离线询问 + 扫描线解决

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 2e5 + 8;
int t;
struct Seg{int l,r;int maxn,minn,tag;#define ls(x) (x << 1)#define rs(x) (x << 1 | 1)#define l(x) tree[x].l#define r(x) tree[x].r#define maxn(x) tree[x].maxn#define minn(x) tree[x].minn#define tag(x) tree[x].tag
}tree[NN << 2];
void addlz(int x,int num){maxn(x) += num; minn(x) += num;tag(x) += num;
}
void pushdown(int x){addlz(ls(x),tag(x)), addlz(rs(x),tag(x));tag(x) = 0;
}
void pushup(int x){maxn(x) = max(maxn(ls(x)),maxn(rs(x)));minn(x) = min(minn(ls(x)),minn(rs(x)));
}
void build(int x,int l,int r){l(x) = l;r(x) = r;minn(x) = maxn(x) = tag(x) = 0;if(l == r) return;int mid = (l + r) / 2;build(ls(x),l,mid);build(rs(x),mid+1,r);return;
}
void modify(int x,int l,int r,int num){if(l <= l(x) && r(x) <= r){addlz(x,num);return;}int mid = (l(x) + r(x)) / 2;pushdown(x);if(l <= mid) modify(ls(x),l,r,num);if(mid+1 <= r) modify(rs(x),l,r,num);pushup(x);
}
int findl(int x,int num){if(l(x) == r(x)) return maxn(x) == num ? l(x) : -1;pushdown(x);if(maxn(ls(x)) >= num) return findl(ls(x),num);else return findl(rs(x),num);
}
int findr(int x,int num){if(l(x) == r(x)) return minn(x) == num ? l(x) : -1;pushdown(x);if(minn(rs(x)) <= num) return findr(rs(x),num);else return findr(ls(x),num);
}int n,k,l,r;
int a[NN];
int pre[NN],b[NN],lenb;
struct Oper{int pos,num;
};
vector<Oper> op[NN];
void solve(){long long ans = 0;cin >> n >> k >> l >> r;build(1,1,n);op[0].clear();for(int i = 1; i <= n; ++i){cin >> a[i];b[i] = a[i];pre[i] = 0;op[i].clear();}sort(b+1,b+1+n);lenb = unique(b+1,b+1+n) - b - 1;for(int i = 1; i <= n; ++i) a[i] = lower_bound(b+1,b+1+lenb,a[i]) - b;for(int i = 1; i <= n; ++i){op[pre[a[i]]].push_back({i,1});op[i].push_back({i,-1});pre[a[i]] = i;}for(int i = 0; i <= n; ++i){int fr = findr(1,k),fl = findl(1,k);if(i != 0 && fr != -1 && fl != -1){fr = min(i+r-1,fr);fl = max(i+l-1,fl);ans += max(0,fr - fl + 1);}for(int j = 0; j < op[i].size(); ++j){modify(1,op[i][j].pos,n,op[i][j].num);}}cout << ans << '\n';
}int main(){ios::sync_with_stdio(false),cin.tie(0);cin >> t;while(t--){solve();} 
}

F. Nezuko in the Clearing

tag:二分答案

我们首先可以贪心地发现,如果说我们知道最后的休息次数,那么我们只需要让每次的连续走的步数更加平均即可,这样一定就可以让花费的生命值最小

那么我们知道了验证方法,我们进行二分答案即可

code
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int NN = 0;
int t,h,d;
bool check(int num){//二分休息次数 int stlen = d / (num+1), add = d % (num+1);return num + h - (num + 1) * (stlen * (stlen + 1) / 2) - add * (stlen + 1) >= 0;
}
void solve(){cin >> h >> d;int st = 0;if(h == 1) st = 1;else --h;int ans = 0,l = 0,r = d;while(l <= r){int mid = (l + r) / 2;if(check(mid)) ans = mid,r = mid - 1;else l = mid + 1;}cout << ans + st + d << '\n';
}
signed main(){ios::sync_with_stdio(false),cin.tie(0);cin >> t;while(t--){solve();}
}

G. Buratsuta 3

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

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

相关文章

教育网站建设改版湘潭做网站 z磐石网络

网站爬虫&#xff08;Web Scrapers&#xff09;是一种自动化工具&#xff0c;用于抓取网页上的数据。虽然合法的搜索引擎爬虫有助于提升网站的可见度&#xff0c;但恶意爬虫可能带来数据盗窃、版权侵犯等问题&#xff0c;甚至造成服务器过载。本文将探讨如何有效预防网站受到恶…

网站建设 企业文化东莞南城网站开发公司

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System

经营地址怎么在国税网站做更改网线水晶头制作过程

最近在看深入理解计算机系统这本书&#xff0c;上面提到了在32位机器和64机器中int类型都占用4个字节。后来&#xff0c;查了The C Programming language这本书&#xff0c;里面有一句话是这样的&#xff1a;Each compiler is free to choose appropriate sizes for its own ha…

咸阳做网站的公司网络有限公司简介

使用命令下载&#xff1a;参考&#xff1a;解决nvidia-smi报错&#xff1a;NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.-CSDN博客

2025 年压滤机厂家最新推荐排行榜:隔膜压滤机,污泥压滤机,真空压滤机,板框压滤机,带式压滤机优质企业权威评选及选购指南

在工业固液分离领域持续升级的当下,压滤机作为核心设备,已深度渗透化工、矿山、环保等多元场景,隔膜、污泥、真空等细分类型设备的性能需求愈发差异化。然而当前市场品牌繁杂,产品在过滤精度、能耗控制、适配性等方…

浙江网站开发网络营销方式举例

文章目录一、环境准备1. 安装node2. 配置镜像二、安装Vue CLI2.1. 查看当前vuecli版本2.2. 安装最新版本2.3. 安装指定版本三、创建web项目3.1. 指定创建的项目名称3.2. 安装序列图3.3. 安装序列图简述一、环境准备 声明&#xff1a;命令均在在cmd窗口执行 1. 安装node 2. 配置…

嘉定专业网站建设企业网站源码去一品资源网

之前写了《Linux配置IP-SAN&#xff08;iSCSI&#xff09;》&#xff0c;现在简单记录Windows配置IP-SAN&#xff08;iSCSI&#xff09;&#xff0c;基本过程都是一样的。一些原理请参考《Linux配置IP-SAN&#xff08;iSCSI&#xff09;》&#xff0c;更详细一些。 目录 一、确…

2025 年搅拌器厂家最新推荐排行榜:涵盖立式、不锈钢、侧入式等多类型设备,深度解析实力厂商

当前搅拌器市场厂商众多,产品类型繁杂,质量与性能参差不齐,企业在采购时常面临选型难、辨优劣的困境。部分产品存在材料劣质、效率低下等问题,不仅影响生产进度,还可能增加成本损耗。为帮助企业精准筛选优质搅拌器…

东营网站建设推广哪家好湖南住房和城乡建设网门户网站

本章重点 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 几个经典的笔试题 柔性数组 1. 为什么存在动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0}…

越秀营销型网站建设wordpress博客模板seo

使用Vue作为前端开发技术栈的同学&#xff0c;在使用Vue时都会有一些好奇&#xff1a;为啥我们的响应式变量要在data中定义&#xff1f;Vue是如何监听到变化&#xff0c;实现响应式的&#xff1f;这次我们就来探究一下&#xff0c;Vue2的响应式原理。 对象的响应式 修改属性描…

免费dede企业网站模板做企业平台的网站有哪些方面

考试周连考不复习就挂科了 一直没更新十分抱歉 今天开始在周日前补回来 491.递增子序列 在90.子集I中我们是通过排序&#xff0c;再加一个标记数组来达到去重的目的。 而本题求自增子序列&#xff0c;是不能对原数组进行排序的&#xff0c;排完序的数组都是自增子序列了。 …

电子商务网站开发步骤西安家政公司网站建设

一、安装步骤1、使用whichgcc命令发现gcc没有安装2、拷贝gcc-3.2.2-5.i386.rpm 尝试安装说明在这之前还需要先装binutils、cpp、glibc-devel这三个包3、拷贝binutils-2.13.90.0.18-9.i386.rpmcpp-3.2.2-5.i386.rpmglibc-devel-2.3.2-11.9.i386.rpm 到install目录分别安装rpm -i…

网站界面风格设计描述网站开发的实验心德

工厂方法模式 1&#xff09;问题 简单工厂模式 当需要引入新产品时&#xff0c;由于静态工厂方法通过所传入参数的不同来创建不同的产品&#xff0c;需要修改工厂类的源代码。 2&#xff09;概述 针对不同的产品提供不同的工厂&#xff0c;系统提供一个与产品等级结构对应…

2025 年最新推荐承烧板厂家排行榜:筛选优质企业,破解采购难题,赋能高温工业生产

当前,高温工业领域对承烧板的需求持续攀升,然而市场上承烧板制造商良莠不齐,部分企业为降低成本,在原材料选用和生产工艺上敷衍了事,导致产品在高温环境下易出现开裂、变形等问题,严重影响生产效率,还带来安全隐…

网站开发技术的选择做门户网站的好处

线程休眠:让执行的线程暂停一段时间&#xff0c;进入计时等待状态。 方法:staticvoid sleep(long millis) 调用sleep后&#xff0c;当前线程放弃CPU,在指定时间段之内&#xff0c;sleep所在线程不会获得执行的机会。 此状态下的线程不会释放同步锁/同步监听器. 该方法更多的用…

一文看懂AI SoC芯片

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087什么是SoC?作为智能手机、汽车电子、人工智能、工业控制等领域的“…

浙江省网站建设公司黄骅广信建设集团网站

1.为什么自己写一个时间片调度呢 a. 网上其实有很多成熟的时间片调度例程, 包括我最开始参加工作也是抄的网上的例程(还记得当时领导问我看明白了它的调度原理吗, 作为一个自学刚参加工作的我来说, 看懂别人的意思真的很难, 当时只能含糊其词的说看得差不多) b. 在我看来网上的…

专业商城网站建设价格低装修设计网页版

题目 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat&qu…

桂林北站地址wordpress 多备份

DB Query Analyzer中的事务管理在DB2中的应用 马根峰 ( 广东联合电子收费股份有限公司, 广州 510300) 摘要 事务控制是数据库应用系统中的关键技术之一&#xff0c;概述了事务控制的概念以及《DB Query Analyzer》中的事务控制&#xff0c;以一个具体的实例&#xff0c;给…

北京免费建站天水市建设银行官方网站

前言 CSS&#xff08;层叠样式表&#xff09;是网页设计和开发中不可或缺的一部分。它用于描述网页的视觉表现&#xff0c;使页面不仅实现功能&#xff0c;还能提供吸引人的用户体验。本文将介绍 CSS 的基本概念、语法、选择器及其在提升网页美观性方面的重要性。 什么是 CSS&…