【每日一题】35. [CQOI2009]中位数图 (前缀和,贡献值计算)
补题链接: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]中位数图 (前缀和,贡献值计算)的更多相关文章
- BZOJ 1303 CQOI2009 中位数图 水题
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2340 Solved: 1464[Submit][Statu ...
- BZOJ 1303: [CQOI2009]中位数图【前缀和】
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2737 Solved: 1698[Submit][Statu ...
- bzoj千题计划175:bzoj1303: [CQOI2009]中位数图
http://www.lydsy.com/JudgeOnline/problem.php?id=1303 令c[i]表示前i个数中,比d大的数与比d小的数的差,那么如果c[l]=c[r],则[l+1, ...
- 【BZOJ1303】[CQOI2009]中位数图(模拟)
[BZOJ1303][CQOI2009]中位数图(模拟) 题面 BZOJ 洛谷 题解 把大于\(b\)的数设为\(1\),小于\(b\)的数设为\(-1\).显然询问就是有多少个横跨了\(b\)这个数 ...
- bzoj 1303: [CQOI2009]中位数图 数学
1303: [CQOI2009]中位数图 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- BZOJ1303 [CQOI2009]中位数图 【乱搞】
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3086 Solved: 1898 [Submit][Sta ...
- BZOJ 1303: [CQOI2009]中位数图(思路题)
传送门 解题思路 比较好想的思路题.首先肯定要把原序列转化一下,大于\(k\)的变成\(1\),小于\(k\)的变成\(-1\),然后求一个前缀和,还要用\(cnt[]\)记录一下前缀和每个数出现了几 ...
- BZOJ 1303: [CQOI2009]中位数图 【水题】
给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. Input 第一行为两个正整数n和b ,第二行为1~n 的排列. Out ...
- 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,并且一个符合 ...
- 【BZOJ】1303: [CQOI2009]中位数图(特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1303 依旧是题解流,,,不看题解没法活,,,第一眼就是瞎搞,然后就是暴力,显然TLE..题解啊题解. ...
随机推荐
- Tech Lead 要学会戴着镣铐跳舞
这不是一篇讨喜的文章,至少不会是你常常看到的例如<成为优秀 Tech Lead 的六个建议>令人欢欣鼓舞的那一类.今天我们聊聊 Tech Lead 所面临的不那么轻松的现实问题 程序员一定 ...
- 你知道Spring中BeanFactoryPostProcessors是如何执行的吗?
Spring中的BeanFactoryPostProcessor是在Spring容器实例化Bean之后,初始化之前执行的一个扩展机制.它允许开发者在Bean的实例化和初始化之前对BeanDefinit ...
- xv6:labs2 syscall
lab2 1.lab2的内容总结:关于系统调用整个跟踪过程: 使用系统调用时,用户态会通过软中断(trap,陷阱)进入内核中,由trap识别中断来自系统调用,然后调用syscall函数, 跟踪过程: ...
- 数据分析师如何做好PPT
作为一名数据分析师,制作出色的PPT是非常重要的技能之一.一个好的PPT可以让你的数据洞察更加生动有趣,并有效传达给观众.以下是一些详细的步骤和技巧,帮助你成为一名擅长制作PPT的数据分析师: 确定目 ...
- 我的PyCharm为什么在linux下打不开?
PyCharm打不开解决方案 本文基于Xrdp远程连接桌面环境,Unbutu Linux OS,解决办法仅供参考.应以实际情况为准. 问题产生的原因,Xrdp下GUI绘制依赖于Xrdp的渲染,当Xrd ...
- 校验码——循环校验码CRC,海明校验码
- IDEA插件(1 UI美化)
一.IDEA 插件怎么安装?(图文讲解) IntelliJ IDEA 支持丰富的插件,熟练使用相关插件,能够有效提高我们的开发效率以及用户体验.那么,要如何在 IDEA 中安装插件呢?这里有两种方式: ...
- Luogu P4524 Ceste 题解
题目链接:\(\texttt{Luogu P4524 Ceste}\) 简化题意 给定一个有 \(n\) 个点 \(m\) 条边的无向图.每条边的边权为一个二元组 \((a, b)\),求以 \(1\ ...
- MyBatis中使用#{}和${}占位符传递参数的各种报错信息处理
在Mapper层使@Select注解进行SQL语句查询时,往往需要进行参数传入和拼接,一般情况下使用两种占位符#{参数名}和${参数名},两者的区别为: 一.两种占位符的区别 1.参数传入方式的区别 ...
- 云图说|新一代Serverless应用托管引擎——CAE
本文分享自华为云社区<云图说|新一代Serverless应用托管引擎--CAE>,作者:阅识风云. 开发运营一个应用软件,面临种种挑战:软件栈厚重.开发上线慢.资源易浪费.运维投入高.突发 ...