博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1303 [CQOI2009]中位数图 【乱搞】
阅读量:4879 次
发布时间:2019-06-11

本文共 1528 字,大约阅读时间需要 5 分钟。

1303: [CQOI2009]中位数图

Time Limit: 1 Sec  
Memory Limit: 162 MB
Submit: 3086  
Solved: 1898
[ ][ ][ ]

Description

给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。

Input

第一行为两个正整数n和b ,第二行为1~n 的排列。

Output

输出一个整数,即中位数为b的连续子序列个数。

Sample Input

7 4
5 7 2 4 3 1 6

Sample Output

4

HINT

第三个样例解释:{4}, {7,2,4}, {5,7,2,4,3}和{5,7,2,4,3,1,6}

N<=100000

很水的一道题,为何我会想到主席树= =

由于是一个排列,所以b只有一个

我们找到b,要做的就是由b的位置开始扩展,使得扩展出来的数中大于b的个数和小于b的个数相等

我们开一个数组sum[x]表示b向左扩展出 大于b个数 - 小于b个数 = x的方案数z

对应我们只要找到一个b向右扩展 小于b的个数 - 大于b的个数 = x的位置,ans就可以加上z

#include
#include
#include
#include
#define LL long long int#define REP(i,n) for (int i = 1; i <= (n); i++)#define fo(i,x,y) for (int i = (x); i <= (y); i++)#define Redge(u) for (int k = head[u]; k != -1; k = edge[k].next)using namespace std;const int maxn = 100005,maxm = 200005,INF = 1000000000;inline int read(){ int out = 0,flag = 1;char c = getchar(); while (c < 48 || c > 57) {if (c == '-') flag = -1; c = getchar();} while (c >= 48 && c <= 57) {out = out * 10 + c - 48; c = getchar();} return out * flag;}int A[maxn],n,pos,b,sum[maxm];LL ans = 0;int main(){ n = read(); b = read(); REP(i,n) if ((A[i] = read()) == b) pos = i; sum[pos] = 1; for (int i = 1,tot = 0; i < pos; i++){ if (A[pos - i] < b) tot--; else tot++; sum[tot + pos]++; } ans = sum[pos];//cout<
<
b) tot--; else tot++; ans += sum[tot + pos]; } cout<
<

转载于:https://www.cnblogs.com/Mychael/p/8282802.html

你可能感兴趣的文章
React Antd中样式的修改
查看>>
Spring 应用外部属性文件 配置 context 错误
查看>>
导入lxml找不到etree,报ImportError:DLL load failed:找不到指定的程序
查看>>
面向对象一
查看>>
大象的崛起!Hadoop七年发展风雨录
查看>>
图片二值化
查看>>
数据库常用函数
查看>>
集合之TreeSet(含JDK1.8源码分析)
查看>>
C语言学习的记忆
查看>>
Lucene学习总结之三:Lucene的索引文件格式(1) 2014-06-25 14:15 1124人阅读 ...
查看>>
vhost:一种 virtio 高性能的后端驱动实现
查看>>
面试经验合集-Java后端<一>
查看>>
声明式事务
查看>>
[ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)...
查看>>
[游戏模版6] Win32 graph
查看>>
ARM工作模式寻址
查看>>
mipi差分信号原理
查看>>
Docker Compose
查看>>
如何调整chm文字字体大小
查看>>
history replaceState/pushState
查看>>