题目背景

某校2015届有两位OI神牛,yyy和c01。

题目描述

全校除他们以外的N名学生,每人都会膜拜他们中的某一个人。现在老师要给他们分宿舍了。但是,问题来了:

同一间宿舍里的人要么膜拜同一位大牛,要么膜拜yyy和c01的人数的差的绝对值不超过M。否则他们就会打起来。

为了方便,老师让N名学生站成一排,只有连续地站在一起的人才能分进同一个宿舍。

假设每间宿舍能容纳任意多的人,请问最少要安排几个宿舍?

输入输出格式

输入格式:

第一行,两个正整数N和M

第2……N+1行,每行一个整数1或2,第i行的数字表示从左往右数第i-1个人膜拜的大牛。

1表示yyy,2表示c01.

输出格式:

一行,一个整数,表示最少要安排几个宿舍。

输入输出样例

输入样例#1: 复制

5 1

1

1

2

2

1

输出样例#1: 复制

1

说明

难度题,做好心理准备~

测试点编号 N的范围 M的范围

1~3 <=2,500 <=10

4~5 <=500,000 <=10

6~10 <=500,000 <=2,000


\(define\) 了\(min\)和\(max\)然后惊喜的发现我\(10000\)的数据

emmm...简单形容就是我的线段树被\(n^2\)暴力踩爆了QAQ


思路很好想啊

维护前缀和线段树区间查询可行区间和最远路径相同前驱取min值即可


#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define LL long long
#define update(now) d[now]=min(d[now*2],d[now*2+1])
using namespace std; int i,m,n,j,k,d[5000001],f[5000001],x[1000001],las,wz; int ask(int now,int l,int r,int ll,int rr)
{
if(l>=ll && r<=rr) return d[now];
int mid=(l+r)>>1,ans=0x3f3f3f;
if(ll<=mid) ans=min(ans, ask(now*2,l,mid,ll,rr));
if(rr>mid) ans=min(ans, ask(now*2+1,mid+1,r,ll,rr));
return ans;
} void modify(int now,int l,int r,int z,int w)
{
if(l==r) {d[now]=min(d[now],z); return;}
int mid=(l+r)>>1;
if(w<=mid) modify(now*2,l,mid,z,w);
if(w>mid) modify(now*2+1,mid+1,r,z,w);
update(now);
} int main()
{
freopen("in.txt","r",stdin);
memset(d,0x3f,sizeof(d));
memset(x,0x3f,sizeof(x));
scanf("%d%d",&n,&m);
modify(1,0,2*n,0,n);
x[0]=0;
for(i=1;i<=n;i++)
{
scanf("%d",&k);
if(las!=k) las=k,wz=i;
x[i]=x[wz-1]+1; if(k==2) f[i]=f[i-1]+1;
else f[i]=f[i-1]-1;
int ll=max(0,f[i]+n-m), rr=min(f[i]+n+m,2*n);
k=ask(1,0,n+n,ll, rr)+1;
x[i]=min(k,x[i]);
modify(1,0,n+n,x[i],f[i]+n);
}
printf("%d",x[n]);
}

P2418 yyy loves OI IV的更多相关文章

  1. 【题解】洛谷P2418 yyy loves OI IV

    感觉很是妙啊……这题数次误入歧途...最开始想的二维dp,单调队列优化:无果,卒.于是没忍住看了下标签:暴力枚举?搜索?于是开始想记忆化搜索.以为会有什么很强的剪枝之类的:30分,卒.最后终于回到正道 ...

  2. luoguP2418 yyy loves OI IV

    https://www.luogu.org/problemnew/show/P2418 暴力 DP 做这题只有 30 分 考虑用线段树优化这个 DP 先处理一下整个房间都膜拜一个人的情况,然后将 1 ...

  3. [洛谷1580]yyy loves Easter_Egg I

    题目背景 Soha的出题效率着实让人大吃一惊.OI,数学,化学的题目都出好了,物理的题还没有一道.于是,Huntfire,absi2011,lanlan对soha进行轮番炸,准备炸到soha出来,不料 ...

  4. yyy loves Easter_Egg I(恶心的字符串模拟)

    题目背景 Soha的出题效率着实让人大吃一惊.OI,数学,化学的题目都出好了,物理的题还没有一道.于是,Huntfire,absi2011,redbag对soha进行轮番炸,准备炸到soha出来,不料 ...

  5. BZOJ 3512: DZY Loves Math IV [杜教筛]

    3512: DZY Loves Math IV 题意:求\(\sum_{i=1}^n \sum_{j=1}^m \varphi(ij)\),\(n \le 10^5, m \le 10^9\) n较小 ...

  6. 洛谷P2397 yyy loves Maths VI (mode)

    P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...

  7. 【BZOJ3512】DZY Loves Math IV(杜教筛)

    [BZOJ3512]DZY Loves Math IV(杜教筛) 题面 BZOJ 求 \[\sum_{i=1}^n\sum_{j=1}^m\varphi(ij)\] 其中\(n\le 10^5,m\l ...

  8. P2393 yyy loves Maths II

    P2393 yyy loves Maths IIlong double比如保留5位小数*1000000都变成整数最后再/1000000避免精度误差scanf("%Lf",& ...

  9. 洛谷P2396 yyy loves Maths VII

    P2396 yyy loves Maths VII 题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 ...

随机推荐

  1. web开发基础--字节序

    字节是网络传输上的最小单位,是web开发中需要了解的一个知识点. 1.有效位 在谈字节序前需要先了解有效位,有效位分为两种:最低有效位(LSB: Least Significant Bit) 和最高有 ...

  2. java设计模式-----19、迭代模式

    概念: Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式. 迭代模式使用比较少,JDK集合也提供 ...

  3. python学习之老男孩python全栈第九期_数据库day001 -- 作业

    创建如图所示数据库: 创建过程:  查看数据库,创建数据库 db1,再查看一下数据库  进入数据库,查看一下表  接着再创建一个class表 发现增加了重复数据,因此要把第二个修改一下  修改完数据之 ...

  4. 第二十二天- 序列化 pickle json shelve

    # 序列化:存储或传输数据时,把对象处理成方便存储和传输的数据格式,这个过程即为序列化# Python中序列化的三种方案:# 1.pickle python任意数据——>bytes写入⽂件:写好 ...

  5. Drupal8入门文章推荐

    1.<drupal 8 入门 > 2.<初探drupal8>

  6. php初学记

    开始和结束标记 常用两种:<?php ?>,<script language="php"></script> 短标记:<? ?>,需 ...

  7. R下载package的一些小问题

    1.Error in install.packages : unable to create ‘C:/Users/???/Documents/R/win-library\3.5 采用管理员身份运行,先 ...

  8. oracle 手动打jar 包

    1.到loracle 的安装目录,D:\ProgramFiles\oracle\product\11.2.0\dbhome_1\jdbc\lib,找到文件 ojdbc6.jar,复制到 D 盘. 2. ...

  9. 对象的数据属性(Object)

    value: 对象属性的默认值,默认值为undefined configurable: 能否使用delete.能否需改属性特性.或能否修改访问器属性.,false为不可重新定义,默认值为true en ...

  10. JS + jQuery 实现元素自动滚动到底部,兼容IE、FF、Chrome

    HTML代码: <ul class="tasklog-dialog-ul" id="auto_to_bottom"> <li>删除虚拟机 ...