补题链接:Here

算法涉及:前缀和,贡献值计算

经典中位数计数问题,记得以前百度之星也出过类似的题,这道题有一个限定范围是要奇数区间的

我们很容易想到,奇数下标到偶数下标或者偶数下标到奇数下标的长度一定是奇数的

对于每个数字,只可能大于,等于,小于b,于是可以重新分别赋值为1,0,-1

那么维护两个前缀和和一个now,如果当前在奇数下标,查询偶数的前缀和的cnt2[now],否则查询奇数的前缀和cnt1[now]

now 是 1到i 的前缀和,因为如果有两个位置比如 2 和 5 的前缀和相等,那么必有 3到4 这段区间的和为 0

所以可以通过查表来计算贡献。另外要注意奇数区间下,一定要有一个b,所以还要找下b的位置

using ll = long long;
const int N = 1e5 + 10; int a[N];
int cnt1[N * 3], cnt2[N * 3]; void solve() {
int n, m; cin >> n >> m;
int p = -1;
cnt2[N] = 1;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
if (a[i] > m)a[i] = 1;
else if (a[i] == m)a[i] = 0, p = i;
else a[i] = -1;
}
int now = 0;
ll ans = 0;
for (int i = 1; i <= n; ++i) {
now += a[i];
if (i & 1)
if (i >= p) ans += cnt2[N + now];
else cnt1[N + now]++;
else {
if (i >= p)ans += cnt1[N + now];
else cnt2[N + now]++;
}
}
cout << ans;
}

【每日一题】35. [CQOI2009]中位数图 (前缀和,贡献值计算)的更多相关文章

  1. BZOJ 1303 CQOI2009 中位数图 水题

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2340  Solved: 1464[Submit][Statu ...

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

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

  3. bzoj千题计划175:bzoj1303: [CQOI2009]中位数图

    http://www.lydsy.com/JudgeOnline/problem.php?id=1303 令c[i]表示前i个数中,比d大的数与比d小的数的差,那么如果c[l]=c[r],则[l+1, ...

  4. 【BZOJ1303】[CQOI2009]中位数图(模拟)

    [BZOJ1303][CQOI2009]中位数图(模拟) 题面 BZOJ 洛谷 题解 把大于\(b\)的数设为\(1\),小于\(b\)的数设为\(-1\).显然询问就是有多少个横跨了\(b\)这个数 ...

  5. bzoj 1303: [CQOI2009]中位数图 数学

    1303: [CQOI2009]中位数图 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  6. BZOJ1303 [CQOI2009]中位数图 【乱搞】

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

  7. BZOJ 1303: [CQOI2009]中位数图(思路题)

    传送门 解题思路 比较好想的思路题.首先肯定要把原序列转化一下,大于\(k\)的变成\(1\),小于\(k\)的变成\(-1\),然后求一个前缀和,还要用\(cnt[]\)记录一下前缀和每个数出现了几 ...

  8. BZOJ 1303: [CQOI2009]中位数图 【水题】

    给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. Input 第一行为两个正整数n和b ,第二行为1~n 的排列. Out ...

  9. bzoj 303: [CQOI2009]中位数图【前缀和+瞎搞】

    处理出一个序列c,a[i]>b,c[i]=1;a[i]==b,c[i]=0;a[i]<b,c[i]=-1,然后s为c的前缀和,设w为b在a序列里的下标 注意到子序列一定横跨w,并且一个符合 ...

  10. 【BZOJ】1303: [CQOI2009]中位数图(特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1303 依旧是题解流,,,不看题解没法活,,,第一眼就是瞎搞,然后就是暴力,显然TLE..题解啊题解. ...

随机推荐

  1. 自实现string类

    一. 环境 Linux x86_64,g++ 8.5.0 二. 实现 自实现 string 之前一直想写来着,一直拖着,现在把它完稿.这个版本是比较简单的版本,有一些可能有不同的或者更好的实现方式,后 ...

  2. Ubuntu安装odoo16

    虽然odoo17已经在10月份发布了,但笔者并不愿意立时升级:一方面没有迫切的需要去升级,仿佛没有odoo17就没法后续的工作一样:另一方面,我倒是更希望在双数版本发布的时候再升级.为此继续使用odo ...

  3. Opencv学习笔记(1)

    1.安装环境 如何安装Python解释器和PyCharm,这里就不说明了, 参考文章链接:https://blog.csdn.net/weixin_72959097/article/details/1 ...

  4. 安卓端出现https请求失败的一次问题排查

    背景 某天早上,正在一个会议时,突然好几个同事被叫出去了:后面才知道,是有业务同事反馈到领导那里,我们app里面某个功能异常. 具体是这样,我们安卓版本的app是禁止截屏的(应该是app里做了拦截), ...

  5. js剪贴板应用clipboardData

    clipboardData 对象 提供了对剪贴板的访问. 三个方法 1.clearData(sDataFormat) 删除剪贴板中指定格式的数据. 2.getData(sDataFormat) 从剪贴 ...

  6. 理解Mysql索引原理及特性

    作为开发人员,碰到了执行时间较长的sql时,基本上大家都会说"加个索引吧".但是索引是什么东西,索引有哪些特性,下面和大家简单讨论一下. 1 索引如何工作,是如何加快查询速度 索引 ...

  7. Head First Java学习:第十四章-序列化和文件

    第十四章 序列化和文件的输入输出 保存对象 1.什么是序列化和反序列化 在编程的世界当中,常常有这样的需求:我们需要将本地已经实例化的某个对象,通过网络传递到其他机器当中,为了满足这种需求,就有了所谓 ...

  8. Python 提取 Word 文档中的文本和图片

    将内容从 Word 文档中提取出来可以方便我们对其进行其他操作,如将内容储存在数据库中.将内容导入到其他程序中.用于 AI 训练以及制作其他文档等.第三方库 Spire.Doc for Python  ...

  9. 华企盾DSC远程桌面、实时监控连接不上常见处理方法

    1.检测策略是否勾选了远程桌面需要客户端确认或者勾选了客户端显示"允许远程维护"选项 2.检查客户端5097目录是否有MgrDll.dll.uvnserver.exe文件(是否被杀 ...

  10. 如何将3D模型导入可视化大屏系统中,并实现可交互的数字孪生大屏效果?

    首先我们需要准备一款数字孪生软件,本文中使用的是山海鲸可视化数字孪生软件,这是一款免费的零代码数字孪生大屏开发平台软件. 下载完成后打开山海鲸可视化,点击新建来创建一个大屏项目. 我们可以根据自己的需 ...