beautiful

2.1 题目描述

一个长度为 n 的序列,对于每个位置 i 的数 ai 都有一个优美值,其定义是:找到序列中最 长的一段 [l, r],满足 l ≤ i ≤ r,且 [l, r] 中位数为 ai(我们比较序列中两个位置的数的大小时, 以数值为第一关键字,下标为第二关键字比较。这样的话 [l, r] 的长度只有可能是奇数),r - l + 1 就是 i 的优美值。 接下来有 Q 个询问,每个询问 [l, r] 表示查询区间 [l, r] 内优美值的最大值。
2.2 输入

第一行输入 n 接下来 n 个整数,代表 ai 接下来 Q,代表有 Q 个区间接下来 Q 行,每行 两个整数 l, r(l ≤ r),表示区间的左右端点

2.3 输出
对于每个区间的询问,输出答案
2.4 Sample Input

8

16 19 7 8 9 11 20 16

8

3 8

1 4

2 3

1 1

5 5

1 2

2 8

7 8
2.5 Sample Output

7

3

1

3

5

3

7

3
3
2.6 数据范围及约定

对于 30% 的数据,满足 n,Q ≤ 50

对于 70% 的数据,满足 n,Q ≤ 2000 对于所有数据,满足 n ≤ 2000, Q ≤ 100000,ai ≤ 200

———————————————分割线———————————————

考试没有理解这道题,导致连暴力都没有写出来,本题直接爆零。

看完标程和解题报告后豁然开朗。

n2 预处理。对于每个数,往左往右各扫一遍,遇到大于它的数则状态 S++,小于则 S--, 由题目定义可知没有相等的。然后记录下每个状态 S 的最长长度,然后枚举左边的状态,找右边的状态,取 max 计算出优美值。 接着就是一个纯 RMQ 的问题了.

 #include "cstdio"
#include "cstring"
#include "iostream" using namespace std ;
const int maxN = ;
const int INF = ;
typedef long long QAQ ; int L[ maxN ] , R[ maxN ] , w[ maxN ] , A[ maxN ] ; inline int max ( int x , int y ) { return x < y ? y : x ;} void Init ( int n ) {
for ( int i= ; i<=n ; ++i ) {
memset ( L , , sizeof ( L ) ) ;
memset ( R , , sizeof ( R ) ) ;
L[ n ] = ; R[ n ] = ;
int _cnt = ; for ( int j = i - ; j>= ; --j ) {
if ( A[ j ] > A[ i ] ) ++_cnt ;
else if ( A[ j ] <= A[ i ] ) --_cnt ;
L[ n + _cnt ] = i - j ;
} _cnt = ;
for ( int j = i + ; j <= n ; ++j ) {
if ( A[ j ] >= A[ i ] ) ++_cnt ;
else if ( A[ j ] < A[ i ] ) --_cnt ;
R[ n + _cnt ] = j - i ;
} for ( int j = - i ; j <= i - ; ++j ) {
if ( L[ n + j ] >= && R[ n - j ] >= ) {
w [ i ] = max ( w [ i ] , L[ n + j ] + R[ n - j ] + ) ;
}
}
}
}
int main ( ) {
int N , T , l , r ;
scanf ( "%d" , &N ) ;
for ( int i= ; i<=N ; ++i ) {
scanf ( "%d" , A + i ) ;
}
Init ( N ) ;
scanf ( "%d" , &T ) ;
while ( T-- ) {
QAQ ans = -INF ;
cin >> l >> r ;
for ( int i=l ; i<=r ; ++i ) ans = max ( ans , w[ i ] ) ;
printf ( "%I64d\n" , ans ) ;
}
}

Beauitiful

NOIP_RP++;

2016-10-08 00:18:20

(完)

20161005 NOIP 模拟赛 T2 解题报告的更多相关文章

  1. 20161003 NOIP 模拟赛 T2 解题报告

    Weed duyege的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,duyege 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 ...

  2. 20161005 NOIP 模拟赛 T3 解题报告

    subset 3.1 题目描述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 1. add s 在集合中加入数字 s. 2. del s 在集合中删除数字 s.保证 s 存在 3. c ...

  3. 20161023 NOIP 模拟赛 T2 解题报告

    Task 2.回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他 ...

  4. 【HHHOJ】NOIP模拟赛 玖 解题报告

    点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三 ...

  5. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  6. NOIP欢乐模拟赛 T2 解题报告

    小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...

  7. CH Round #55 - Streaming #6 (NOIP模拟赛day2)解题报告

    T1九九归一 描述 萌蛋在练习模n意义下的乘法时发现,总有一些数,在自乘若干次以后,会变成1.例如n=7,那么5×5 mod 7=4,4×5 mod 7=6,6×5 mod 7=2,2×5 mod 7 ...

  8. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)解题报告

    最近参加了很多CH上的比赛呢~Rating--了..题目各种跪烂.各种膜拜大神OTZZZ T1珠 描述 萌蛋有n颗珠子,每一颗珠子都写有一个数字.萌蛋把它们用线串成了环.我们称一个数字串是有趣的,当且 ...

  9. 20161007 NOIP 模拟赛 T1 解题报告

    排序 3.1 题意描述 众所周知,熟练掌握至少一种排序算法是参加NOIP的必备技能.常见的排序算法有冒泡 排序.归并排序.快速排序.奇偶排序.猴子排序.梳排序.鸡尾酒排序.臭皮匠排序等. 在这里,介绍 ...

随机推荐

  1. 在线预览Office文件【效果类似百度文库】(转载)

    转载地址:http://www.cnblogs.com/sword-successful/p/4031823.html 引言 结合上个项目和目前做的这个项目,其中都用到了Office文件在线预览,目前 ...

  2. 【转载】PHP使用1个crontab管理多个crontab任务

    转载来自: http://www.cnblogs.com/showker/archive/2013/09/01/3294279.html http://www.binarytides.com/php- ...

  3. 查看Linux分区格式

    第一种方法: 使用mount   [root@ol6-121-rac1 ~]# mount /dev/mapper/vg_ol6121rac1-lv_root on / type ext4 (rw) ...

  4. go sample-base64

    GoSample-base64 package mainimport ( "encoding/base64" "fmt")func base64Encode(s ...

  5. html5移动Web开发实战

    1.解决横竖屏字体大小变化 html{ -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; text-size-adjust:100 ...

  6. 5-06使用Sql 语句为表添加约束

    约束名的命名规则推荐采用:约束类型_约束列. 为用户表添加约束 ALTER TABLE UserInfo ADD CONSTRALNT PK_UserId PRIMATY REY(UserId) CO ...

  7. android倒计时(整理)

    android倒计时 用到CountDownTimer Android中文API(143) —— CountDownTimer 前言 本章内容android.os.CountDownTime章节,版本 ...

  8. java学习笔记(3):网络编程

    基本原理 客户端要发起通信,首先得知道运行服务器程序主机的IP地址,然后由网络的基础结构利用目标地址,将发送的信息传递到正确的主机上.地址可以是数字型(IPv4或者IPv6),也可以是字符串(必须先被 ...

  9. IMAGE_LOAD_CONFIG_DIRECTORY64 SafeSEH检测 表

    IMAGE_LOAD_CONFIG_DIRECTORY64 typedef struct { DWORD Size; DWORD TimeDateStamp; WORD MajorVersion; W ...

  10. Servlet的request应用案例

    request部分用法如代码: AServlet package cn.yzu; import java.io.IOException; import javax.servlet.ServletExc ...