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

【学习笔记】CF1784F Minimums or Medians

首先让 n n n乘上 2 2 2

考虑枚举最终被删除的位置有哪些。 a i = 0 a_i=0 ai=0表示这个位置被删除, a i = 1 a_i=1 ai=1表示这个位置被保留,设满足 a i = 0 a_i=0 ai=0的前缀长度为 l l l l l l是偶数), p r e i pre_i prei表示 a i a_i ai的前缀和,则从左往右对于每个极长的被删除的连续段 [ l , r ] [l,r] [l,r],其能够被删除的充要条件是:

  • r − l + 1 r-l+1 rl+1是偶数
  • p r e r ≤ n − r ≤ p r e r + c n t pre_r\le n-r\le pre_r+cnt prernrprer+cnt

注意到式子满足单调性,因此我们只用判断除了前缀外的第一个连续段是否满足上界,以及最后一个连续段是否满足下界。

对于最后一个连续段,注意到 p r e r + n − r = n − 2 K pre_r+n-r=n-2K prer+nr=n2K,因此可以等价变形成 n − r ≥ n 2 − K n-r\ge \frac{n}{2}-K nr2nK,即 r ≤ n 2 + K r\le \frac{n}{2}+K r2n+K。这其实从另一个角度更好理解:第 i i i次操作删除的数不会超过 n 2 + i \frac{n}{2}+i 2n+i(见Alex_Wei的题解)。因此,对于 n 2 + K \frac{n}{2}+K 2n+K之后的数一定都是保留的,不会影响答案。

对于第一个连续段,发现 p r e r + c n t = l − 1 pre_r+cnt=l-1 prer+cnt=l1,因此枚举 l l l,得到 r ≥ n − l + 1 r\ge n-l+1 rnl+1,因此 [ l , n − l + 1 ] [l,n-l+1] [l,nl+1]全部被删除,而 [ n − l + 2 , n 2 + K ] [n-l+2,\frac{n}{2}+K] [nl+2,2n+K]只需满足连续段长度为偶数即可。

最后,我们注意到从 n n n个数中选 2 k 2k 2k个数,使得每一段为偶数的方案数为 ( n − k k ) \binom{n-k}{k} (knk),因此枚举 c n t , l cnt,l cnt,l后计算组合数:

  • l ≤ n 2 l\le \frac{n}{2} l2n,则:

∑ c n t ≤ K ∑ max ⁡ ( 2 c n t + 2 , n 2 − K + 1 ) ≤ l ≤ n 2 f ( K + l − n 2 − 1 , K − c n t − n 2 + l − 1 ) \sum_{cnt\le K}\sum_{\max(2cnt+2,\frac{n}{2}-K+1)\le l\le \frac{n}{2}}f(K+l-\frac{n}{2}-1,K-cnt-\frac{n}{2}+l-1) cntKmax(2cnt+2,2nK+1)l2nf(K+l2n1,Kcnt2n+l1)

其中 f ( n , m ) = ( n − m m ) f(n,m)=\binom{n-m}{m} f(n,m)=(mnm)

  • l > n 2 l>\frac{n}{2} l>2n,则:

∑ c n t ≤ K f ( n 2 + K − max ⁡ ( 2 c n t + 1 , n 2 ) , K − c n t ) \sum_{cnt\le K}f(\frac{n}{2}+K-\max(2cnt+1,\frac{n}{2}),K-cnt) cntKf(2n+Kmax(2cnt+1,2n),Kcnt)

对于第二部分,可以 O ( n ) O(n) O(n)计算;对于第一部分,利用 ( i + 1 j ) = ( i j ) + ( i j − 1 ) \binom{i+1}{j}=\binom{i}{j}+\binom{i}{j-1} (ji+1)=(ji)+(j1i)可以转化为求上指标减少 1 1 1时的答案,而下指标的指针移动是 O ( 1 ) O(1) O(1)的,因此总复杂度 O ( n ) O(n) O(n)

#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define fi first
#define se second
#define db double
#define inf 0x3f3f3f3f
using namespace std;
const int mod=998244353;
const int N=2e6+5;
ll fac[N],res,sm,ifac[N];
int n,K;
ll fpow(ll x,ll y=mod-2){ll z(1);for(;y;y>>=1){if(y&1)z=z*x%mod;x=x*x%mod;}return z;
}
void init(int n){fac[0]=1;for(int i=1;i<=n;i++)fac[i]=fac[i-1]*i%mod;ifac[n]=fpow(fac[n]);for(int i=n;i>=1;i--)ifac[i-1]=ifac[i]*i%mod;
}
ll binom(int x,int y){if(x<0||y<0||x<y)return 0;return fac[x]*ifac[y]%mod*ifac[x-y]%mod;
}
void add(ll &x,ll y){x=(x+y)%mod;
}
ll f(int n,int m){if(n<0||m<0||n<2*m)return 0;return binom(n-m,m);
}
int l,r;
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>K,n<<=1,init(n);if(K==0||n/2==K){cout<<1;return 0;}l=0,r=K-1,res=1,sm=1;for(int i=1;i<=K;i++){int nl=K-i-n/2+max(2*i+2,n/2-K+1)-1,nr=K-i-1;if(nl<=nr){while(l>nl)add(sm,binom(i-1,--l));while(r<nr)add(sm,binom(i-1,++r));while(l<nl)add(sm,-binom(i-1,l++));while(r>nr)add(sm,-binom(i-1,r--));add(sm,sm),add(sm,binom(i-1,nl-1)),add(sm,-binom(i-1,nr));add(res,sm);}add(res,f(n/2+K-max(2*i+1,n/2),K-i));}cout<<(res+mod)%mod;
}

相关文章:

【学习笔记】CF1784F Minimums or Medians

首先让 n n n乘上 2 2 2。 考虑枚举最终被删除的位置有哪些。 a i 0 a_i0 ai​0表示这个位置被删除&#xff0c; a i 1 a_i1 ai​1表示这个位置被保留&#xff0c;设满足 a i 0 a_i0 ai​0的前缀长度为 l l l&#xff08; l l l是偶数&#xff09;&#xff0c; p r e i pre…...

如何系列 如何玩转远程调用之OpenFegin+SpringBoot(非Cloud)

文章目录 简介原生Fegin示例基础契约日志重试编码器/解码器自定义解码器 请求拦截器响应拦截器表单文件上传支持错误解码器断路器指标metrics客户端 配合SpringBoot&#xff08;阶段一&#xff09;配合SpringBoot&#xff08;阶段二&#xff09;1.EnableLakerFeignClients2.Lak…...

Python学习第2天-安装pycharm

文章目录 前言一、下载二、安装1.选择安装目录2.安装配置 总结 前言 好用的工具可以极大地提高生产力&#xff0c;开发Python推荐使用jetbrains全家桶的pycharm。 一、下载 通过官网下载安装包。 二、安装 1.选择安装目录 2.安装配置 一路Next&#xff0c;安装完成 总结 …...

等电位连接器行业应用综合方案

等电位连接器的原理 等电位连接器的原理是利用气体放电管或压敏电阻等非线性元件&#xff0c;当连接器两端的电位差大于所限峰值电压时&#xff0c;连接器导通&#xff0c;迫使连接器两端不同接地体电位基本相等&#xff0c;消除接地体间放电现象&#xff0c;从而避免了由于地…...

内裤洗衣机有用吗?最好用的四款内衣洗衣机测评

相信很多小伙伴往往会因为懒而不想洗内衣&#xff0c;又或者洗内衣时经常会洗不干净&#xff01;这时就很有必要入手一台内衣洗衣机了&#xff0c;当我们洗完澡时&#xff0c;顺手把内衣放入洗衣机内&#xff0c;一键启动即可把我们的内衣洗得干干净净&#xff01;同时还可以为…...

足底筋膜炎能自愈吗

什么是足底筋膜炎 足底筋膜炎是足底的肌腱或者筋膜发生无菌性炎症所致。最常见症状是脚跟的疼痛与不适&#xff0c;压痛点常在足底近足跟处&#xff0c;有时压痛较剧烈&#xff0c;且持续存在。晨起时疼痛感觉明显&#xff0c;行走过度时疼痛感加剧&#xff0c;严重患者甚至站…...

牛客网刷题-(3)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

Centos7 安装 Etcd

Github上下载并解压安装包 wget https://github.com/coreos/etcd/releases/download/v3.4.10/etcd-v3.4.10-linux-amd64.tar.gz tar xzvf etcd-v3.4.10-linux-amd64.tar.gz mv etcd-v3.4.10-linux-amd64 /opt/etcd解压后是一些文档和两个二进制文件etcd和etcdctl。etcd是serve…...

powerjob基于springboot2.1.6.RELEASE版本的问题研究

项目背景&#xff1a;基于第三代框架的集成问题&#xff0c;如果对于powerjob不熟悉的朋友&#xff0c;可以参考官方文档PowerJob 简介 语雀 关于语雀 23 日故障的公告 (qq.com) 简单插一句&#xff0c;针对语雀文档故障的心得&#xff0c;数据恢复&#xff0c;完整性&#…...

【AI视野·今日CV 计算机视觉论文速览 第270期】Wed, 18 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Wed, 18 Oct 2023 Totally 60 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers 4K4D: Real-Time 4D View Synthesis at 4K Resolution Authors Zhen Xu, Sida Peng, Haotong Lin, Guangzhao He, Jiaming …...

uni-app小程序,uview-ui组件样式无法穿透修改的解决办法

1.首先设置以下选项.该选项的作用是让微信小程序允许样式穿透. 在需要改动的文件内加上 options: { styleIsolation: shared } 2.然后再使用vue的样式穿透写法. ::v-deep .类样式{} 或者 /deep/ .类样式{}...

Codeforces Round 515

Portal. C. Books Queries Portal. sol. D. Boxes Packing Portal. 把从左至右删物品转化为从右至左加物品。模拟即可。 #include <bits/stdc.h> using namespace std;const int maxn2e55; int a[maxn];int main() {int n,m,k;cin>>n>>m>>k;for(…...

Linux shell编程学习笔记15:定义数组、获取数组元素值和长度

一、 Linux shell 脚本编程中的数组概述 数组是一种常见的数据结构。跟大多数编程语言一样&#xff0c;大多数Linux shell脚本支持数组&#xff0c;但对数组的支持程度各不相同&#xff0c;比如数组的维度&#xff0c;是支持一维数组还是多维数组&#xff1f;再如&#xff0c;…...

k8s部署kafka,并使用zookeeper做注册中心

kafka在3.x版本后增加KRaft作为自己的注册中心&#xff0c;可以不依赖外部的zk&#xff1b;这里上一篇已经部署好了zk&#xff0c;kafka依然使用zk作为注册中心。 这里使用kafka是为集成zipkin收发微服务接口链路日志数据&#xff0c;只需要部署1个实列即可够用。 编写脚本yam…...

关于Nginx缓存

Nginx缓存 一般情况下系统用到的缓存有三种 服务端缓存&#xff1a; 缓存存在后端服务器&#xff0c;如redis代理缓存&#xff1a; 缓存存储在代理服务器或中间件&#xff0c;内容从后端服务器获取&#xff0c;保存在本地客户端缓存&#xff1a; 缓存在浏览器什么时候会出现3…...

为什么Open3D可视化TensorFlow张量速度超慢

问题描述 在使用Open3D可视化TensorFlow张量表示的点云时速度超慢 原因分析 可能是因为Open3D没有针对tf.Tensor做优化&#xff0c;也可能是tf.Tensor本身没有对张量的操作做优化&#xff0c;所以可能如果要在CPU中计算&#xff0c;numpy可能性能更好。 解决方案 open3d.u…...

使用element-UI Cascader组件,实现第一级单选选,第二级,第三级,子级可以多选

最近开发过程中&#xff0c;遇到需求测一个需求&#xff0c;就是级联选择器&#xff0c;需要多选&#xff1b;但是第一级是单选&#xff1b; 既要单选又要复选。参照网上内容&#xff0c;自己整理了一下功能实现&#xff1b; 如下图&#xff1a; 思路&#xff1a;1.把第一层的…...

防止消息丢失与消息重复——Kafka可靠性分析及优化实践

系列文章目录 上手第一关&#xff0c;手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么&#xff0c;以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析&#xff0c;打破面试难关 防止消息丢失与消息重复——Kafka可…...

【Linux】Linux中Crontab(定时任务)命令详解及使用教程

文章目录 前言1.使用yum命令安装Crontab&#xff1a;2.查看Crontab状态&#xff1a;3.添加定时任务&#xff1a;4.查看任务列表&#xff1a;5.Crontab相关命令&#xff1a;6.部分脚本无法执行问题&#xff1a;7.Crontab默认调度任务&#xff1a;8.注意清理系统用户的邮件日志&a…...

计算机毕设 flink大数据淘宝用户行为数据实时分析与可视化

文章目录 0 前言1、环境准备1.1 flink 下载相关 jar 包1.2 生成 kafka 数据1.3 开发前的三个小 tip 2、flink-sql 客户端编写运行 sql2.1 创建 kafka 数据源表2.2 指标统计&#xff1a;每小时成交量2.2.1 创建 es 结果表&#xff0c; 存放每小时的成交量2.2.2 执行 sql &#x…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...