Time Limit Exceeded 求逆序对数。
Posted 天道酬勤007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Time Limit Exceeded 求逆序对数。相关的知识,希望对你有一定的参考价值。
/** 题目:Time Limit Exceeded 链接:https://oj.ejq.me/problem/28 题意:求逆序对数。 思路:树状数组求逆序对数。维护前面有多少个<=当前数的数的个数。 */ #include<bits/stdc++.h> typedef long long ll; using namespace std; const int maxn = 1e6+10; const int mod = 1e9+7; ll c[maxn]; int flag[maxn]; int n; int a[maxn]; int lowbit(int t) { return t&(-t); } ll getSum(int pos) { ll sum = 0; while(pos>0){ sum += c[pos]; pos -= lowbit(pos); } return sum; } void update(int pos,int add) { while(pos<=n){ c[pos]+=add; pos += lowbit(pos); } } int main() { while(scanf("%d",&n)==1) { memset(flag, 0, sizeof flag); for(int i = 1; i <= n; i++){ scanf("%d",&a[i]); flag[a[i]] = 1; } int index = 1;///树状数组从1开始。 for(int i = 0; i <= 1000000; i++){ if(flag[i]){ flag[i] = index++; } } memset(c, 0, sizeof c); ll ans = 0; for(int i = 1; i <= n; i++){ ans += i-1-getSum(flag[a[i]]); update(flag[a[i]],1); } printf("%lld\n",ans); } return 0; }
以上是关于Time Limit Exceeded 求逆序对数。的主要内容,如果未能解决你的问题,请参考以下文章
[Time Limit Exceeded]Quoit Design
python3OJ 1001 487-3279 Time Limit Exceeded
spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常