当前位置:网站首页>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)
总结
思维 + 贡献 + 边界处理
边栏推荐
- 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
- 【信息检索】链接分析
- 基于51单片机的超声波测距仪
- 迅为IMX6Q开发板QT系统移植tinyplay
- LifeCycle
- NowCoder 反转链表
- ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例
- 为什么图片传输要使用base64编码
- R语言ggplot2可视化:gganimate包创建动画图(gif)、使用anim_save函数保存gif可视化动图
- ML:SHAP值的简介、原理、使用方法、经典案例之详细攻略
猜你喜欢
【信息检索】分类和聚类的实验
C # WPF realizes the real-time screen capture function of screen capture box
使用CLion编译OGLPG-9th-Edition源码
[FAQ] summary of common causes and solutions of Huawei account service error 907135701
Leetcode T48:旋转图像
统计php程序运行时间及设置PHP最长运行时间
基于51单片机的超声波测距仪
Introducing testfixture into unittest framework
How to package QT and share exe
[MySQL from introduction to proficiency] [advanced chapter] (V) SQL statement execution process of MySQL
随机推荐
Map of mL: Based on Boston house price regression prediction data set, an interpretable case is realized by using the map value to the LIR linear regression model
数据埋点的一些问题和想法
Innovation and development of independent industrial software
【FAQ】華為帳號服務報錯 907135701的常見原因總結和解决方法
R language uses bwplot function in lattice package to visualize box plot and par Settings parameter custom theme mode
Unity Shader学习(三)试着绘制一个圆
MySQL的存储过程练习题
安装Mysql
测试流程整理(2)
Basic mode of service mesh
Vscode common plug-ins summary
聊聊保证线程安全的 10 个小技巧
奇妙秘境 码蹄集
Introducing testfixture into unittest framework
R language ggplot2 visualization: gganimate package creates animated graph (GIF) and uses anim_ The save function saves the GIF visual animation
gin集成支付宝支付
数据中台概念
R语言使用dplyr包的group_by函数和summarise函数基于分组变量计算目标变量的均值、标准差
Understand chisel language thoroughly 06. Chisel Foundation (III) -- registers and counters
递增的三元子序列[贪心训练]