【Noip模拟 20160929】划区灌溉
题目描述
约翰的奶牛们发现山脊上的草特别美味。为了维持草的生长,约翰打算安装若干喷灌器。
为简化问题,山脊可以看成一维的数轴,长为L(1≤L≤1,000,000)L(1≤L≤1,000,000),而且L一定是一个偶数。每个喷灌器可以双向喷灌,并有确定的射程,该射程是一个整数,且不短于AA,不长于BB。A,B(1≤A≤B≤1000)A,B(1≤A≤B≤1000)都是给出的正整数。它所在位置的两边射程内,都属它的灌溉区域。现要求山脊的每一个区域都被灌溉到,而且喷灌器的灌溉区域不允许重叠。
约翰有N(1≤N≤1000)N(1≤N≤1000)只奶牛,每一只都有特别喜爱的草区,第i只奶牛的草区是[Si,Ei][Si,Ei],不同奶牛的草区可以重叠。现要求,每只奶牛的草区仅被一个喷灌器灌溉。寻找最少需要的喷灌器数目。
输入数据
第11行:N,LN,L.
第22:A,BA,B.
第33到N+2N+2行:每行22个整数Si,Ei,0≤S<E≤LSi,Ei,0≤S<E≤L.
输出数据
最小的喷灌器数目。如果无法设计出满足条件的喷灌器数目,请输出−1−1.
样例输入
2 8
1 2
6 7
3 6
样例输出
3
`
样例说明
如下图,只需安装三个喷灌器。c1,c2c1,c2为奶牛们的草区。
|-----c2----|-c1|
|---1---|-------2-------|---3---|
+---+---+---+---+---+---+---+---+
0 1 2 3 4 5 6 7 8
数据范围
对于30%30%的数据,L≤100L≤100。
对于60%60%的数据,L≤10000L≤10000。
对于100%100%的数据,1≤L≤1,000,000,1≤A≤B≤1000,1≤N≤10001≤L≤1,000,000,1≤A≤B≤1000,1≤N≤1000。
题目分析
这道题我觉得我这辈子都AC不了了,其实就是在deque上面跑一遍单调就可以了。
好吧我其实AC了,代码如下:
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define inf 1999999999
int n,l,a,b,f[];
bitset<>vis;
deque<int> q;
signed main(){
freopen("divide.in","r",stdin),freopen("divide.out","w",stdout);
cin>>n>>l>>a>>b;
for (int i=,s,e;i<=n;++i) {
cin>>s>>e;
for (int j=s+;j<e;++j) vis[j]=;
}for (int i=; i<=l; ++i) {
f[i]=inf;
while(!q.empty()&&q.front()<i-*b) q.pop_front();
if(!vis[i]&&i%==&&!q.empty())
f[i]=min(f[i],f[q.front()]+);
if(i-*a+>=&&!vis[i-*a+]&&(i-*a+)%==){
while(!q.empty()&&f[i-*a+]<f[q.back()]) q.pop_back();
q.push_back(i-*a+);
}}if (f[l]!=inf) cout<<f[l];
else cout<<-;
return ;
}
代码说明
不知道说什么好,过几次我讲一讲我和她的故事。
【Noip模拟 20160929】划区灌溉的更多相关文章
- 【BZOJ】【1986】【USACO 2004 Dec】/【POJ】【2373】划区灌溉
DP/单调队列优化 首先不考虑奶牛的喜欢区间,dp方程当然是比较显然的:$ f[i]=min(f[k])+1,i-2*b \leq k \leq i-2*a $ 当然这里的$i$和$k$都是偶数啦~ ...
- 【Noip模拟 20160929】选数
题目描述 现在有一排共N个数,你需要从中选出恰好K个.选出K个数后,计算它们两两差值的绝对值的最小值S.你需要确定选出哪K个,才能最大化这个S. 输入数据 输入第一行两个正整数N.K,含义如上. 输入 ...
- 【Noip模拟 20160929】树林
题目描述 现在有一片树林,小B很想知道,最少需要多少步能围绕树林走一圈,最后回到起点.他能上下左右走,也能走对角线格子. 土地被分成RR行CC列1≤R≤50,1≤C≤501≤R≤50,1≤C≤50,下 ...
- 【Noip模拟 20160929】花坛迷宫
题目描述 圣玛格丽特学园的一角有一个巨大.如迷宫般的花坛.大约有一个人这么高的大型花坛,做成迷宫的形状,深受中世纪贵族的喜爱.维多利加的小屋就坐落在这迷宫花坛的深处.某一天早晨,久城同学要穿过这巨大的 ...
- BZOJ1986: [USACO2004 Dec] Dividing the Path 划区灌溉
L<=1000000的土地上用长度在2*A~2*B的线段覆盖所有点,且给定n<=1000个区间,每个区间上只允许有一条线段,求最少多少线段,无解-1. f[i]表示填前i个土地最少线段,f ...
- 「题解」NOIP模拟测试题解乱写I(29-31)
NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...
- 2021.9.17考试总结[NOIP模拟55]
有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- HTML基础(二)——表单,图片热点,网页划区和拼接
一.表单 <form id="" name="" method="post/get" action="负责处理的服务端&qu ...
随机推荐
- Fescar Quick Start
Quick Start Let's begin with a Microservices example. Use case A business logic for user purchasing ...
- Shell 脚本元组+for循环
#!/bin/bash#by:V log_dir=(/data/logs/anjubao_syncapi /data/logs/anjubao_wechat) daytime=`date -d ' - ...
- Beta版——爱阅APP功能说明书
爱阅APP功能说明书 一.引言 通过Alpha发布和一些用户的反馈信息,了解到我们APP存在的问题.针对这些问题我们做了一些修改.以下内容是Beta版的功能说明书. 二.工具 安卓手机 爱阅APP安装 ...
- C#如何运行外部程序(打开可执行程序):ShellExcute和Process
最近的任务用到C#来调用C++内核程序,也就是C++编译运行后生成的.exe文件.网搜了一下C#中运行外部程序大致有两种方法,在此稍作总结: (1)使用API函数ShellExcute 添加引用 us ...
- 【转载】 Pytorch 细节记录
原文地址: https://www.cnblogs.com/king-lps/p/8570021.html ---------------------------------------------- ...
- activiti学习第一天
公司项目组在考虑工作流,首选了activiti,首先我们要明确为什么要使用activiti,有什么好处. 在工作中有些项目会用到工作流,如果简单的项目,我们就无需使用类似activiti.jbpm等工 ...
- 学习笔记TF044:TF.Contrib组件、统计分布、Layer、性能分析器tfprof
TF.Contrib,开源社区贡献,新功能,内外部测试,根据反馈意见改进性能,改善API友好度,API稳定后,移到TensorFlow核心模块.生产代码,以最新官方教程和API指南参考. 统计分布.T ...
- CSS 社区的解决方案,对比
在众多解决方案中,没有绝对的优劣.还是要结合自己的场景来决定. 我们团队在使用过 scss 和 css modules 后,仍然又重新选择了使用 scss.css modules 虽然有效解决了样式冲 ...
- Hystrix 学习使用
说明: 每次调用创建一个新的HystrixCommand,把依赖调用封装在run()方法中 执行execute()/queue做同步或异步调用 请求接收后,会先看是否存在缓存数据,如果存在,则不会继续 ...
- ftp 和vsftp
内置sftp:https://blog.csdn.net/xinxin19881112/article/details/46831311 vsftp:http://blog.51cto.com/cui ...