小于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. jmeter基础之录制篇

    一.前言 jmeter如今被越来越多人喜爱的一款测试工具,相比于loadrunner它体积特轻便.jmeter不仅用来做单接口测试,压测还能做性能,主要是一款开源的,可以写一个你需要的插件功能再添加里 ...

  2. lesson 14 A noble gangster

    lesson 14 A noble gangster there was a ++time++ 时期 times 时期/年代 in times of peace a sum of + money 一笔 ...

  3. vue watch监控对象

    1.普通的watch data() { return { frontPoints: 0 } }, watch: { frontPoints(newValue, oldValue) { console. ...

  4. loadrunner_遇到cookie接口_3种应对方法

    方法一:是调用登录接口,在调用登录后的接口 方法二:手动储存cookie,写死cookie 方法一:提前登录收集cookie,写成参数化文件 方法一,案例(就是先登录,再写登录后的接口): 注:use ...

  5. django 连接mysql报错

    原因: 问题1. 即从mysql5.7版本之后,默认采用了caching_sha2_password验证方式. 问题2.  然后在执行 python manage.py makemigrations依 ...

  6. mysql数据库配置主从同步

    MySQL主从同步的作用 .可以作为一种备份机制,相当于热备份 .可以用来做读写分离,均衡数据库负载 MySQL主从同步的步骤 一.准备操作 .主从数据库版本一致,建议版本5.5以上 .主从数据库数据 ...

  7. 自测之Lesson6:文件I/O

    题目:区分文件I/O和标准I/O. 区别: ①首先两者一个显著的不同点在于,标准I/O默认采用了缓冲机制,比如调用fopen函数,不仅打开一个文件,而且建立了一个缓冲区(读写模式下将建立两个缓冲区), ...

  8. 由作业题引发对C++引用的一些思考

    首先分析一段代码: #include <bits/c++config.h> #include <ostream> #include <iostream> #incl ...

  9. 2019寒假训练营第三次作业part1-网络空间安全概论第五章

    第五章 网络攻防技术 5.1 网路信息收集技术--网络踩点 黑客入侵系统之前,需要了解目标系统可能存在的: 管理上的安全缺陷和漏洞 网络协议安全缺陷与漏洞 系统安全缺陷与漏洞 黑客实施入侵过程中,需要 ...

  10. iOS开发GCD的简单使用

    - (void)viewDidLoad { [super viewDidLoad]; // gcd 可以充分调用设备的 cpu 发挥最大性能,在 C 语言基础之上封装的 // dispatch_que ...