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

【题解】Codeforces Round 975 (Div. 2) A~E

A. Max Plus Size

分别假设答案为取第偶数位的最大值和取第奇数位的最大值两种情况, 取更优解.

取偶数位的最大值时, 把所有其他都偶数位都取上. 奇数同理.

code:

int solve(int _) {int n;cin >> n;vector<int>a(n + 1);int Maxj = 0, Maxo = 0;for (int i = 1; i <= n; ++i) {cin >> a[i];if (i % 2)Maxj = max(Maxj, a[i]);else Maxo = max(Maxo, a[i]);}int ans2 = n / 2;int ans1 = n / 2 + n % 2;return max(ans1 + Maxj, ans2 + Maxo);
}

B. All Pairs Segments

先把输入的 a 数组 sort 一下.

对于每个 a i a_i ai 分别由有 a i + 1 a_{i+1} ai+1 ~ a n a_n an, 共 n − i n-i ni 个区间有贡献, 只用从前往后遍历每个 a a a, 实时更新当前有多少个区间在做贡献.

当前的总有效区间为 n o w now now 个, 加入第 i i i 个节点时.

  1. 新增了以他为左端点的 n − i n-i ni 个区间, n o w + = n − i now+=n-i now+=ni.
    所以 a [ i ] a[i] a[i] 这个点被 n o w now now 个区间覆盖.
  2. 减少了以他为右端点的 i − 1 i-1 i1 个区间, n o w − = i − 1 now-=i-1 now=i1.
    所以 a [ i ] + 1 a[i]+1 a[i]+1 ~ a [ i + 1 ] − 1 a[i+1]-1 a[i+1]1 n o w now now 个区间覆盖.

注意, a[n] 是一个特例.

code:

#define int long long
void solve(int _) {int n, q;cin >> n >> q;vector<int>a(n + 1);for (int i = 1; i <= n; ++i) {cin >> a[i];}map<int, int>ma;sort(1 + a.begin(), a.end());int now = 0;for (int i = 1; i <= n; ++i) {now += n - i;ma[now]++;now -= i - 1;if (i != n)ma[now] += a[i + 1] - a[i] - 1;}while (q--) {cin >> n;cout << ma[n] << " ";}cout << endl;
}

C. Cards Partition

** 答案没有二分性**, fk, 赛时写了一个小时的二分.

答案的范围为 [ 1 − n ] [1-n] [1n], 只用枚举每个答案, 然后 O ( 1 ) O(1) O(1) 做 check.

check:

对于答案 x x x, 也就是这些牌要排成 x x x 行.

先求至少要多少列 c l m clm clm;

  1. c l m > 最多元素的个数 clm > 最多元素的个数 clm>最多元素的个数, 因为这些不能在同一列.
  2. 如果 M a x e l e m e n t ∗ X > s u m o f a l l e l e m e n t Max_element * X > sum_of_all_element MaxelementX>sumofallelement, 那就是所有牌摆 M a x e l e m e n t Maxelement Maxelement 列用不完, 还要加新列, 此时 i128 clm = max(Max, sum / i + !!(sum % i));

c l m clm clm 求出来了, 检查空的位置是否小于 k k k 就好, 只要有解且 k k k 够用, 就一定能填出来.

code:

#define int long long
#define i128 __int128
int solve(int _) {int n, k;cin >> n >> k;vector<int>a(n + 1);i128 sum = 0;int Max = 0;for (int i = 1; i <= n; ++i) {cin >> a[i];Max = max(Max, a[i]);sum += a[i];}sort(1 + a.begin(), a.end());int ans = 0;for (int i = 1; i <= n; ++i) {i128 clm = max(Max, sum / i + !!(sum % i));if (clm * i - sum <= k)ans = i;}return ans;
}

D. Speedbreaker

注意到: 所有小于 t t t 的数都包含在一个长度不大于 t t t 的区间内时, 对于这个区间, 一定有解 ( 可以从这个区间的最小值开始往两边扩散, 哪边吉往哪边去).

那么对于所有的 t = i t=i t=i 都可以维护一个上述区间. 遍历每一个区间: 此时对于这个区间 [ l , r ] [l,r] [l,r], 可行的答案是 [ m a x ( 1 , r − t + 1 ) , m i n ( n , l + t − 1 ) ] [max(1,r-t+1),min(n,l+t-1)] [max(1,rt+1),min(n,l+t1)]( 分别从区间两头往另一头走长度为 t t t 的区间).

对于所有区间求并集即可. 注意到如果数组中没有小于等于 t 的数, 那它对应的区间就是全部.

code:

int n, a[200010];
int solve(int _) {cin >> n;for (int i = 1; i <= n; ++i) {cin >> a[i];}vector<pair<int, int>>tle(n + 1);tle[n] = {1, n};for (int i = n - 1; i >= 1; --i) {auto [l, r] = tle[i + 1];while (l <= r && a[l] > i)l++;while (r >= l && a[r] > i)r--;tle[i] = {l, r};if (r - l + 1 > i)return 0;}vector<int>pre(n + 2, 0);int cnt = 0;for (int i = 1; i <= n; ++i) {auto [l, r] = tle[i];if (l <= r) {cnt++;int ll = min(l, max(1, r - i + 1));int rr = max(r, min(n, l + i - 1));pre[ll]++;pre[rr + 1]--;}}int ans = 0;for (int i = 1; i <= n; ++i) {pre[i] += pre[i - 1];if (pre[i] == cnt)ans++;}return ans;
}

E. Tree Pruning

所有叶子与根的距离 <=> 保留所有 d e e p deep deep 相同的节点. 于是可以对这个树跑一个层次 bfs, 对每层的答案取 m i n min min.

在每层:

  1. 维护去除高于它的点, 要删除多少边:
    即对每一个高于它的点 x,从 x 往上回溯, 直到到 x 的某个祖先, 且这个祖先有一个深于 x 的孙子, 停止. 同时个每个边打个 id, 回溯到已删除的 边也要停止.
  2. 低于它要删除多少边: 就是这层所有节点的 son 的数量.

code:

#define int long long
#define id(a,b) ((a)*1000000+(b))
const int Maxn = 5e5 + 10;int n, v, u;
int dep[Maxn], son[Maxn], ans[Maxn], fa[Maxn], Maxdep[Maxn];
vector<int>eg[Maxn];
set<int>se;
void getdep(int x, int deep) {dep[x] = deep;Maxdep[x] = deep;for (auto c : eg[x]) {if (c == fa[x])continue;fa[c] = x;getdep(c, deep + 1);Maxdep[x] = max(Maxdep[x], Maxdep[c]);}
}
int getson(int x) {son[x] = 0;for (auto c : eg[x]) {if (c == fa[x])continue;son[x] += getson(c);}return son[x] + 1;
}
int done(int x, int fromdep) {if (x == 1)return 0;if (fromdep < Maxdep[x])return 0;if (se.count(id(x, fa[x])))return 0;se.emplace(id(x, fa[x]));return done(fa[x], fromdep) + 1;
}
int solve(int _) {cin >> n;se.clear();for (int i = 1; i <= n; ++i) {eg[i].clear();Maxdep[i] = 0;}for (int i = 1; i < n; ++i) {cin >> v >> u;eg[u].emplace_back(v);eg[v].emplace_back(u);}int ans = n - 1;getdep(1, 1);getson(1);for (int i = 1; i <= n; ++i) {debug(i, fa[i], son[i])}int last = 1, now = 0, ended = 0, pre_ended = 0;deque<int>q;q.emplace_back(1);while (!q.empty()) {int tis = q.front();q.pop_front();if (dep[tis] != last) { // 上一层删除完了,ans = min(ans, ended + now);debug(last, ended, now)now = 0;ended += pre_ended;pre_ended = 0;last = dep[tis];}now += son[tis];if (eg[tis].size() == 1) {int tp = done(tis, dep[tis]);debug(tis, tp);pre_ended += tp;}for (auto c : eg[tis]) {if (fa[tis] == c)continue;q.emplace_back(c);}}ans = min(ans, ended + now);return ans;
}

相关文章:

【题解】Codeforces Round 975 (Div. 2) A~E

A. Max Plus Size 分别假设答案为取第偶数位的最大值和取第奇数位的最大值两种情况, 取更优解. 取偶数位的最大值时, 把所有其他都偶数位都取上. 奇数同理. code: int solve(int _) {int n;cin >> n;vector<int>a(n 1);int Maxj 0, Maxo 0;for (int i 1; i …...

如何搞定视频裁剪?新手小白零基础剪辑,分享5个实用工具!

现在是一个短视频盛行的时代&#xff0c;几乎每个人都掌握了视频剪辑技能。 不管是因为工作也好&#xff0c;生活也罢&#xff0c;只要有视频&#xff0c;那么就一定会用到视频剪辑软件。视频裁剪已经难不倒普通人了&#xff0c;借助专业的视频裁剪工具&#xff0c;任何人都可…...

HttpClientHandler 详解及使用

在现代网络编程中&#xff0c;HttpClientHandler 是一个至关重要的组件&#xff0c;它提供了对 HTTP 请求的底层配置和控制。本文将详细介绍 HttpClientHandler 的核心概念、配置选项以及如何在实际应用中使用它。 1. 什么是 HttpClientHandler&#xff1f; HttpClientHandle…...

基于两分支卷积和 Transformer 的轻量级多尺度特征融合超分辨率网络 !

当前的单图像超分辨率&#xff08;SISR&#xff09;算法有两种主要的深度学习模型&#xff0c;一种是基于卷积神经网络&#xff08;CNN&#xff09;的模型&#xff0c;另一种是基于Transformer的模型。前者利用不同卷积核大小的卷积层堆叠来设计模型&#xff0c;使得模型能够更…...

Font Awesome 手势图标

Font Awesome 手势图标 Font Awesome 是一个广泛使用的图标库,它为网页设计师和开发者提供了一系列高质量的图标。这些图标涵盖了从基本的网页元素到复杂的符号和手势,可以轻松地集成到各种网页和应用中。在本文中,我们将重点介绍 Font Awesome 中的手势图标,探讨它们的应…...

基于Hive和Hadoop的哔哩哔哩网站分析系统

本项目是一个基于大数据技术的哔哩哔哩平台分析系统&#xff0c;旨在为用户提供全面的哔哩哔哩视频数据和深入的用户行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xf…...

Augular 学习步骤建议

Angular 是一个由 Google 维护的开源 Web 应用框架&#xff0c;用于开发单页面客户端应用程序。以下是学习 Angular 的建议步骤&#xff1a; 1. 了解基础&#xff1a; 熟悉 HTML、CSS 和 JavaScript 的基础知识。 了解 TypeScript&#xff0c;因为 Angular 应用程序主要使用…...

突破自闭症治疗进展报道:改变孩子和家庭的未来

在这个充满挑战与希望的时代&#xff0c;自闭症这一复杂的神经发育障碍&#xff0c;长久以来一直是无数家庭心中的痛。然而&#xff0c;在星贝育园这片充满爱与科学的土地上&#xff0c;一场关于自闭症治疗的深刻变革正在悄然发生&#xff0c;它不仅为孩子们点亮了未来的希望之…...

我想注册一批账号做矩阵,需要每次注册都切换一个ip吗

在注册一批账号以建立矩阵时&#xff0c;切换IP地址是一个重要的考虑因素&#xff0c;尤其是为了避免被平台识别为同一用户或多重账户&#xff0c;从而减少账号被封的风险。以下是一些建议&#xff0c;帮助你有效管理IP地址和账号注册过程&#xff1a; 1. 切换IP地址的必要性 …...

linux系统的常用命令

微服务Linux解析部署使用全流程 Linux安装vim超详细教程 Linux安装JDK及配置环境变量超详细教程 Linux安装tomcat及配置环境变量超详细教程 目录 1、ls&#xff1a;列出目录内容。 2、cd&#xff1a;改变当前目录。 3、pwd&#xff1a;打印当前工作目录的路径 4、mkdir…...

无锡卓瓷X哲讯智能科技,SAP项目正式启动!

在数字化浪潮的推动下&#xff0c;高精密陶瓷行业的领军企业—无锡卓瓷科技有限公司&#xff0c;携手哲讯智能科技有限公司近期启动SAP&BI项目&#xff0c;以打造行业领先的数字化管理平台。这一战略举措标志着无锡卓瓷在数字化转型的道路上迈出了坚实的一步。 无锡卓瓷—…...

Python从入门到精通-基础篇

1.Python的起源 1989年&#xff0c;为了打发圣诞节假期&#xff0c;Gudio van Rossum&#xff08;吉多范罗苏姆&#xff08;龟叔&#xff09;&#xff09;决心开发一个新的解释程序&#xff08;Python雏形&#xff09; 1991年&#xff0c;第一个Python解释器诞生 Python这个…...

系统架构设计师-知识产权与标准化

目录 一、保护范围与对象 二、保护期限 三、知识产权人确定 四、侵权判断 五、标准化 一、保护范围与对象 知识产权是权利人依法就下列课题享有的专有权利&#xff1a; &#xff08;一&#xff09;作品&#xff08;著作&#xff09; &#xff08;二&#xff09;发明、实用…...

Python安装流程(Windows + MAC)

目录 Windows 版 1.下载Python 2.开始安装 3.配置环境变量 4.测试python是否成功安装 MAC版 1.下载Python 2.开始安装 Windows 版 1.下载Python 进入Python官网下载&#xff1a;&#xff08;Python更新频繁&#xff0c;下载最新版即可&#xff0c;安装流程一致&#x…...

在 Qt 项目中使用 spdlog 的全攻略

目录 1. 准备工作&#xff1a;安装 spdlog 方法一&#xff1a;使用 CMake 的 FetchContent&#xff08;推荐&#xff09; 方法二&#xff1a;手动下载并添加到项目中 2. 在 Qt 项目中集成 spdlog a. 初始化 spdlog b. 在 Qt 的各个部分使用 spdlog 3. 基本使用示例 4. …...

vue的el-button防止重复点击

这样效果仅生效在按钮上...

消息中间件 Kafka 快速入门与实战

1、概述 最近感觉上班实在是太无聊&#xff0c;打算给大家分享一下Kafka的使用&#xff0c;本篇文章首先给大家分享三种方式搭建Kafka环境&#xff0c;接着给大家介绍kafka核心的基础概念以及Java API的使用&#xff0c;最后分享一个SpringBoot的集成案例&#xff0c;希望对大…...

【Unity服务】如何使用Unity Version Control

Unity上的线上服务有很多&#xff0c;我们接触到的第一个一般就是Version Control&#xff0c;用于对项目资源的版本管理。 本文介绍如何为项目添加Version Control&#xff0c;并如何使用&#xff0c;以及如何将项目与Version Control断开链接。 其实如果仅仅是对项目资源进…...

C++ --- 静态多态和动态多态

静态多态和动态多态 静态多态动态多态总结 静态多态和动态多态是面向对象编程中多态性的两种主要形式&#xff0c;它们在实现方式、绑定时机以及应用场景上存在一些显著的区别。 静态多态 静态多态&#xff0c;也被称为编译时多态&#xff0c;是指在编译阶段就已经确定了对象调…...

华为vxlan

VXLAN是什么&#xff1f;VXLAN与VLAN之间有何不同&#xff1f; - 华为...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...