小于x的赋值为1,否则为0

区间等于k的个数

求0~n连续的n+1个k?

N<=1e5?

FFT!

考虑卷积建模:用下标相加实现转移到位,数值相乘类比乘法原理!

法一:

分治,然后FFT没了

法二:

不分治也可以!区间查询->前缀相减

ans[j-i]=f[j]*f[i],f[i]表示数值为i的前缀和个数

减法怎么办?
reverse变成加法!

i->n-i

ans[j-i]=f[j]*f[i]=f[j]*f'[n-i]

FFT一下,n+j-i位置的值就是ans辣

#include<bits/stdc++.h>
#define reg register int
#define il inline
#define numb (ch^'0')
using namespace std;
typedef long long ll;
il void rd(int &x){
char ch;x=;bool fl=false;
while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);
(fl==true)&&(x=-x);
}
namespace Miracle{
const double Pi=acos(-);
const int N=2e5+;
struct po{
double x,y;
po(){}
po(double xx,double yy){
x=xx;y=yy;
}
po friend operator +(po a,po b){
return po(a.x+b.x,a.y+b.y);
}
po friend operator -(po a,po b){
return po(a.x-b.x,a.y-b.y);
}
po friend operator *(po a,po b){
return po(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);
}
}a[*N],b[*N];
int c[N],s[N];
int n,x;
int rev[*N];
ll ans[N];
void fft(po *f,int c){
for(reg i=;i<n;++i){
if(i<rev[i]) swap(f[i],f[rev[i]]);
}
for(reg p=;p<=n;p<<=){
po gen;int len=p/;
gen=po(cos(Pi/len),c*sin(Pi/len));
for(reg l=;l<n;l+=p){
po buf=po(1.0,0.0);
for(reg k=l;k<l+len;++k){
po tmp=f[k+len]*buf;
f[k+len]=f[k]-tmp;
f[k]=f[k]+tmp;
buf=buf*gen;
}
}
}
}
int main(){
rd(n);rd(x);
int lp=n;
for(reg i=;i<=n;++i) {
rd(c[i]);c[i]=c[i]<x;
s[i]=s[i-]+c[i];
++a[s[i]].x;
}
++a[s[]].x;
for(reg i=;i<=n;++i){
b[i].x=a[n-i].x;
}
int m;
for(m=*n,n=;n<=m;n<<=);
for(reg i=;i<n;++i){
rev[i]=(rev[i>>]>>)|((i&)?(n>>):);
}
// for(reg i=1;i<=lp;++i){
// cout<<c[i]<<" ";
// }cout<<endl;
// for(reg i=0;i<n;++i){
// cout<<a[i].x<<" ";
// }cout<<endl;
// for(reg j=0;j<n;++j){
// cout<<b[j].x<<" ";
// }cout<<endl;
fft(a,);
fft(b,);
for(reg i=;i<n;++i) b[i]=a[i]*b[i];
fft(b,-);
for(reg i=;i<=lp;++i) ans[i]=round(b[lp-i].x/n);
//cout<<" ans[0] "<<ans[0]<<endl;
ans[]=(ans[]+(lp+))/-(lp+);
for(reg i=;i<=lp;++i){
printf("%lld ",ans[i]);
}
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
Date: 2018/12/27 9:01:58
*/

reverse想法比较有意思!

值得注意!

CF993E Nikita and Order Statistics的更多相关文章

  1. CF993E Nikita and Order Statistics 【fft】

    题目链接 CF993E 题解 我们记小于\(x\)的位置为\(1\),否则为\(0\) 区间由端点决定,转为两点前缀和相减 我们统计出每一种前缀和个数,记为\(A[i]\)表示值为\(i\)的位置出现 ...

  2. CF993E:Nikita and Order Statistics(FFT)

    Description 给你一个数组 $a_{1 \sim n}$,对于 $k = 0 \sim n$,求出有多少个数组上的区间满足:区间内恰好有 $k$ 个数比 $x$ 小.$x$ 为一个给定的数. ...

  3. CF993E Nikita and Order Statistics 多项式卷积 快速傅里叶变换

    题意: 给你一个数组a1~an,对于k=0~n,求出有多少个数组上的区间满足:区间内恰好有k个数比x小.x为一个给定的数.n<=10^5.值域没有意义. 分析: 大神们都说这道题是一个套路题,真 ...

  4. Codeforces 993E Nikita and Order Statistics [FFT]

    洛谷 Codeforces 思路 一开始想偏想到了DP,后来发现我SB了-- 考虑每个\(a_i<x\)的\(i\),记录它前一个和后一个到它的距离为\(L_i,R_i\),那么就有 \[ an ...

  5. [Codeforces 993E]Nikita and Order Statistics

    Description 题库链接 给你一个长度为 \(n\) 的序列 \(A\) ,和一个数 \(x\) ,对于每个 \(i= 0\sim n\) ,求有多少个非空子区间满足恰好有 \(i\) 个数 ...

  6. CLRS:median and order statistics

    //maximum and minimum     暴力遍历 O(n) //i-th element dicide and conquer random_selected_partition     ...

  7. Data Structure Binary Search Tree: Find k-th smallest element in BST (Order Statistics in BST)

    http://www.geeksforgeeks.org/find-k-th-smallest-element-in-bst-order-statistics-in-bst/ #include < ...

  8. cf22A Second Order Statistics(STL-UNIQUE的使用)

    题意: N个数,找出第二大的数.如果没有输出-1. 思路: UNIQUE的使用. 代码: int a[105]; int n; int main(){ cin>>n; rep(i,0,n- ...

  9. NOIWC前的交流题目汇总

    RT 2018.12.27 i207M:BZOJ 4695 最假女选手 以维护最大值为例,记录最大值和严格次大值和最大值的出现次数,然后取min的时候递归到小于最大值但大于次大值修改,这个就是最重要的 ...

随机推荐

  1. zookeeper应用:屏障、队列、分布式锁

    zookeeper工具类: 获取连接实例:创建节点:获取子节点:设置节点数据:获取节点数据:访问控制等. package org.windwant.zookeeper; import org.apac ...

  2. SVG Sprite 使用Symbol元素制作ICON

    介绍 SVG是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法.之前写过两篇关于CSS icon在页面显示的博客,后来了解到现在大多数前端团队和项目都在使用SVG Sprite这种方 ...

  3. Memcache的客户端连接系列(一) Java

    声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南. 关键词: Memcached  客户端 Java Java连接池 Java客户端示例 用户的弹性云服务器已安装 ...

  4. Java进阶知识点:不要只会写synchronized - JDK十大并发编程组件总结

    一.背景 提到Java中的并发编程,首先想到的便是使用synchronized代码块,保证代码块在并发环境下有序执行,从而避免冲突.如果涉及多线程间通信,可以再在synchronized代码块中使用w ...

  5. 【MFC】VS2017新建完MFC后,没有界面,只有代码

    问题描述:双击.rc文件后提示在另一个编辑器中打开 解决方法整合: 1----- 打开工程之前先把.rc文件改个名称,然后打开工程双击解决方案管理器的.rc文件, 会显示"载入失败" ...

  6. 文本分类-TextCNN

    简介 TextCNN模型是由 Yoon Kim提出的Convolutional Naural Networks for Sentence Classification一文中提出的使用卷积神经网络来处理 ...

  7. openstack多region介绍与实践---转

    概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以分布在不同的地理位置,只要网络可达就行.个人 ...

  8. openstack架构

    终于正式进入 OpenStack 部分了. 今天开始,CloudMan 将带着大家一步一步揭开 OpenStack 的神秘面纱. OpenStack 已经走过了 6 个年头. 每半年会发布一个版本,版 ...

  9. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    [SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...

  10. python函数中的位置参数、默认参数、关键字参数、可变参数区别

    一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_d ...