[BZOJ 1303] CQOI 2009 中位数图 · 数学
2015-06-19 10:18
513 查看
一个大于b的数和一个小于b的数可以互相抵消,所以我们用1和-1表示。
从b向两边扩展,left[i]表示b左边抵消后有i个数比b小的可能数,right[i]表示b右边抵消后有i个数比b大的可能数。
乘法原理得ans=sigma(left[i]*right[i]).
从b向两边扩展,left[i]表示b左边抵消后有i个数比b小的可能数,right[i]表示b右边抵消后有i个数比b大的可能数。
乘法原理得ans=sigma(left[i]*right[i]).
#include <stdio.h> #include <algorithm> #include <string.h> #include <iostream> using namespace std; const int N=100005; int n,m,ad,data[N*2],r[N*2],l[N*2],sum,ans; int main(){ cin>>n>>m; for (int i=1;i<=n;i++){ cin>>data[i]; if (data[i]==m) ad=i; } sum=0;l =r =1; for (int i=ad-1;i;i--) sum+=(data[i]<m)?1:-1, l[sum+N]++; sum=0; for (int i=ad+1;i<=n;i++) sum+=(data[i]>m)?1:-1, r[sum+N]++; for (int i=N-n;i<=N+n;i++) ans+=r[i]*l[i]; cout<<ans<<endl; return 0; }
相关文章推荐
- 部署odoo
- Spring任务调度器之Task的使用
- 用CHARINDEX方法实现对字段按指定顺序排序
- [笔记]数据库系统设计之命名与主键选择
- [笔记]数据库系统设计之命名与主键选择
- java基础—TreeSet集合中储存自定义对象(java集合二)
- Codeforces Round #307 (Div. 2) B. ZgukistringZ
- C#中接口的使用(一)
- [Java开发] jetty访问jsp页面出现( PWC6345: There is an error in invoking javac)
- Mysql 5.6 双主互备高可用(Keepalived+mysql) (二)
- php结合正则获取字符串中数字
- linux编程
- window.clearInterval与window.setInterval的用法
- spring mvc工作原理
- leetcode Ch4-Binary Tree & BFS & Divide/Conquer
- MySQL 强制索引
- Linux 下yum安装php
- 为MultipeerConnectivity蓝牙连接写的demo
- iOS 获取屏幕分辨率 以及放大模式、高清模式区别
- servlet介绍