Powered by:NEFU AB-IN

【CQOI2009】中位数图

  • 题意

    给出 1 − n 1-n 1−n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是 b b b。

    中位数是指把所有元素从小到大排列后,位于中间的数。

  • 思路

    遇到中位数的题,可以往两方面想

    • 大于中位数的记为 1 1 1,小于中位数的记为 − 1 -1 −1
    • 堆栈

    明显这个题可以采用第一种思路

    既然是排列,那么就可以先找出这个数的位置,然后从这个位置开始,往左往右开始遍历,并记录前缀和,当 l _ s u m [ x ] + r _ s u m [ y ] = 0 l\_sum[x] + r\_sum[y] = 0 l_sum[x]+r_sum[y]=0时,说明这个可行

    注意:

    • 下标可能有负数,因此每个数加上一个 n n n
    • 中位数本身就是 0 0 0,那么自己就是一个连续子序列,而且还可以和左右是 0 0 0的组成序列,可以发现是 0 0 0的点不可能与中位数组成偶数长度,因为加一减一奇数不会构成 0 0 0,所以 s u m sum sum初始值是 l _ s u m [ n ] + r _ s u m [ n ] + 1 l\_sum[n] + r\_sum[n] + 1 l_sum[n]+r_sum[n]+1
    • 不用考虑长度是偶数的情况,还是因为上面的原因

  • 代码

    /** @Author: NEFU AB_IN* @Date: 2021-09-08 16:24:12* @FilePath: \Vscode\ACM\NiuKe\2021.9.8\b.cpp* @LastEditTime: 2021-09-08 16:36:57* @brief 【CQOI2009】中位数图*/
    #include <bits/stdc++.h>
    using namespace std;
    #define LL long long
    #define MP make_pair
    #define SZ(X) ((int)(X).size())
    #define IOS                      \ios::sync_with_stdio(false); \cin.tie(0);                  \cout.tie(0);
    #define DEBUG(X) cout << #X << ": " << X << endl;
    typedef pair<int, int> PII;const int N = 1e6 + 10;
    int a[N], l[N << 1], r[N << 1];
    int n, k;signed main()
    {IOS;cin >> n >> k;int pos;for (int i = 1; i <= n; ++i){cin >> a[i];if (a[i] == k)pos = i;}int sum = 0;for (int i = pos - 1; i >= 1; --i){sum += (a[i] > k) ? 1 : -1;l[sum + n]++;}sum = 0;for (int i = pos + 1; i <= n; ++i){sum += (a[i] > k) ? 1 : -1;r[sum + n]++;}sum = l[n] + r[n] + 1;for (int i = 0; i <= 2 * n; ++i){sum += l[i] * r[2 * n - i];}cout << sum << '\n';return 0;
    }

完结

【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. bzoj 1303: [CQOI2009]中位数图

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

  4. [CQOI2009]中位数图

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

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

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

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

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

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

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

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

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

  9. BZOJ刷题记录---提高组难度

    BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...

最新文章

  1. MiaSocks发布第一个测试版
  2. 最小生成树学习-Kruskal算法
  3. 科研实习 | 北京大学计算机学院杨智老师组招收系统方向科研实习生
  4. dell的1501和640m,买哪个好呢?
  5. java api 测试工具_Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具
  6. AT3557 Four Coloring 切比雪夫距离 + 四色构造
  7. 《线性代数的几何意义》笔记(1)
  8. 前端那些事之原生 js实现贪吃蛇篇
  9. ios assetlibrary
  10. Facebook AI 提出10亿级数据规模的半监督图像分类模型,ImageNet测试精度高达81.2%!...
  11. Source insight 添加注释插件
  12. Cloud Foundry 在 Azure 中国正式发布
  13. Web调取摄像头拍照
  14. Linux 端口扫描
  15. 我对数据分析的几点感悟
  16. V4L2接口的简单使用
  17. 部分主流视频网站下载方法
  18. mysql innerdb 索引,MySQL系列-InnoDB索引优化AHI、Change buffer
  19. 第39级台阶 蓝桥杯递归 java
  20. 数字孪生 软著登记表 模板

热门文章

  1. MybatisPlus主键技巧-@KeySequence type = IdType.INPUT 优先级高于setId(XXX) 业务主键的设置方式
  2. Android常用方法,帮你解决90%的问题
  3. Word表格“允许跨页断行”显示为灰色不可用的解决方法
  4. 【word技巧】————1、使用跨页断行去除表格底部的空白
  5. 程序源代码复制到word格式不变
  6. 幼儿园认识颜色计算机游戏,【幼儿园认识颜色教案】小班公开课认识颜色_幼儿园关于颜色的教案_亲亲宝贝网...
  7. UNDO_RETENTION作用
  8. C语言是低级和高级的分水岭
  9. Java 局部变量和全局变量
  10. 漫谈同源策略(SOP)和跨域资源共享(CORS)