1300*C. Social Distance(贪心&构造)

这篇具有很好参考价值的文章主要介绍了1300*C. Social Distance(贪心&构造)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Problem - 1367C - Codeforces

 1300*C. Social Distance(贪心&构造),codeforces,算法,数据结构,c语言,开发语言,贪心,构造

1300*C. Social Distance(贪心&构造),codeforces,算法,数据结构,c语言,开发语言,贪心,构造

解析: 

        统计出所有连续0序列,并且记录其左右两侧有没有1,然后对于四种情况分别判断即可。文章来源地址https://www.toymoban.com/news/detail-735947.html

#include<bits/stdc++.h>
using namespace std;
int t,n,k;
signed main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&n,&k);
		string s;
		cin>>s;
		int f=0,l,r,res=0,p,q;
		for(int i=0;i<n;i++){
			if(i==0&&s[i]=='0'){
				f=1,l=0,p=0;
				continue;
			}
			if(s[i]=='0'){
				if(!f) f=1,l=i,p=1;
			}
			else{
				if(f){
					r=i,f=0,q=1;
					if(p){
						if(q){
							int tt=(r-l);
							if((tt%(k+1))>=k) res+=tt/(k+1);
							else res+=tt/(k+1)-1;
						}
						else res+=(r-l)/(k+1);
					}
					else{
						if(q) res+=(r-l)/(k+1);
						else res+=1+(r-l-1)/(k+1);
					}
					p=q=0;
				}
			}
		}
		if(f){
			r=s.size();
			if(p){
				if(q){
					int tt=(r-l);
					if((tt%(k+1))>=k) res+=tt/(k+1);
					else res+=tt/(k+1)-1;
				}
				else res+=(r-l)/(k+1);
			}
			else{
				if(q) res+=(r-l)/(k+1);
				else res+=1+(r-l-1)/(k+1);
			}
		}
		printf("%d\n",res);
	}
	return 0;
}

到了这里,关于1300*C. Social Distance(贪心&构造)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构与算法之贪心&动态规划

            一:思考         1.某天早上公司领导找你解决一个问题,明天公司有N个同等级的会议需要使用同一个会议室,现在给你这个N个会议的开始和结束 时间,你怎么样安排才能使会议室最大利用?即安排最多场次的会议?电影的话 那肯定是最多加票价最高的,入场

    2024年02月09日
    浏览(38)
  • 【地铁上的面试题】--基础部分--数据结构与算法--动态规划和贪心算法

    一、动态规划的基本概念和思想 1.1 动态规划的定义和特点 动态规划是一种解决多阶段决策问题的算法思想,它通过将问题划分为若干个子问题,并保存子问题的解来求解原问题的方法。动态规划的特点包括以下几个方面: 最优子结构性质:动态规划问题具有最优子结构,即

    2024年02月12日
    浏览(44)
  • 算法分析与设计考前冲刺 (算法基础、数据结构与STL、递归和分治、 动态规划、贪心算法、 回溯算法)

    算法分析与设计考前冲刺 算法基础 算法是一系列解决问题的清晰指令,代表着用系统的方法描述解决问题的策略机制。 程序是算法用某种程序设计语言的具体的 具体实现 算法特征: 有穷性(有限步) 确定性 输入 输出 可行性(有限时间) 算法的复杂性: 时间复杂性 和空间复

    2024年02月02日
    浏览(33)
  • 【数据结构】算法题:邻接表构造相应的逆邻接表

    编写算法:根据含有n个顶点的有向图邻接表,构造相应的逆邻接表。 1.算法的思想: 邻接表和逆链接表的 顶点信息是相同的 ,直接复制即可。把 出边信息转换成入边信息 ,则需要逐一访问邻接表的各结点的出边表,把边结点通过头插法插入相应的入边表中。 2.算法的实现

    2024年02月11日
    浏览(36)
  • 【算法与数据结构】106、LeetCode从中序与后序遍历序列构造二叉树

    所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。    思路分析 :首先我们要知道后序遍历数组的最后一个元素必然是根节点,然后根据根节点在中序遍历数组中的位置进行划分,得到根节点的左右子树遍历数组,以此递归。当然这里有一个前提

    2024年02月10日
    浏览(31)
  • Codeforces Round 916 (Div. 3)(E:贪心 F贪心dfs G tarjan+topsort +线段树优化建图)

    A:直接暴力统计每个字符的次数是否达标即可 B:直接先输出所需要的k,然后降序输出剩下的即可 C: 直接枚举最后操作到哪个位置就行了,然后贪心一直操作1到i的位置的b最大值即可 D: 先固定第一次是A 第二次是B 第三次是C 枚举B为中介点i,然后求1到i-1的A的最大值,和

    2024年01月17日
    浏览(31)
  • 算法竞赛入门【码蹄集新手村600题】(MT1280-1300)C语言

    码蹄集网站地址:https://www.matiji.net/exam/ojquestionlist (1)题目 输入正整数N(1500),首先计算其逆序数M(比如12逆序后是21)。然后输出N的M次方的最后3位数。 格式 样例1 (2)参考代码 (1)题目 一个自然数,如果每一位数的位数次幂之和等于该自然数,则称之为Disarium数。 比如

    2024年02月07日
    浏览(30)
  • Codeforces Round 816 (Div. 2)(D拆位图论构造 E斜率优化)

    C:直接单独算每个位置的贡献,如果当前位置和前面位置重复了,那么前面就没选的位置了 修改的时候只要重新算i和i+1位置即可 D: 拆位,考虑字典序最小,让开头的数能等于0就等于0 要先把一定是0的数和u==v这种确定的数先填了,后面根据字典序填即可 E: 直接斜率优化

    2024年04月27日
    浏览(27)
  • Codeforces Round 890 (Div. 2) D. More Wrong(交互题 贪心/启发式 补写法)

    题目 t(t=100)组样例,长为n(n=2000)的序列 交互题,每次你可以询问一个区间[l,r]的逆序对数,代价是 要在的代价内问出最大元素的位置,输出其位置 思路来源 neal Codeforces Round 890 (Div. 2) supported by Constructor Institute D (交互+分治) 附加强 - 知乎 题解 赛中开题顺序大失败没看这个

    2024年02月14日
    浏览(29)
  • Codeforces Round 169 (Div. 2)C. Little Girl and Maximum Sum(差分、贪心)

    C. Little Girl and Maximum Sum 给q个[l,r]将所有这些区间里面的数相加和最大。 可以进行的操作是任意排列数组 对出现的每个区间内的位置加上1,代表权值 操作完之后求一遍前缀和,得到每个位置的权值 然后贪心的考虑,权值越大,应该分配给该位置的数越大越好这样对答案的贡

    2024年02月21日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包