当前位置:网站首页>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)
总结
思维 + 贡献 + 边界处理
边栏推荐
- Understand chisel language thoroughly 06. Chisel Foundation (III) -- registers and counters
- 游戏出海,全球化运营
- [antd] how to set antd in form There is input in item Get input when gourp Value of each input of gourp
- C# wpf 实现截屏框实时截屏功能
- Ml: introduction, principle, use method and detailed introduction of classic cases of snap value
- [FAQ] summary of common causes and solutions of Huawei account service error 907135701
- 富文本编辑:wangEditor使用教程
- Understand chisel language thoroughly 04. Chisel Foundation (I) - signal type and constant
- gin集成支付宝支付
- 按照功能对Boost库进行分类
猜你喜欢

C# wpf 实现截屏框实时截屏功能
![[FAQ] summary of common causes and solutions of Huawei account service error 907135701](/img/43/1a9786c89a5ab21d1fb8903cb7b77e.png)
[FAQ] summary of common causes and solutions of Huawei account service error 907135701

How to package QT and share exe

Test evaluation of software testing

Apple 5g chip research and development failure: continue to rely on Qualcomm, but also worry about being prosecuted?
![[FAQ] Huawei Account Service Error Report 907135701 Common reasons Summary and Solutions](/img/43/1a9786c89a5ab21d1fb8903cb7b77e.png)
[FAQ] Huawei Account Service Error Report 907135701 Common reasons Summary and Solutions

数据仓库面试问题准备

【FAQ】華為帳號服務報錯 907135701的常見原因總結和解决方法

Use the default route as the route to the Internet

瑞吉外卖笔记
随机推荐
ViewModel 初体验
File creation, writing, reading, deletion (transfer) in go language
Test process arrangement (3)
R language uses the DOTPLOT function of epidisplay package to visualize the frequency of data points in different intervals in the form of point graph, and uses the by parameter to specify the groupin
Learn kernel 3: use GDB to track the kernel call chain
How to package QT and share exe
NowCoder 反转链表
Understand chisel language thoroughly 06. Chisel Foundation (III) -- registers and counters
R语言使用epiDisplay包的dotplot函数通过点图的形式可视化不同区间数据点的频率、使用by参数指定分组参数可视化不同分组的点图分布
Remove duplicate letters [greedy + monotonic stack (maintain monotonic sequence with array +len)]
Huahao Zhongtian rushes to the scientific and Technological Innovation Board: the annual loss is 280million, and it is proposed to raise 1.5 billion. Beida pharmaceutical is a shareholder
R language ggplot2 visualization: gganimate package creates dynamic line graph animation (GIF) and uses transition_ The reveal function displays data step by step along a given dimension in the animat
Ml: introduction, principle, use method and detailed introduction of classic cases of snap value
流行框架:Glide的使用
Product identification of intelligent retail cabinet based on paddlex
Golang uses JSON unmarshal number to interface{} number to become float64 type (turn)
Intelligence d'affaires bi analyse financière, analyse financière au sens étroit et analyse financière au sens large sont - ils différents?
92.(cesium篇)cesium楼栋分层
Blob, text geometry or JSON column'xxx'can't have a default value query question
C # WPF realizes the real-time screen capture function of screen capture box