[Codeforces 993E]Nikita and Order Statistics
Description
给你一个长度为 \(n\) 的序列 \(A\) ,和一个数 \(x\) ,对于每个 \(i= 0\sim n\) ,求有多少个非空子区间满足恰好有 \(i\) 个数 \(<x\) 。
\(1 \leq n \leq 2 \cdot 10^5\)
Solution
我们用 \([A_i<x]\) 做一个前缀和,显然这是单调递增的。记前缀和为 \(i\) 的个数为 \(f_i\) 。
显然对于 \(i=k,k\neq 0\) 答案就是
\[\sum_{i=0}^{n-k}f(i+k)f(i)\]
我们令 \(g(i)=f(n-i)\) ,那么答案就是
\[\sum_{i=0}^{n}f(i+k)g(n-i)\]
卷一下就好了,不过注意到是非空子集,所以对于 \(k=0\) 时要特判。
Code
#include <bits/stdc++.h>
#define ll long long
#define dob complex<double>
using namespace std;
const double pi = acos(-1.0);
const int N = (200000<<2)+5;
int n, m, x, sum[N], u, R[N], L, len, cnt[N];
dob a[N], b[N];
void FFT(dob *A, int o) {
for (int i = 0; i < len; i++) if (i < R[i]) swap(A[i], A[R[i]]);
for (int i = 1; i < len; i <<= 1) {
dob wn(cos(pi/i), sin(pi*o/i)), x, y;
for (int j = 0; j < len; j += (i<<1)) {
dob w(1, 0);
for (int k = 0; k < i; k++, w *= wn) {
x = A[j+k], y = w*A[j+k+i];
A[j+k] = x+y, A[j+k+i] = x-y;
}
}
}
}
void work() {
scanf("%d%d", &n, &x); cnt[0]++;
for (int i = 1; i <= n; i++) {
scanf("%d", &u), sum[i] = sum[i-1]+(u < x);
cnt[sum[i]]++;
}
for (int i = 0; i <= n; i++) a[i] = cnt[i];
for (int i = 0; i <= n; i++) b[i] = cnt[n-i];
m = (n<<1);
for (len = 1; len <= m; len <<= 1) ++L;
for (int i = 0; i < len; i++) R[i] = (R[i>>1]>>1|((i&1)<<(L-1)));
FFT(a, 1), FFT(b, 1);
for (int i = 0; i < len; i++) a[i] = a[i]*b[i];
FFT(a, -1);
printf("%I64d", (ll)(a[n].real()/len+0.5-n)>>1);
for (int i = 1; i <= n; i++) printf(" %I64d" , (ll)(a[i+n].real()/len+0.5));
}
int main() {work(); return 0; }
[Codeforces 993E]Nikita and Order Statistics的更多相关文章
- Codeforces 993E Nikita and Order Statistics [FFT]
洛谷 Codeforces 思路 一开始想偏想到了DP,后来发现我SB了-- 考虑每个\(a_i<x\)的\(i\),记录它前一个和后一个到它的距离为\(L_i,R_i\),那么就有 \[ an ...
- CF993E:Nikita and Order Statistics(FFT)
Description 给你一个数组 $a_{1 \sim n}$,对于 $k = 0 \sim n$,求出有多少个数组上的区间满足:区间内恰好有 $k$ 个数比 $x$ 小.$x$ 为一个给定的数. ...
- CF993E Nikita and Order Statistics 【fft】
题目链接 CF993E 题解 我们记小于\(x\)的位置为\(1\),否则为\(0\) 区间由端点决定,转为两点前缀和相减 我们统计出每一种前缀和个数,记为\(A[i]\)表示值为\(i\)的位置出现 ...
- CF993E Nikita and Order Statistics
小于x的赋值为1,否则为0 区间等于k的个数 求0~n连续的n+1个k? N<=1e5? FFT! 考虑卷积建模:用下标相加实现转移到位,数值相乘类比乘法原理! 法一: 分治,然后FFT没了 法 ...
- CF993E Nikita and Order Statistics 多项式卷积 快速傅里叶变换
题意: 给你一个数组a1~an,对于k=0~n,求出有多少个数组上的区间满足:区间内恰好有k个数比x小.x为一个给定的数.n<=10^5.值域没有意义. 分析: 大神们都说这道题是一个套路题,真 ...
- Codeforces 756C Nikita and stack
Codeforces 756C Nikita and stack 题目大意: 给定一个对栈进行操作的操作序列,初始时序列上没有任何操作,每一次将一个本来没有操作的位置变为某一操作(push(x),po ...
- codeforces 637B B. Chat Order(map,水题)
题目链接: B. Chat Order time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- CLRS:median and order statistics
//maximum and minimum 暴力遍历 O(n) //i-th element dicide and conquer random_selected_partition ...
- codeforces 8C. Looking for Order 状压dp
题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...
随机推荐
- Alwayson--使用证书创建高可用性组
--场景: --有服务器SQLNode11,SQLNODE21,SQLNODE31三台在同一故障转移群集SQLNode01中 --的数据库服务器,安装SQL SERVER 2012 并配置启动alwa ...
- jquery chosen 插件多选初始化
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- java poi 获取单元格值时间
完整帮助类:JAVA poi 帮助类 /* * poi特殊日期格式:数字格式化成-yyyy年MM月dd日,格式 * */ private static ArrayList<String> ...
- 解决微服务网关Ocelot使用AddStoreOcelotConfigurationInConsul后请求404问题
一个小插曲,最近研究 netcore 微服务网关,在使用AddStoreOcelotConfigurationInConsul将配置存到consul后,任何经过网关的请求都出现404,并且没有任何有用 ...
- BitAdminCore框架应用篇:(五)核心套件querySuite列的定义
索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/coo ...
- .Net框架搭建:SQL Server EF MVC简单三层框架
https://blog.csdn.net/pukuimin1226/article/details/52313656
- 713. Subarray Product Less Than K
Your are given an array of positive integers nums. Count and print the number of (contiguous) subarr ...
- git修改文件权限方式
查看Repository中文件权限 git ls-tree HEAD 100644 blob 018321abfbff52d175a788597f5b5f3f17f67dc7 .gitignore 1 ...
- 导入不用的css文件及在不同设备显示不用的html页面
当一个页面对应有多个css样式文件时,我们可以根据地址栏的参数值而导入不同的css文件: function getCss() { var linkNode = document.createEleme ...
- iOS开发证书与配置文件的使用
前提 众所周知,开发iOS应用必须要有iOS证书(Certificates)和配置文件(Provisioning Profiles),那么问题来了: 1.什么是iOS证书,它是如何与app应用关联的? ...