当前位置:网站首页>codeforce:C. Sum of Substrings【边界处理 + 贡献思维 + 灵光一现】
codeforce:C. Sum of Substrings【边界处理 + 贡献思维 + 灵光一现】
2022-07-04 12:52:00 【白速龙王的回眸】
分析
我们想让f最小
边界情况:没有1答案总是0
然后的话每个1,如果在中间的话贡献一定是1 + 10 = 11
唯一可能降低贡献的就是放在一头一尾
放在头:贡献变成10
放在尾:共享变成1
于是我们统计s所有1离头和尾最近的距离d1和d2
然后优先走到尾
判断k的取值是否大于等于d1 + d2, d2, d1分成四个状态
特别地,如果只有一个1的情况下,不可能又去头又去尾巴
所以这种情况当其大于等于d1 + d2就去d2即可
ac code
import sys
input = sys.stdin.readline
for _ in range(int(input())):
n, k = list(map(int, input().split()))
s = input()
cnt_1 = 0
for c in s:
if c == '1':
cnt_1 += 1
if cnt_1 == 0:
print(0)
continue
d1, d2 = 0, 0 # d1 from head, d2 from tail
for i in range(n):
if s[i] == '1':
d1 = i
break
for i in range(n):
if s[n - 1 - i] == '1':
d2 = i
break
# 1: not change
# 2: go to head
# 3: go to tail
# 10: go to tail and head
# we are delighted to go to tail first, and secondly go to head
flag = 1
if k >= d1 + d2:
flag = 10
elif k >= d2:
flag = 3
elif k >= d1:
flag = 2
else:
flag = 1
# different cases
ans = 0
if flag == 10:
if cnt_1 >= 2:
ans = 1 + 10 + 11 * (cnt_1 - 2) # cnt_1 >= 2
else:
ans = 1
elif flag == 3:
ans = 1 + 11 * (cnt_1 - 1)
elif flag == 2:
ans = 10 + 11 * (cnt_1 - 1)
else:
ans = 11 * cnt_1
print(ans)
总结
思维 + 贡献 + 边界处理
边栏推荐
- Use of arouter
- Install MySQL
- Apple 5g chip research and development failure: continue to rely on Qualcomm, but also worry about being prosecuted?
- Error in find command: paths must precede expression (turn)
- Use the default route as the route to the Internet
- 【信息检索】链接分析
- 2022 game going to sea practical release strategy
- ML之shap:基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型实现可解释性案例
- [matlab] summary of conv, filter, conv2, Filter2 and imfilter convolution functions
- Fs4059c is a 5V input boost charging 12.6v1.2a. Inputting a small current to three lithium battery charging chips will not pull it dead. The temperature is 60 ° and 1000-1100ma is recommended
猜你喜欢
C # WPF realizes the real-time screen capture function of screen capture box
Yingshi Ruida rushes to the scientific and Technological Innovation Board: the annual revenue is 450million and the proposed fund-raising is 979million
Product identification of intelligent retail cabinet based on paddlex
sql优化之查询优化器
[FAQ] Huawei Account Service Error Report 907135701 Common reasons Summary and Solutions
Leetcode T48:旋转图像
Excel快速合并多行数据
China Post technology rushes to the scientific innovation board: the annual revenue is 2.058 billion, and the postal group is the major shareholder
Test process arrangement (3)
按照功能对Boost库进行分类
随机推荐
IP lab monthly resumption · issue 5
Use of arouter
The font of markdown grammar is marked in red
聊聊保证线程安全的 10 个小技巧
Basic mode of service mesh
What is the real meaning and purpose of doing things, and what do you really want
Leetcode 61: 旋转链表
Install MySQL
统计php程序运行时间及设置PHP最长运行时间
【信息检索】链接分析
[FAQ] Huawei Account Service Error Report 907135701 Common reasons Summary and Solutions
流行框架:Glide的使用
AI与生命科学
数据仓库面试问题准备
opencv3.2 和opencv2.4安装
LifeCycle
一种架构来完成所有任务—Transformer架构正在以一己之力统一AI江湖
DDD application and practice of domestic hotel transactions -- Code
Understand chisel language thoroughly 04. Chisel Foundation (I) - signal type and constant
商业智能BI财务分析,狭义的财务分析和广义的财务分析有何不同?