COGS 942. [東方S3] 比那名居天子
|
Problem 1 |
比那名居天子(tenshi.cpp/c/pas) |
|
题目描述 |
在幻想乡,比那名居天子是管理着『要石』的天人。『要石』是能够引发和镇压地震的存在,当然也可以用来改变地形。因为在幻想乡引发地震,而被灵梦等人教训了之后,天子不得不使用『要石』来修复地面。幻想乡可以视为长度为N个格子的一条横轴,其中有些格子的土地由于地震被破坏(记为1),有些格子则没有(记为0)。每次使用『要石』,可以把一段长度为L的格子全部修复完成(即将1变为0,L覆盖的范围可以超出地图),当然L越大,使用时所花费的灵力也就越多。天子希望最多使用K次『要石』就将所有被破坏的土地全部修复完成(即将1全部变为0),并且花费尽可能小的灵力。她想知道能够达到这个目的的L最小是多少。 |
|
输入格式 |
第1行:2个整数,N, K 第2行:1个 01 串,长度为 N |
|
输出格式 |
第1行:1个整数,L 的最小值 |
|
输入样例 |
10 3 0101111011 |
|
输出样例 |
3 |
|
样例解释 |
0101111011 > 0000111011 > 00000000011 > 0000000000 |
|
数据范围 |
对于 60%的数据:1 ≤ N,K ≤ 5,000 对于 100%的数据:1 ≤ N,K ≤ 500,000 |
二分题,做了好久,错了好久。

运行最快 (偷笑)
#include <ctype.h>
#include <cstring>
#include <cstdio>
void read(int &x)
{
x=;bool f=;
char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
}
int ans=,n,k,len;
char str[];
bool judge(int L)
{
int z=;
for(int i=;i<=len;i++)
{
if(str[i]=='') i+=L-,z++;
if(z>k) return false;
// else i++;
}
return true;
}
int min(int a,int b){return a>b?b:a;}
int main()
{
freopen("tenshi.in","r",stdin);
freopen("tenshi.out","w",stdout);
read(n);read(k);
scanf("%s",str+);
len=strlen(str+);
int l=,r=n*;
while(l<=r)
{
int mid=(l+r)>>;
if(judge(mid))
{
ans=mid;
r=mid-;
}
else l=mid+;
}
printf("%d",ans);
return ;
}
COGS 942. [東方S3] 比那名居天子的更多相关文章
- cogs 943. [東方S3] 铃仙•优昙华院•稻叶
二次联通门 : cogs 943. [東方S3] 铃仙•优昙华院•稻叶 /* cogs 943. [東方S3] 铃仙·优昙华院·稻叶 概率dp 貌似做麻烦了 邻接矩阵和链式前向星都用上了... dp[ ...
- cogs 944. [東方S3] 藤原妹红
二次联通门 : cogs 944. [東方S3] 藤原妹红 /* cogs 944. [東方S3] 藤原妹红 最小生成树 + 树形dp 首先对原图跑最下生成树 后建出一棵树 在树上进行dp 先走到叶子 ...
- cogs 920. [東方S1] 琪露诺
二次联通门 : cogs 920. [東方S1] 琪露诺 /* cogs 920. [東方S1] 琪露诺 dp 方程为dp[i] = max (dp[i - L], dp[i - L + 1] ... ...
- cogs 997. [東方S2] 射命丸文
二次联通门 : cogs 997. [東方S2] 射命丸文 /* cogs 997. [東方S2] 射命丸文 二维前缀和 枚举每个子矩阵 更新最大值.. 莫名rank1 */ #include < ...
- cogs 998. [東方S2] 帕秋莉·诺蕾姬
二次联通门 : cogs 998. [東方S2] 帕秋莉·诺蕾姬 交上去后发现自己没上榜 就想着加点黑科技 把循环展开一下 结果WA了.. 万恶的姆Q /* cogs 998. [東方S2] 帕秋莉· ...
- cogs 999. [東方S2]雾雨魔理沙
二次联通门 : cogs 999. [東方S2]雾雨魔理沙 摸你傻赛高!! /* cogs 999. [東方S2]雾雨魔理沙 原来以为是一道计算几何的题 可是细细一想发现.. 这就是一道dp 由于给定 ...
- cogs 2569. [東方] 博丽灵梦 梦想妙珠
二次联通门 : cogs 2569. [東方] 博丽灵梦 梦想妙珠 /* cogs 2569. [東方] 博丽灵梦 梦想妙珠 莫队水过.. 好久没一遍AC了.. 卡线上榜2333 */ #includ ...
- <东方梦符祭> N1无尽30波终于通了
嘛也算是第一次通关 纪念一下 阵容:xjb搭的杂牌队 主C:古明绝恋 露米娅(真·R卡战神)比那名居天子 斯卡雷特 控制:琪露诺 蕾蒂 灵梦 挂件:小伞 纳兹琳 古明地觉 永江依玖 第一发就直接抽到了 ...
- 【游记】CSP-S2019游记
\(\Large\texttt{Day -1}\) 今天晚上gryz开了也许是晚宴(awa),有水饺和蛋糕.因为去拿笔记本的原因没有吃到蛋糕..好可惜. 明天不用上早自习太棒了. 明天出发报道. 这笔 ...
随机推荐
- 关于include,load的几个问题
参考:http://www.network-theory.co.uk/docs/gccintro/gccintro_17.html 1. include的文件在哪找,找不到会如何? 工具: gcc - ...
- 理解Objective-C Runtime (五)协议与分类
Objective-C中的分类允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到. Objective-C中的协议是普遍存在的 ...
- Spring中的扩展点
Spring作为一个常用的IOC框架,在设计上预留了很多的扩展点,很多第三方开源框架,包括Spring自身也是基于这些扩展点实现的,这很好的体现了对修改关闭.对扩展开放的原则.总的来说Spring的扩 ...
- bzoj1017 [JSOI2008]魔兽地图DotR——DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1017 好难想的状态啊!f[i][j][k]表示i号物品有j个向上贡献,一共花了k钱的最大力量 ...
- memset函数学习
memset是计算机中C/C++语言函数.将s所指向的某一块内存中的后n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存 ...
- vim 退出命令(保存、放弃保存)
在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell:若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell. 在末行模式下,输入命令 : ...
- unix网络编程环境配置程序运行
1 查看ubuntu版本 cat /etc/issue 2 查看版本 cat /proc/version 3 下载 你可以通过其他方式下载 这里下载好了 文件名为unpv13e 4 开始配置 (1)c ...
- bzoj 5496: [2019省队联测]字符串问题【SAM+拓扑】
有一个想法就是暴力建图,把每个A向有和他相连的B前缀的A,然后拓扑一下,这样的图是n^2的: 考虑优化建图,因为大部分数据结构都是处理后缀的,所以把串反过来,题目中要求的前缀B就变成了后缀B 建立SA ...
- Django学习:ORM
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- 51Nod 1092 回文字符串
最开始毫无头绪,然后参照了一位dalao的博客,思路是一个正序的字符串将其逆序,然后求最长公共子序列(LCS),emm也属于动态规划. #include <iostream> #inclu ...