(暂时没有vjudge题面,CF的题面又太丑2333,直接口述了)

题目大意:给你一个长度为n的序列a[],和一个数x,对于每个i= 0~n ,求有多少个子区间满足恰好有i个数<x。

sol: 这不是FFT的套路题吗2333,直接做<的0/1前缀和,然后

记录到cnt里直接卷一遍就好了2333.

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#include<vector>
#include<complex>
#define ll long long
using namespace std;
#define D double
#define E complex<double>
const int maxn=530005;
const D pi=acos(-1);int n,N,l,r[maxn],X,cnt[maxn],A[maxn];
E a[maxn],b[maxn];
ll ans[maxn];inline int read(){int x=0,f=1; char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';return x*f;
}void W(ll x){ if(x>=10) W(x/10); putchar(x%10+'0');}inline void FFT(E *c,int F){for(int i=0;i<N;i++) if(i<r[i]) swap(c[i],c[r[i]]);for(int i=1;i<N;i<<=1){E omega(cos(pi/i),F*sin(pi/i));for(int P=i<<1,j=0;j<N;j+=P){E now(1,0);for(int k=0;k<i;k++,now*=omega){E x=c[j+k],y=c[j+k+i]*now;c[j+k]=x+y;c[j+k+i]=x-y;}}}if(F==-1) for(int i=0;i<N;i++) a[i]/=N;
}inline void build(){for(int i=0;i<=n;i++) a[i]=b[n-i]=cnt[i];for(N=1;N<=(n<<1);N<<=1) l++;for(int i=0;i<N;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
}inline void solve(){FFT(a,1),FFT(b,1);for(int i=0;i<N;i++) a[i]*=b[i];FFT(a,-1);ans[0]=(ll)(floor(a[n].real()+0.5)-n)>>1;for(int i=1;i<=n;i++) ans[i]=(ll)floor(a[n+i].real()+0.5);
}int main(){
//  freopen("data.in","r",stdin);
//  freopen("data.out","w",stdout);n=read(),X=read(),cnt[0]++;for(int i=1;i<=n;i++){A[i]=A[i-1]+(read()<X);cnt[A[i]]++;}build();solve();for(int i=0;i<=n;i++) W(ans[i]),putchar(' ');return 0;
}

  

转载于:https://www.cnblogs.com/JYYHH/p/9192000.html

CodeForces - 993E Nikita and Order Statistics相关推荐

  1. CF993E Nikita and Order Statistics

    CF993E Nikita and Order Statistics 题意: 给你一个数组 a1∼na_{1 \sim n}a1∼n​,对于 k=0∼nk = 0 \sim nk=0∼n,求出有多少个 ...

  2. CF993E:Nikita and Order Statistics(FFT)

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

  3. Lecture 6 Order Statistics

    Given n elements in array, find kth smallest element (element of rank k) Worst-case linear time orde ...

  4. order statistics(找最ith小数值)问题

    order statistics就是在一堆无序的序列中查找第n小元素. 分为2种: 1.静态,也就是序列给定,并且不再变化,此时采取类似快排的做法,需要改变判断条件和结束条件. 2动态,就是元素在不断 ...

  5. CF22A Second Order Statistics

    Second Order Statistics (CF22A) 题解 这是一道CF的题目(Code Forces 22A) 题目(英文): Once Bob needed to find the se ...

  6. CodeForces - 22A Second Order Statistics【水题】

    题目链接:https://codeforces.com/contest/22/problem/A #include <iostream> #include <vector> # ...

  7. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  8. CodeForces - 760E Nikita and stack

    Description 有一个栈.每次告诉你已知在 \(p_i\) 时刻进行了某种操作,问在已知操作按顺序结束后栈顶元素是什么.操作数 \(10^5\) . Solution 每次 push 就在 \ ...

  9. A. Second Order Statistics(sort 水题)

    AC代码如下: #include<iostream> #include<algorithm> #include<string> using namespace st ...

最新文章

  1. 波士顿动力的仓库机器人Strentch来了,挑战每小时搬运800个箱子
  2. 简单的CSS颜色查看工具
  3. ajax实现关联词提示
  4. SQL on Linux Run on Docker
  5. 编程软件python中的if用法-适合Python初学者的一些编程技巧
  6. 抖音回应李小璐PGone视频曝光:草稿视频不会上传到后台
  7. 【技术分享】数据之大,云动未来 - 弹性云数据库技术解析
  8. matlab如何画之字形,matlab怎么画星座图
  9. 奥图码投影连接服务器没信号,奥图码投影机常见故障维修步骤
  10. 遗传算法原理及算法步骤(学习篇·上)
  11. 【O2O领域】外卖订餐APP商家手机端Axure原型作品(实战项目功能全)
  12. python爬虫论文总结与展望怎么写_论文总结与展望怎么写?
  13. MyBatis框架学习笔记01:初入MyBatis(一)
  14. usim卡如何换nano卡_一分钟看懂紫光国微5G超级SIM卡使用详解
  15. 数据结构童话版 003新的学生
  16. html5制作八卦图,使用HTML+CSS画太极八卦图
  17. CKEditor5+vue3使用以及如何添加新工具栏
  18. Axure RP 8.1.0.3377 for Mac
  19. C语言--独立的大括号{}
  20. 行列向量的维数和个数的关系【三秩相等作为桥梁】

热门文章

  1. 将cocos2dx项目从Visual Studio 迁移到 xcode
  2. Effective Java 读书笔记----第三章
  3. 用txt做数据源和winfrom textbox输入智能提示
  4. string 小知识
  5. python中如何创建类的对象_python面向对象中如何建立具体的对象?
  6. rfid商品管理软件_哪个RFID固定资产管理系统比较好用?
  7. php注释idea设置,IDEA对类生成注释以及自己定义代码生成方式
  8. java实现逐帧图片_java – 如何逐帧读取视频?
  9. arcgis制作空间变化图怎么做_【教程:如何使用ArcGIS10.2制作气温空间分布图】...
  10. 三角测距激光重建算子HALCON