1303: [CQOI2009]中位数图

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 2747  Solved: 1704
[Submit][Status][Discuss]

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

这题非常单纯,长度必须为奇数,而且必须是1-n的排列,那么问题就很简单了

统计前缀和,sum[i]==k表示前i个数里大于d的数与小于d的数差为k

还没遍历到d之前,更新flag[k],flag[k]==m表示总共有m个前缀和sum[]==k,

(因为k的范围是[-n, n],数组下标不能为负,所以可以整体+n)

遍历到d之后,对于当前sum[i],所有以第i个元素为结尾中位数为d的连续子序列个数就为flag[sum[i]]!

最后答案就是∑flag[sum[i]]  (d所在位置<=i<=n)

#include<stdio.h>
#include<string.h>
int a[100005], sum[100005], flag[200010];
int main(void)
{int n, d, i, ans, ok;while(scanf("%d%d", &n, &d)!=EOF){ans = ok = 0;memset(flag, 0, sizeof(flag));flag[n] = 1;for(i=1;i<=n;i++){scanf("%d", &a[i]);if(a[i]>d)  sum[i] = sum[i-1]+1;if(a[i]==d)  sum[i] = sum[i-1], ok = 1;if(a[i]<d)  sum[i] = sum[i-1]-1;if(ok==1)  ans += flag[sum[i]+n];if(ok==0)  flag[sum[i]+n]++;}printf("%d\n", ans);}return 0;
}

bzoj 1303: [CQOI2009]中位数图相关推荐

  1. BZOJ 1303: [CQOI2009]中位数图【前缀和】

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2737  Solved: 1698 [Submit][Sta ...

  2. bzoj1303[CQOI2009]中位数图

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 1969  Solved: 1264 [Submit][Sta ...

  3. [CQOI2009]中位数图

    [CQOI2009]中位数图 这是一道OI真题,我们来看看题目: 顺便放下地址吧:[CQOI2009]中位数图 读了题目之后发现直接枚举是不行的,会超时,那么我们就得换种思路了,我们可以把大于目标数的 ...

  4. [CQOI2009]中位数图 详细题解

    题目链接: https://ac.nowcoder.com/acm/problem/19913 题目描述: 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有 ...

  5. 牛客网【每日一题】5月22日 [CQOI2009]中位数图

    链接: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给出1~n的一个排列,统计该排列有 ...

  6. [bzoj1303][CQOI2009]中位数图

    来自FallDream的博客,未经允许,请勿转载,谢谢. 给定一个n个数排列,求有多少段长度为奇数的区间,中位数是b. n<=100000 时间限制0.1s 我一开始没看到排列,想着怎么还能O( ...

  7. 【CQOI2009】中位数图

    Powered by:NEFU AB-IN [CQOI2009]中位数图 题意 给出 1 − n 1-n 1−n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是 b b b. 中位数是指 ...

  8. [CQOI2009] 中位数 (前缀和)

    [CQOI2009] 中位数 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. 输入输出格式 输入格式: 第一行 ...

  9. BZOJ 1305 [CQOI2009]dance跳舞

    这是一道最大流的模版题 一定要记住不能开出来重点呀 #include <queue> #include <cstdio> #include <cstring> #i ...

最新文章

  1. Java基础班学习笔记(8)
  2. 揭秘人工智能背后鲜为人知的人工力量——数据标注
  3. composer php 使用方法,Composer的基本使用方法
  4. 面试中遇到这 3 个SQL问题,最容易掉坑里!
  5. 信号的采样与恢复matlab实验报告,实验七 连续信号的采样与恢复
  6. 常见Linux版本概览
  7. 运维讨厌流浪地球的原因
  8. 面试系列(三):Java反射机制
  9. 易智瑞大赛——地图故事组参赛经验
  10. java并发编程简单分析
  11. 解决苹果手机连接了wifi,依旧无法更新系统的问题
  12. 如何把照片kb缩小?详细步骤
  13. HC-SR04超声波模块测距原理与原理图
  14. 魔兽,星际,红警,完全对比表
  15. python 排名函数_分数排名(Python),成绩,排序,python
  16. python-正负数交叉排序
  17. 基于自定义gym环境的强化学习
  18. 留学生日常英语46~50
  19. Chrome浏览器全球大翻车? 让20多亿用户无网可上
  20. 整理UI设计的三个分类,入门前要清楚!

热门文章

  1. python怎么读取excel-python怎么读取excel中的数值
  2. 学了python能干啥举例-学了Python可以做哪些有趣的东西
  3. python项目开发实例-《Python项目案例开发从入门到实战》PDF版百度网盘
  4. MATLAB语音识别
  5. 在应用中集成科大讯飞的语音识别技术
  6. python中正则表达式_Python中正则表达式详解
  7. 润乾报表鼠标移动行、单元格变色
  8. jQuery 异步上传插件 Uploadify 使用 (Java平台)
  9. 《嵌入式》复习资料公共版
  10. mysql 访问速度_操作mysql第一次访问速度慢(远程)