小技巧
半世blue
这个作者很懒,什么都没留下…
展开
-
双堆维护中位数
1,先把第一个数赋给mid 2,后来的数如果>=mid就插入到小顶堆 3,每次插入新的值后都保证小顶堆的大小与大顶堆相等或大1 4,最后的中位数就是mid(n为奇数),或者mid和小顶堆的堆顶元素的平均 priority_queueint,vectorint>,greaterint> >smallseq; priority_queueint,vectorint>,lessint> >bigs原创 2018-01-25 18:00:31 · 841 阅读 · 0 评论 -
树状数组求逆序数
曜酱的心意ChikaChika说希望和我一起做学园偶像的时候,我真的很开心。——WatanabeYouWatanabeYou曜是千歌的青梅竹马,但是AqoursAqours成立以后,千歌似乎总是与梨子在一起,而把曜冷落了。 为了让千歌知晓自己的心意,曜酱决定做一件大事! 她决定把一个给定的11~nn的排列{a1,a2,…,an}{a1,a2,…,an}(1≤ai≤n1≤ai≤n,且aiai各原创 2017-07-25 11:31:44 · 344 阅读 · 0 评论 -
树状数组的区间修改求和
差分数组:c[i]=a[i]-a[i-1] 然后可以发现 a[i]=a[1]+a[2]-a[1]+a[3]-a[2]+…+a[i]-a[i-1]=c[1]+c[2]+…+c[i] 1,区间修改单点查询 修改a[l]到a[r]值 的时候,只需修改c[l]和c[r+1],然后求一次c[i]的前缀和就可以。 2,区间修改区间查询 还是利用差分的思想。区间求和的公式为: sum(1,n) =原创 2017-11-02 19:07:57 · 426 阅读 · 0 评论 -
poj3061 Subsequence【尺取法】
传送门:http://poj.org/problem?id=3061 Description A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, and a positive integer S (S < 100 000 000) are ...原创 2018-03-22 19:42:51 · 99 阅读 · 0 评论 -
HYSBZ - 3884 上帝与集合的正确用法
#include<bits/stdc++.h> using namespace std; const int maxn=1e7+5; typedef long long LL; int p[maxn],phi[maxn]; bool prime[maxn]; LL eular(LL x) { LL ret=1; for(int i=2;i*i<=x;i++){ ...原创 2018-07-29 14:27:53 · 211 阅读 · 0 评论