【洛谷】2717 寒假作业 树状数组
2017-10-29 21:12
260 查看
题目传送门
观察数据范围,n≤1e5,时间复杂度不是O(n)就是O(nlogn),最多不过O(nlog2n)。但这题显然O(n)没法搞,只能从O(nlogn)来考虑了。
直接把题意转化成一个等式:ai+ai+1+…+ajj−i+1≥k,其中i≤j
变形一下:ai+ai+1+…+aj≥k×(j−i+1)⇐⇒ai−k+ai+1−k+…+aj−k≥0
我们定义bi表示ai−k,上述等式变成:bi+bi+1+…+bj≥0
我们再定义si表示∑i1bi,上述等式变成:sj−si−1≥0⇐⇒sj≥si−1
这个让我们想到了什么?没错!顺序对!
于是直接树状数组统计顺序对,时间复杂度O(nlogn),轻松水过。
p.s.这题的答案需要开long long,否则只有90分……数据大坑
附上AC代码:
观察数据范围,n≤1e5,时间复杂度不是O(n)就是O(nlogn),最多不过O(nlog2n)。但这题显然O(n)没法搞,只能从O(nlogn)来考虑了。
直接把题意转化成一个等式:ai+ai+1+…+ajj−i+1≥k,其中i≤j
变形一下:ai+ai+1+…+aj≥k×(j−i+1)⇐⇒ai−k+ai+1−k+…+aj−k≥0
我们定义bi表示ai−k,上述等式变成:bi+bi+1+…+bj≥0
我们再定义si表示∑i1bi,上述等式变成:sj−si−1≥0⇐⇒sj≥si−1
这个让我们想到了什么?没错!顺序对!
于是直接树状数组统计顺序对,时间复杂度O(nlogn),轻松水过。
p.s.这题的答案需要开long long,否则只有90分……数据大坑
附上AC代码:
#include <cstdio> #include <cctype> #include <algorithm> using namespace std; const int N=1e5+10; struct note{ int w,wz; bool operator < (const note lyf) const {return w==lyf.w?wz<lyf.wz:w<lyf.w;} }a ; int n,m,x,t ; long long ans; inline char nc(){ static char ch[100010],*p1=ch,*p2=ch; return p1==p2&&(p2=(p1=ch)+fread(ch,1,100010,stdin),p1==p2)?EOF:*p1++; } inline void read(int &a){ static char c=nc();int f=1; for (;!isdigit(c);c=nc()) if (c=='-') f=-1; for (a=0;isdigit(c);a=(a<<3)+(a<<1)+c-'0',c=nc()); return (void)(a*=f); } #define lowbit(x) ((x)&(-x)) inline int query(int x){int sum=0; for (int i=x; i; i-=lowbit(i)) sum+=t[i]; return sum;} inline void add(int x){for (int i=x; i<=n; i+=lowbit(i)) ++t[i]; return;} int main(void){ read(n),read(m),++n,a[1].wz=1; for (int i=2; i<=n; ++i) read(x),a[i].w=a[i-1].w+x-m,a[i].wz=i; sort(a+1,a+1+n); for (int i=1; i<=n; ++i) ans+=query(a[i].wz),add(a[i].wz); printf("%lld\n",ans); return 0; }
相关文章推荐
- 洛谷 P2717 寒假作业
- 全排列应用--搭积木/凑算式/随机组合/方格填数/寒假作业
- 寒假作业--dfs
- 2017第一次寒假作业——我的第一篇随笔
- 寒假作业第二篇随笔(A+B)
- 寒假作业二汇总
- 【寒假任务】 洛谷1181 数列分段section I
- [填坑完毕] 寒假作业计划
- Candy Sharing Game------[NWPU][2018寒假作业][通用版]一、热身 [Cloned]B题
- 第三次寒假作业
- 寒假作业三
- 寒假作业(Ⅲ)—— 四则运算的小程序
- 寒假作业三
- stl的map1------[NWPU][2018寒假作业][通用版]二、stl ,模拟,贪心等 [Cloned]A题
- 洛谷 2056 采花 - 可持久化线段树 - 树状数组
- 寒假作业2(学习计划)
- 寒假作业2
- 寒假作业2
- 第四次寒假作业
- 个人寒假作业项目《印象笔记》第一天