当前位置:网站首页>codeforces:808D. Array Division【二分 + 找规律】
codeforces:808D. Array Division【二分 + 找规律】
2022-08-04 15:58:00 【白速龙王的回眸】

分析
一个东西可以往前or往后放
只要看减去这个东西的前缀和和后缀和是否存在half - num即可
注意:这个前缀和or后缀和不能包含当前数,否则会造成改变
ac code
import sys
from itertools import accumulate
from bisect import bisect_left
input = sys.stdin.readline
n = int(input())
a = list(map(int, input().split()))
preSum = list(accumulate(a, initial = 0))
b = a[::-1]
preSum2 = list(accumulate(b, initial = 0))
tot = sum(a)
if tot % 2 != 0:
print('NO')
else:
half = tot // 2
flag = False
for i in range(n):
num = a[i]
target = half - num
idx = bisect_left(preSum, target)
if idx <= i and target == preSum[idx]:
flag = True
break
for i in range(n):
num = b[i]
target = half - num
idx = bisect_left(preSum2, target)
if idx <= i and target == preSum2[idx]:
flag = True
break
if flag:
print('YES')
else:
print('NO')
总结
前缀和思维 + 去掉一个挪到合适的位置 + 二分查
边栏推荐
猜你喜欢
随机推荐
7 天学个Go,Go 结构体 + Go range 来学学
ICDE‘22推荐系统论文之Research篇
HyperBDR云容灾深度解析一:云原生跨平台容灾,让数据流转更灵活
Many merchants mall system function and dismantling 24 - ping the strength distribution of members
软考 --- 软件工程(2)软件开发方法
H5 开发内嵌页面跨域问题
【Idea设置运行参数无效】可能是...
C#命令行解析工具
(2022杭电多校五)C - Slipper (dijkstra+虚拟结点)
不需要服务器,教你仅用30行代码搞定实时健康码识别
【伸手党福利】投影仪初学者入门——投影亮度及幕布选择——从入门到精通
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
请问一下dms的跨阿里云账户 新增实例,是不是无法新增redis ?
UWP WPF 解决 xaml 设计显示异常
云存储硬核技术内幕——小结(上)
[TA-Frost Wolf_may-"Hundred Talents Project"] Art 2.7 Metallic and Speculer Process
Redis持久化操作
【已解决】allure无法生成json文件和AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
06-总线
seaborn









