分析一下题意,大约是给定一串牛,然后找到一个跨越距离最长的牛子串使得在这个范围内白牛和花牛一样多. 白牛可以任意涂成花牛.

既然"白牛可以任意涂成花牛",那么我们需要找到一个最长的子串使得长度为偶且白牛数>=花牛.

注意这里的"最长"不指元素个数最多.

按照牛们排个序,那么就在一条线上了.

然后...细节明天想吧.

逗逼ZBT来更新啦!

有一种好猎奇的感觉呢!

用和临洮巨人一样的办法,用前缀和差优化那么

让我们(比如说)用

a[i]表示TOTAL{ select (* is white) in cow[0...i] }
b[i]表示TOTAL{ select (* is spotted) in cow[0...i] }

那么让我们用

c[i] = (foreach i in a,b[i]) a[i]-b[i]

这时一个符合条件的区间(r,l]即是

( odd(r) == odd(l) ) && c[l]-c[r]>=0 //P党很熟悉的odd函数,定义为 odd(i)=i&1
//为什么c[l]-c[r]>=0?
--------------------
c[l]-c[r] >= 0 ->
a[l]-b[l]-(a[r]-b[r]) = a[l]-b[l]-a[r]+b[r] = ( a[l]-a[r] ) - ( b[l]-b[r] )
也就是在这个范围内白牛比花牛多(由于是闭区间,省去了r-1的麻烦)

那么如何动态查找第一个c值小于当前结点的结点呢?

中国山东找蓝翔我们可以先记录下所有c值等于固定值中最小的那个,然后扫描一遍(同样是前缀和思想)可以实现c值小于等于这个的最小..然后再动态更新范围即可..

hash函数直接+=200000.

#include "cstdio"
#include "algorithm"
#include "cstring"
struct cow{
bool c;
int pos;
} cows[200000];
bool cmp(cow a,cow b){
return a.pos<b.pos;
}
inline int min(int a,int b){
return a<b?a:b;
}
int n,i,a,b,t,tt,maxs;
int f[500000];
char pt;
int main(int argc, char const *argv[]){
scanf("%d",&n);
for(i=1;i<=n;++i){
scanf("%d %c",&a,&pt);
cows[i].pos=a;
cows[i].c=(pt=='W');
}
std::sort(cows+1,cows+n+1,cmp);
memset(f,1,sizeof f);
a=200000;b=0;
f[200000]=0;
for(i=1;i<=n;++i){
if(cows[i].c) ++a; else ++b;
t=i&1,tt=a-b;
if(f[tt]>200000){
f[tt]=min(i,f[tt-2]);
}else{
f[tt]=min(f[tt],f[tt-2]);
}
if(cows[i].pos-cows[f[tt]+1].pos > maxs) maxs = cows[i].pos - cows[f[tt]+1].pos;
}
printf("%d\n", maxs);
return 0;
}

恩..两个点过不去..再说吧..

BZOJ 3540 realtime-update 解题的更多相关文章

  1. bzoj 3540: [Usaco2014 Open]Fair Photography

    3540: [Usaco2014 Open]Fair Photography Description FJ's N cows (2 <= N <= 100,000) are standin ...

  2. BZOJ 2839: 集合计数 解题报告

    BZOJ 2839: 集合计数 Description 一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得 它们的交集的 ...

  3. BZOJ 1367 [Baltic2004]sequence 解题报告

    BZOJ 1367 [Baltic2004]sequence Description 给定一个序列\(t_1,t_2,\dots,t_N\),求一个递增序列\(z_1<z_2<\dots& ...

  4. bzoj 1700 Problem Solving 解题 dp

    [Usaco2007 Jan]Problem Solving 解题 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 492  Solved: 288[Sub ...

  5. BZOJ 1044 木棍分割 解题报告(二分+DP)

    来到机房刷了一道水(bian’tai)题.题目思想非常简单易懂(我的做法实际上参考了Evensgn 范学长,在此多谢范学长了) 题目摆上: 1044: [HAOI2008]木棍分割 Time Limi ...

  6. BZOJ 4619 Swap Space 解题报告

    今天是因为David Lee正好讲这个题的类似题,我才做了一下. 本题是world final 2016的一道水…… 题目地址如下 http://www.lydsy.com/JudgeOnline/p ...

  7. BZOJ 4341 [CF253 Printer] 解题报告

    乍一看这个题好像可以二分优先度搞搞... 实际上能不能这么搞呢...? 我反正不会... 于是开始讲我的乱搞算法: 首先肯定要把任务按照优先度排序. 用一棵在线建点的线段树维护一个时刻是否在工作. 然 ...

  8. BZOJ 4036 [HAOI2015] Set 解题报告

    首先我们不能一位一位的考虑,为什么呢? 你想想,你如果一位一位地考虑的话,那么最后就只有 $n$ 个数字,然而他给了你 $2^n$ 个数字,怎么看都不对劲呀.(我是因为这样子弄没过样例才明白的) 所以 ...

  9. BZOJ 3288 Mato矩阵 解题报告

    这个题好神呀..Orz taorunz 有一个结论,这个结论感觉很优美: $$ans = \prod_{i=1}^{n}\varphi(i)$$ 至于为什么呢,大概是这样子的: 对于每个数字 $x$, ...

随机推荐

  1. IOS 判断日期是今天,昨天还是明天

    git地址: https://github.com/JsoonLi/NSDate-Extension   - (NSString *)compareDate:(NSDate *)date{ NSTim ...

  2. HDU 5115 Dire Wolf 区间dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ...

  3. Linux中使用crontab命令定时执行shell脚本或其他Linux命令

    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令.例如系统管理员安排一个备份任务使其每天都运行 如何往 cron 中添加一个作业? # crontab –e0 5 * ...

  4. 5.9-3 用正则表达式判断字符串text是否为合法的手机号

    package zfc; public class Zfc { public static void main(String[] args) { //判断手机号格式是否合法 String text = ...

  5. Spring-涉及到的设计模式汇总

    1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. ...

  6. Java-list,set,map的区别

    jdk中api的定义 Collection ├----List │ ├----LinkedList │ ├----ArrayList │ └----Vector │ └----Stack └----S ...

  7. Java-优化技术

    常用的: 1.优化循环.通过重新组织重复的子表达式来提高循环体的运行性能. 2减少使用对象的数量来提高运行性能. 3.缩减网络传输数据来缩短等待时间. 其他: 1.采用对象池技术,提高对象的利用效率. ...

  8. BZOJ4241 历史研究

    Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. ...

  9. SQLServer复制表

    把a的表结构复制到a1表,1=2不复制数据,如果要复制数据,就不要whereselect * into a1 from a where 1=2注意:这种方式不能复制主键.索引等信息如果要全部复制,只能 ...

  10. POJ2253 Frogger

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34865   Accepted: 11192 Descrip ...