「杂题乱刷2」CF1738E Balance Addicts

news/2025/2/13 23:06:35/文章来源:https://www.cnblogs.com/wangmarui/p/18714561

题目链接

CF1738E Balance Addicts

解题思路

发现我们可以直接枚举左端点 \(L\),那么此时显然右端点 \(R\) 的取值范围也随之确定,那么此时 \(L\) 能往右移当且仅当 \(L + 1<R\)\(a_{L+1} = 0\)\(R\) 能往左移当且仅当 \(L<R - 1\)\(a_{R-1} = 0\)

那么 \(L,R\) 的取值范围确定后,此时会有以下两种情况:

  • \(L,R\) 的取值范围不相交,此时显然枚举分的段数 \(k\) 然后两端组合数部分相乘即可。

  • \(L,R\) 的取值部分相交,此时直接让两个取值范围一定,然后枚举分的段数 \(k\),此时显然 \(k\) 为偶数,依然组合数计算即可。

由于双指针,时间复杂度 \(O(n)\)

参考代码

ll n;
ll a[1000010];
ll L,R;
ll pre[1000010],suf[1000010];
ll ans;
ll l,r;
void solve()
{ans=1;cin>>n;forl(i,1,n)cin>>a[i];forl(i,1,n)pre[i]=pre[i-1]+a[i];suf[n+1]=0;forr(i,n,1)suf[i]=suf[i+1]+a[i];R=n;forL(L,1,n,L<R){while(L<R-1 && suf[R]<pre[L])R--;if(pre[L]==suf[R]){l=L,r=R;while(L<R-1 && suf[R-1]==pre[L])R--;while(L+1<R && suf[R]==pre[L+1])L++;ll S=0;if(L==R-1 && pre[L]==suf[L+1]){forll(k,0,r-l+1,2)S=(S+C(r-l+1,k))%mod;ans=(ans*S)%mod;continue;}forl(k,0,min(L-l+1,r-R+1))S=(S+C(L-l+1,k)*C(r-R+1,k)%mod)%mod;ans=(ans*S)%mod;}}cout<<ans<<endl;
}

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

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

相关文章

windows知道服务器的内网IP地址如何查看服务器的计算机名称

windows知道服务器的内网IP地址如何查看服务器的计算机名称windows知道服务器的内网IP地址如何查看服务器的计算机名称 nbtstat百度百科 https://baike.baidu.com/item/nbtstat/7578115 windows在局域网内查看ip地址对应的计算机名或者根据计算机名查ip https://blog.csdn.net/…

C++ 使用MIDI库演奏《晴天》

那些在MIDI库里徘徊的十六分音符 终究没能拼成告白的主歌我把周杰伦的《晴天》写成C++的类在每个midiEvent里埋藏故事的小黄花调试器的断点比初恋更漫长而青春不过是一串未导出的cmake工程文件在堆栈溢出的夜晚终将明白有些旋律永远停在#pragma once的注释里有些人永远停在未定…

JUC并发—2.Thread源码分析及案例应用

大纲 1.什么是线程以及并发编程 2.微服务注册中心案例 3.以工作线程模式开启微服务的注册和心跳线程 4.微服务注册中心的服务注册功能 5.微服务注册中心的心跳续约功能 6.微服务的存活状态监控线程 7.以daemon模式运行微服务的存活监控线程 8.一般不常用到的ThreadGroup是什么 …

HashMap 的 put 方法源码分析(JDK 1.8)

一、HashMap 的 put 方法源码分析(JDK 1.8) 以下是 HashMap 的 put 方法的源码(JDK 1.8):hash(key) 方法 hash(key) 方法用于计算键的哈希值:如果键为 null,返回 0。否则,返回键的哈希码与高 16 位的异或结果(目的是减少哈希冲突)。putVal 方法 putVal 方法是 HashMa…

第二章笔记

2.1用二进制数表示计算机信息的原因 IC的所有引脚,只有直流电压0V或5V 两个状态。也就是说,IC的一个引脚,只能表示两个状态。 计算机处理信息的最小单位——位,就相当于二进制中的一位。位的英文bit是二进制数位(binary digit)的缩写。 二进制数的位数一般是8位、16位、3…

基金年结、结账、关账和开账

基金年结、结账、关账和开账是基金公司年底财务工作中的重要环节,不仅涉及资产、负债、所有者权益等七大要素的核算,还需要进行全面的账务处理和数据校验。本文将详细解读基金年结的背景、目的、概念以及具体流程,帮助大家深入了解这一复杂而关键的财务操作过程。其实年结不…

分组密码工作模式-CBC

CBC全称密文分组链接工作模式:是分组密码算法的一种工作模式,其特征是将当前的明文分组与前一密文分组进行异或运算后再进行加密得到当前的密文分组。 在CBC模式下,每个明文分组在加密之前,先与反馈至输入端的前一组密文分组按位异或后,再送至加密模块进行加密。其中,IV是…

基于AutoEncode自编码器的端到端无线通信系统matlab误码率仿真

1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印):仿真操作步骤可参考程序配套的操作视频。2.算法涉及理论知识概要自编码器是一种特殊的神经网络结构,主要由编码器(Encoder)和解码器(Decoder)两部分组成。自编码器的目标是最小化重构误差,常用的重构误…

2-EasyARM i.MX287A开发板 imx-uboot 主线移植

https://github.com/nxp-imx/linux-imx 这里我们使用 lf-6.1.55-2.2.2 分支开始 首先通过硬件原理图找出 ZLG imx287 和 官方开发板 mx28evk 的差异调试串口 mx28evkZLG287这里可以看到官方板用的GPIO3_16/17作为调试串口,ZLG287 GPIO3_16/17被用作I2C,没有接口引出,DUART使…

Langchain的底层原理

Langchain的应用场景 1.个人助手:预定航班 2.学习辅助:参考整个大纲 3.数据分析和数据科学:连接到公司和客户的数据,极大的促进数据的分析

国内服务器docker设置代理【2024年12月】在debian12上测试通过

搬运up主凌冰Koori使用export https_proxy这类环境变量已经失效了。现在可以编辑下面的文件:/etc/docker/daemon.json可能对你来说会提示是新文件,不用管。加入以下配置:{“proxies”: {“http-proxy”: “socks5://127.0.0.1:2080”,“https-proxy”: “socks5://127.0.0.1…