题意:给一个长度为L的线段,把它分成一些份,其中每份的长度∈[2A,2B]且为偶数,而且不能在某一些区间内部切开,求最小要分成几份
设f[i]为在i处切一刀,前面的满足要求的最小份数,则f[L]为答案
f[i]=min(f[j])+1,2A<=i-j<=2B,i,j可以切
维护一个单调队列,每次取出来f[i-(2B-2A)..i]的最小值,给到f[i+2A]即可

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define inf 0x3f3f3f3f
using namespace std;
const int maxl=; int rd(){
int x=,neg=;char c=getchar();
while(c<''||c>'') {if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} int N,L,A,B;
int f[maxl];
int lll[maxl],q[maxl][],qh,qt;
bool flag[maxl]; inline void insert(int x,int y){
for(int i=qt;i>=qh;i--){
if(q[x][]<x){
qt=i+;q[qt][]=x;q[qt][]=y;return;
}
}qt=qh;q[qt][]=x;q[qt][]=y;
} int main(){
//freopen("2373.in","r",stdin);
int i,j,k,ans=inf;
N=rd();L=rd();A=rd();B=rd();
for(i=;i<=N;i++){
j=rd();k=rd();
if(j+<k){
lll[j+]++;lll[k]--;
}
}for(i=,j=;i<L;i++){
j+=lll[i];if(j>||i%==) flag[i]=;
}
qt=qh=;memset(f,-,sizeof(f));
for(i=*A;i<=*B;i++){
if(!flag[i]) f[i]=;
}
for(i=*A;i+*A<=L;i++){
if(!flag[i]&&f[i]!=-){
insert(f[i],i);
}while(i-q[qh][]>*B-*A&&qh<=qt) qh++;
if(!q[qh][]||flag[i+*A]) continue;
if(i+*A==L) ans=q[qh][]+;
else f[i+*A]=q[qh][]+;
}
if(ans!=inf) printf("%d",ans);
else printf("-1");
}

poj2373 Dividing the Path (单调队列+dp)的更多相关文章

  1. POJ 3017 单调队列dp

    Cut the Sequence Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 8764   Accepted: 2576 ...

  2. [TyvjP1313] [NOIP2010初赛]烽火传递(单调队列 + DP)

    传送门 就是个单调队列+DP嘛. ——代码 #include <cstdio> ; , t = , ans = ~( << ); int q[MAXN], a[MAXN], f ...

  3. zstu 4237 马里奥的求救——(单调队列DP)

    题目链接:http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4237 这题可以转化为每次可以走g~d+x步,求最大分数,且最大分数的步数最少. ...

  4. 1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP

    1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP 题意 用摄像机观察动物,有两个摄像机,一个可以放在奇数天,一个可以放在偶数天.摄像机在 ...

  5. [USACO2004][poj2373]Dividing the Path(DP+单调队列)

    http://poj.org/problem?id=2373 题意:一条直线分割成N(<=25000)块田,有一群奶牛会在其固定区域吃草,每1把雨伞可以遮住向左右延伸各A到B的区域,一只奶牛吃草 ...

  6. poj2373 Dividing the Path

    Dividing the Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5060   Accepted: 1782 ...

  7. vijos P1243 生产产品(单调队列+DP)

      P1243生产产品   描述 在经过一段时间的经营后,dd_engi的OI商店不满足于从别的供货商那里购买产 品放上货架,而要开始自己生产产品了!产品的生产需要M个步骤,每一个步骤都可以在N台机器 ...

  8. POJ 1821 单调队列+dp

    题目大意:有K个工人,有n个墙,现在要给墙涂色.然后每个工人坐在Si上,他能刷的最大范围是Li,且必须是一个连续子区间,而且必须过Si,他刷完后能获得Pi钱 思路:定义dp[i][j]表示前i个人,涂 ...

  9. codeforces 1077F2. Pictures with Kittens (hard version)单调队列+dp

    被队友催着上(xun)分(lian),div3挑战一场蓝,大号给基佬紫了,结果从D开始他开始疯狂教我做人??表演如何AKdiv3???? 比赛场上:A 2 分钟,B题蜜汁乱计数,结果想得绕进去了20多 ...

随机推荐

  1. semantic-ui 容器与栅格

    semantic中可以指定one-sixteen这16个单词来指定网格column所占的长度.也就是说,在网页中,一行最多只有16个column,超过16个之后,自动移到下一行. 栅格可以使用i,di ...

  2. Jenkins ChangeLog

    Log changes in Jenkins - Stack Overflowhttps://stackoverflow.com/questions/13631145/log-changes-in-j ...

  3. ubuntu使用squid搭建代理

    安装squid //检查是否安装squid which squid // apt update sudo apt install squid 配置squid的配置文件squid.conf //备份sq ...

  4. MySQL数据库性能优化思路与解决方法(一转)

     1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越 小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设 ...

  5. oracle小记:dba_data_files

    今天给表空间扩展的时候,使用了dba_data_files进行查询.查阅了网上的资料. 该系统系统中含有以下字段 每个字段的含义如下:

  6. linux 服务器名 访问 shh免密码登录

    以根用户登录,或者登录后切换到根用户,然后在提示符下输入hostname命令,可以看出当前系统的主机名为localhost.localdomain.   更改/etc/sysconfig下的netwo ...

  7. [转帖]SQL Server 索引中include的魅力(具有包含性列的索引)

    SQL Server 索引中include的魅力(具有包含性列的索引) http://www.cnblogs.com/gaizai/archive/2010/01/11/1644358.html 上个 ...

  8. js判断数组是否包含某个字符串变量的实例

    最近碰到一个这样的现象,后台返回的数据中,数组里面有一些有变量值,有一些没有变量值. 举个例子,比如后台返回的例子是这样的: var arr=[ { "status":" ...

  9. 小程序和H5互调

    小程序跳H5页面 https://blog.csdn.net/mytljp/article/details/81030687(copy) H5页面跳小程序 https://blog.csdn.net/ ...

  10. Linux安装jdk环境

    前言: 又重新起了一个CentOS7,里面什么都没有,翻出以前CentOS7安装jdk的笔记,现在已经弃用有道云了,用博客比较多,所以把它移过来. 有道云笔记地址(CentOS7安装1.8jdk):h ...