B. Heaters 思维题 贪心 区间覆盖
这个题目虽然只有1500的分数,但是我还是感觉挺思维的,我今天没有写出来,然后看了一下题解
很少做这种区间覆盖的题目,也不是很擅长,接下来讲讲我看完题解后的思路。
题目大意是:给你一个数列,这个数列的0代表这个地方没有加热器,1代表有,每一个加热器的范围是 [i-r+1,i+r-1]
问你用最少多少个加热器让整个数列都被加热。
我们可以把加热器都放入一个队列,然后用一个数haves来表示[1,haves]的范围已经被覆盖,然后再用一个数now 来表示 根据上一个点
这一个点可以选择的最远位置,如果最远都不能找到满足要求的点就表示不可以覆盖。
#include <cstring>
#include <queue>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <string>
#include <bitset>
#include <algorithm>
#include <map>
#include <vector>
#define inf 0x3f3f3f3f
#define inf64 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 1e5 + ; int main()
{
int n, r;
queue<int>que;
scanf("%d%d", &n, &r);
for(int i=;i<=n;i++)
{
int x;
scanf("%d", &x);
if (x) que.push(i);
}
int haves = , now = r, ans = ;
while(!que.empty())
{
int u = que.front(); que.pop();
if (haves >= n) break;
if (u > now) {
printf("-1\n");
return ;
}
if(!que.empty())
{
int v = que.front();
if (v <= now) continue;
ans++;
haves = u + r - ;
now = u + * r - ;
}
else {
ans++;
haves = u + r - ;
now = u + * r - ;
}
}
if (haves >= n) printf("%d\n", ans);
else printf("-1\n");
return ;
}
B. Heaters 思维题 贪心 区间覆盖的更多相关文章
- 高效算法——E - 贪心-- 区间覆盖
		
E - 贪心-- 区间覆盖 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/E 解题思路: 贪心思想, ...
 - 【题解】Cut the Sequence(贪心区间覆盖)
		
[题解]Cut the Sequence(贪心区间覆盖) POJ - 3017 题意: 给定一大堆线段,问用这些线段覆盖一个连续区间1-x的最小使用线段的数量. 题解 考虑一个这样的贪心: 先按照左端 ...
 - UVA 10382 - Watering Grass【贪心+区间覆盖问题+高精度】
		
UVa 10382 - Watering Grass n sprinklers are installed in a horizontal strip of grass l meters long a ...
 - 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)
		
思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...
 - 51nod 1091 线段的重叠【贪心/区间覆盖类】
		
1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...
 - 南阳OJ-12-喷水装置(二)贪心+区间覆盖
		
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=12 题目大意: 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有 ...
 - nyoj 12——喷水装置二——————【贪心-区间覆盖】
		
喷水装置(二) 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的 ...
 - UVA 10382 Watering Grass 贪心+区间覆盖问题
		
n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each spri ...
 - 【神仙DP】【单调队列】【模拟题】区间覆盖
		
传送门 Description 给出数轴上的n个线段,保留最多k条线段,问这些被保留下来的线段的并集长度为最多为多少. Input 第一行两个数n和k 接下来n行,每行两个数,表示一条线段的左右端点. ...
 
随机推荐
- Dijkstra学习总结
			
啥叫堆 可以看一下这个 https://www.cnblogs.com/xiugeng/p/9645972.html#_label0普通Dijkstra可以看一下 https://blog.csdn. ...
 - Mysqldump参数大全  这 些参数 不同于 mysql 的那些参数(下边文章开头有链接)  :2 种类型的参数含义是不一样的
			
Mysqldump参数大全 这 些参数 不同于 mysql 的那些参数 :2 种类型的参数含义是不一样的 Mysqldump参数大全(参数来源于mysql5.5.19源码) 参数 参数说明 --a ...
 - 安装Mathmatica
			
MathMatica11.3版本 链接:https://pan.baidu.com/s/1YzQdgz4HxHd_xNwKoMX7lQ 提取码:mnr5 破解文件 链接:https://pan.bai ...
 - ASP.NET MVC学习——控制器传递数据到view的简单案例
			
从控制传数据到view端的方法: 方法一:修改Control数据,添加ViewBag 1.ViewBag.+ 任意变量名 = "你想要输入的数据" 2.在Control对应的csh ...
 - [JS] 自己弄得个倒计时
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - SpringCloud(一)学习笔记之项目搭建
			
[springcloud项目名称不支持下划线] 一.创建父项目 File---new---project: 填写项目信息: 默认即可,点击finish创建完成: 由于父项目只用到pom文件 所以把sr ...
 - pytorch torchversion标准化数据
			
新旧标准差的关系
 - 干货!Python中字符串、列表、元祖、字典,集合之间的转换
			
一.字符串的转化 1.字符串转换成列表 字符串转换成list 的时候,str可以作为迭代对象,直接放入:也可以使用split对字符串进行切割.然后返回list s = '1a1b1c' print(l ...
 - JDBC 进阶:使用封装通用DML DQL 和结构分层以及at com.mysql.jdbc.PreparedStatement.setTimestamp空指针异常解决
			
准备: 数据表 CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(10) DEFAULT ...
 - python信息收集(三)
			
前两篇介绍了利用python编写一些脚本实现二层主机的发现,这一篇介绍一下三层主机的发现. 一般来说,三层主机的发现主要是通过ICMP协议来实现的.其中ICMP协议中的ping命令可以 ...