P2418 yyy loves OI IV
题目背景
某校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的更多相关文章
- 【题解】洛谷P2418 yyy loves OI IV
感觉很是妙啊……这题数次误入歧途...最开始想的二维dp,单调队列优化:无果,卒.于是没忍住看了下标签:暴力枚举?搜索?于是开始想记忆化搜索.以为会有什么很强的剪枝之类的:30分,卒.最后终于回到正道 ...
- luoguP2418 yyy loves OI IV
https://www.luogu.org/problemnew/show/P2418 暴力 DP 做这题只有 30 分 考虑用线段树优化这个 DP 先处理一下整个房间都膜拜一个人的情况,然后将 1 ...
- [洛谷1580]yyy loves Easter_Egg I
题目背景 Soha的出题效率着实让人大吃一惊.OI,数学,化学的题目都出好了,物理的题还没有一道.于是,Huntfire,absi2011,lanlan对soha进行轮番炸,准备炸到soha出来,不料 ...
- yyy loves Easter_Egg I(恶心的字符串模拟)
题目背景 Soha的出题效率着实让人大吃一惊.OI,数学,化学的题目都出好了,物理的题还没有一道.于是,Huntfire,absi2011,redbag对soha进行轮番炸,准备炸到soha出来,不料 ...
- 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较小 ...
- 洛谷P2397 yyy loves Maths VI (mode)
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...
- 【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 ...
- P2393 yyy loves Maths II
P2393 yyy loves Maths IIlong double比如保留5位小数*1000000都变成整数最后再/1000000避免精度误差scanf("%Lf",& ...
- 洛谷P2396 yyy loves Maths VII
P2396 yyy loves Maths VII 题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 ...
随机推荐
- myBatis组件之缓存实现及使用
一 .概述 先讲缓存实现,主要是mybatis一级缓存,二级缓存及缓存使用后续补充 Mybatis缓存的实现是基于Map的,从缓存里面读写数据是缓存模块的核心基础功能:除核心功能之外,有很多额外的附加 ...
- Java Web中涉及的编解码
用户从浏览器发起一个HTTP请求,存在编码的地方是URL.Cookie.Paramiter.服务器端接收到HTTP请求后要解析HTTP协议,其中URL.Cookie和POST表单参数要解码,服务器端可 ...
- Tips——canvas闪屏问题的处理
一.问题描述 在画canvas时,遇到屏幕瞬间空白的情况(大约1~2帧),造成用户体验不好. 二.原因 canvas的绘图过程是:先擦出整个画布:然后浏览器到达重绘时间点后,在空白的canvas上作画 ...
- SQL索引的优缺点
--索引的优点 /* (1)创建唯一索引,保证数据库表中每一行数据的唯一性 (2)大大加速数据的检索速度,这也是创建索引的最主要的原因 (3)加速表和表至今的连接,特别是在实现数据的参考完整性特别有意 ...
- JS(微信小程序)处理银行卡号
其实这是一个小程序的项目,但是JS还是那个JS 在本项目中要实现两种效果: 每隔四位插入空格: <view class='item_list'> <label>银行卡号:< ...
- Scala + Thrift+ Zookeeper+Flume+Kafka配置笔记
1. 开发环境 1.1. 软件包下载 1.1.1. JDK下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...
- 一文详解 Linux 系统常用监控工具(top,htop,iotop,iftop)
概 述 本文主要记录一下 Linux 系统上一些常用的系统监控工具,非常好用.正所谓磨刀不误砍柴工,花点时间总结一下是值得的! 本文内容脑图如下: top 命令 top 命令我想大家都挺熟悉吧! ...
- fuzz实战之honggfuzz
Honggfuzz实战 前言 本文介绍 libfuzzer 和 afl 联合增强版 honggfuzz .同时介绍利用 honggfuzz 来 fuzz 网络应用服务. 介绍 honggfuzz 也是 ...
- 一步一步 Pwn RouterOS之exploit构造
前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 前面已经分析完漏洞,并且搭建好了调试环境,本文将介绍如何利用漏洞写 ...
- Android ListView无数据项时提示
只需要调用在代码中调用setEmptyView(View emptyView)设置ListView为空时显示这个TextView即可. 布局文件 <?xml version="1.0& ...