当前位置: 首页 > article >正文

【算法练习】尺取法

(答案下一个博客出示)

求和为C

题目描述

楠楠在网上刷题,感觉第一题:求两数的和 (A+B Problem) 太无聊了,于是增加了一题:求和为 C 的Problem,难倒了一群小朋友,哈哈。

题目是这样的:给出 N 个正整数,一个值 C ,要求在这 N 个整数中找一段连续的数(至少 2 个数),使得它们的和等于 C ,问这样的方案有多少种?

例如:N=8,C=7,8 个整数是:2 5 1 1 2 4 7 1。答案是3。具体方案:(2, 5)、(5,1,1)、(1,2,4)。

输入格式

第一行 2 个正整数:N , C 。

第二行:N 个正整数。

数据范围

N 的范围是 [1...100,000]。

C 的范围是 [1...1,000,000,000]。

N 个整数中每个数的范围是:[ 1...1,000,000,000]。

输出格式

一个整数,表示该串数中包含的所有方案数。

样例

输入数据 1

4 5
1 4 1 4

输出数据 1

3

黑白奶牛

题目描述

有 N 只奶牛从左往右排成一行,编号是 1 至 N 。这 N 只奶牛当中,有一些奶牛是黑色的,其余的是白色的。

color[i] 表示第 i 只奶牛的颜色,如果 color[i]=0 则表示第 i 头奶牛是黑色的,如果 color[i]=1 则表示第 i 头奶牛是白色的。

六一奶牛儿童节快到了,农场主 Farmer John 要从这 N 头奶牛当中,挑选尽可能多的奶牛去参加晚会。

Farmer John 挑选奶牛的原则是:挑选编号是连续的一段奶牛,这一段奶牛的颜色必须全部是白色的。
Farmer John 有一个魔法棒,每用一次魔法棒就可以把一头黑色的奶牛变成一头白色的奶牛,魔法棒最多只能使用 K 次。

在上述条件下,最多可以有多少头奶牛去参加晚会呢?

输入格式

第一行,两个整数,N 和 K。

第二行,N 个整数,第 i 个整数就是 color[i] , color[i] 要么是 0,要么是 1。

数据规模

对于 50% 的数据,1 <= N <= 1000,K = 0 ,即不能使用魔法棒。

对于 100% 的数据,1 <= N <= 100000, 1 <= K <=N。

输出格式

一个整数,表示最多有多少头奶牛可以去参加晚会。

样例

输入数据 1

11 0
1 1 0 0 1 1 1 1 0 1 1

输出数据 1

4

Copy

输入数据 2

11 1
1 1 0 0 1 1 1 1 0 1 1

Copy

输出数据 2

7

样例解释

样例 1 :由于 K=0,所以不能使用魔法棒,所以挑选编号是 5 至 8 的奶牛去参加晚会。

样例 2 :由于 K=1,所以最多可以使用 1 次魔法棒,使用魔法棒把第 9 头奶牛变成白色奶牛,然后挑选编号是 5 至 11 的奶牛去参加晚会。

连续子序列

题目描述

给定一个长度为 N ( 10 < N < 100000 )的正整数序列。每个正整数都小于等于 10000 ,给定一个正整数 S ( S < 100000000 )。编写一个程序找到一个最小长度的子序列,要求这个子序列的和大于等于 S 。如果解不存在,则输出 0 。

输入格式

第一行两个整数 N 和 S;

第二行包括 N 个正整数表示数列 A ,两两之间用空格分隔。

输出格式

一个整数。

样例

输入数据 1

5 11
1 2 3 4 5

输出数据 1

3

射箭

题目描述

FJ 很喜欢看射箭比赛,看着运动员们一个个精湛的技艺,令他头晕目眩膜拜不已。而且他喜欢给那些射箭选手打分,他想如果一位选手能在尽量短的时间段内射出所有可能的环数,那么他的得分就是那段最短时间的长度。

现在,FJ 告诉你其中一位选手共射出了 n 支箭,当然他每个单位时间射出一只箭。FJ 还会告诉你他射出的每支箭的环数。而且环数总共的可能性有 m 种,环数分别为 1 到 m,请你帮他算过这位选手在他心目中的分数。

输入格式

共两行

第一行两个数 n ,m 。

第二行一共 n 个数表示那位选手每一箭的环数。

数据范围

30% 的数据:n <= 1000 ,m <= 20

100% 的数据:n <= 1000000 ,m <= 2000

输出格式

输出文件只有一个数,表示这位选手的得分。如果这位运动员无法在这n箭中射出所有的环数,则输出-1。

样例

输入数据 1

12 5
2 5 3 1 3 2 4 1 1 5 4 3

输出数据 1

6

样例解释

这位选手从第2支箭到第7支箭射出了所有可能的环数,因此他的得分是 6 。

最短序列

给定一个长度为N(10<N<100000),只有0或1的序列。请你编写一个程序找到一个最小长度的子序列,要求这个子序列的0的数量大于等于k。如果解不存在,则输出0。

输入格式

第一行两个整数N和k,第二行包括n个0或1的数列A,两两之间用空格分隔。

输出格式

一个整数:满足条件的最小长度的子序列的长度。

输入/输出例子1

输入:

10 3
1 0 0 1 1 0 1 0 0 1

输出:

4

唯一的雪花(一)

企业家 Emily 有一个很酷的主意:把雪花包起来卖。她发明了一台机器,这台机器可以捕捉飘落的雪花,并把它们一片一片打包进一个包裹里。一旦这个包裹满了,它就会被封上送去发售。

Emily 的公司的口号是“把独特打包起来”,为了实现这一诺言,一个包裹里不能有两片一样的雪花。不幸的是,这并不容易做到,因为实际上通过机器的雪花中有很多是相同的。Emily 想知道这样一个不包含两片一样的雪花的包裹最大能有多大,她可以在任何时候启动机器,但是一旦机器启动了,直到包裹被封上为止,所有通过机器的雪花都必须被打包进这个包裹里,当然,包裹可以在任何时候被封上。

输入格式

第一行是测试数据组数T。(t<=20)

接下来有T行,每行是一组数据:第一个数是通过机器的雪花总数n(n≤106),后面的n个在[0,106]内的整数,标记了这片雪花,当两片雪花标记相同时,这两片雪花是一样的。

输出格式

对于每一组数据,输出最大包裹的大小。

输入/输出例子1

输入:

2
5 
1 2 3 2 1
6 
2 2 4 5 1 5

输出:

3
4

先做一下,答案发博客了。


http://www.kler.cn/a/445750.html

相关文章:

  • 为何VisualRules更适合技术人员使用
  • 不会心理描写,神态描写怎么办?
  • 小红书关键词搜索采集 | AI改写 | 无水印下载 | 多维表格 | 采集同步飞书
  • 疾风大模型气象系统:精准预报,引领未来
  • python:用 sklearn 构建线性回归模型,并评价
  • Mamba安装环境和使用,anaconda环境打包
  • pinglunhuifu 页面
  • 使用NodeJs 实现图片转PPT
  • 【实用技能】如何在 SQL Server 中处理 Null 或空值?
  • 基于Spring Boot的高校实验室预约系统
  • 【Unity3D】实现可视化链式结构数据(节点数据)
  • R-CNN算法详解及代码复现
  • 【快速上手Docker 简单配置方法】
  • Java项目--仿RabbitMQ的消息队列--统一硬盘操作
  • RabbitMQ实现网络分区
  • 深度学习推理速度优化指南
  • 《C++版本的“前世今生”与独特魅力》
  • 厦门凯酷全科技有限公司短视频带货可靠吗?
  • 手机便签哪个好用?手机桌面便签app下载推荐
  • SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟
  • 解锁看板工具的潜力:企业流程自动化的实践方法
  • Apache 如何监听多个端口 ?
  • 网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时
  • 浏览器要求用户确认 Cookies Privacy(隐私相关内容)是基于隐私法规的要求,VUE 实现,html 代码
  • [Unity]Unity跨平台开发之Android打包和分发
  • Vue Web开发(十一)