博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1303: [CQOI2009]中位数图 数学
阅读量:5996 次
发布时间:2019-06-20

本文共 1908 字,大约阅读时间需要 6 分钟。

1303: [CQOI2009]中位数图

Time Limit: 20 Sec  Memory Limit: 256 MB

题目连接

http://www.lydsy.com/JudgeOnline/problem.php?id=1303

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

HINT

 第三个样例解释:{4}, {7,2,4}, {5,7,2,4,3}和{5,7,2,4,3,1,6}

N<=100000

题意

 

题解:

把大于b的置为1,把小于b的置为-1

然后左右都扫一遍,l[i]表示左边和为i的个数,r[i]表示右边和为i的个数

if(i+j==0)ans+=l[i]*r[i]

代码:

 

//qscqesze#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;using namespace std;//freopen("D.in","r",stdin);//freopen("D.out","w",stdout);#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)#define maxn 1000001#define mod 10007#define eps 1e-9int Num;char CH[20];//const int inf=0x7fffffff; //нчоч╢Сconst int inf=0x3f3f3f3f;/*inline void P(int x){ Num=0;if(!x){putchar('0');puts("");return;} while(x>0)CH[++Num]=x%10,x/=10; while(Num)putchar(CH[Num--]+48); puts("");}*/inline ll read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}inline void P(int x){ Num=0;if(!x){putchar('0');puts("");return;} while(x>0)CH[++Num]=x%10,x/=10; while(Num)putchar(CH[Num--]+48); puts("");}//**************************************************************************************int num[maxn];int sum[maxn];int l[maxn],r[maxn];int point;int main(){ int n,b; scanf("%d%d",&n,&b); for(int i=1;i<=n;i++) { scanf("%d",&num[i]); if(num[i]==b) point=i; if(num[i]>b) num[i]=1; else if(num[i]
=1;i--) { sum[i]=sum[i+1]+num[i]; l[sum[i]+n]++; } for(int i=point+1;i<=n;i++) { sum[i]=sum[i-1]+num[i]; r[sum[i]+n]++; } int ans=0; for(int i=0;i<=2*n;i++) { ans+=l[i]*r[2*n-i]; } cout<
<

 

转载地址:http://jwqlx.baihongyu.com/

你可能感兴趣的文章
allegro使用汇总 [转贴]
查看>>
Java多线程之Runable与Thread
查看>>
抽象工厂模式
查看>>
备忘录模式
查看>>
第三方支付集成
查看>>
android 自定义radiogroup的两种方式
查看>>
T-SQL中return 返回语句学习
查看>>
C# .NET中的 反射的应用
查看>>
Codeigniter 利用加密Key(密钥)的对象注入漏洞
查看>>
【转】Android 二维码 生成和识别(附Demo源码)--不错
查看>>
adb shell dumpsys 命令 查看内存
查看>>
android 自定义命名空间
查看>>
apache和nginx支持SSI配置
查看>>
--@angularJS--一个最简单的指令demo
查看>>
Qt resizeEvent 控件居中设置
查看>>
深入理解spring中的各种注解(转)
查看>>
BootStrap安装
查看>>
ng-class的使用
查看>>
设计模式之建造者模式
查看>>
关于华为交换机bpdu enable. ntdp enable. ndp enable解析
查看>>