HOJ 2275 Number sequence
来源:互联网 发布:域名举报需要多少人 编辑:程序博客网 时间:2024/06/05 23:50
Number sequence
题目链接:点击打开链接
解题思路:维护两个数组,一个记录 Aj 前面有几个比它小的,另一个记录 Aj 后面有几个比它小的,由于 Aj 前面和后面的数都满足 i<j<k;而且已经统计了前后比它小的数,相乘做个组合,求和就是最后结果,注意树状数组下标为零的情况。
#include <cstring>#include <cstdio>#include <algorithm>#include<math.h>using namespace std;#define MAXN 50005int n;int tree[32780];int data[MAXN];int a[MAXN];int b[MAXN];void add(int x,int num){ for(int i=x;i<=32780;i+=i&-i) tree[i]+=num;}int read(int x){ int sum=0; for(int i=x;i>0;i-=i&-i) sum+=tree[i]; return sum;}int main(){ long long sum; while(~scanf("%d",&n)) { sum=0; for(int i=0;i<n;i++) { scanf("%d",&data[i]); data[i]++; //避开0位置 } memset(tree,0,sizeof(tree)); for(int i=0;i<n;i++) { a[i]=read(data[i]-1); add(data[i],1); } memset(tree,0,sizeof(tree)); for(int i=n-1;i>=0;i--) { b[i]=read(data[i]-1); //要统计前面比data[i]小的数,避开0 add(data[i],1); } for(int i=0;i<n;i++) sum+=(long long)a[i]*(long long)b[i]; printf("%lld\n",sum); } return 0;}
0 0
- HOJ 2275 Number Sequence
- hoj 2275 Number Sequence
- hoj 2275 Number sequence
- Hoj 2275 Number Sequence
- HOJ 2275 Number sequence
- hoj 2275 Number sequence 树状数组解法
- HOJ 2275 Number sequence(树状数组)
- hoj 2275 Number sequence(树状数组)
- HOJ 2275 Number sequence(树状数组)
- -----hoj 2275 Number sequence(树状数组)
- HOJ 2275——Number sequence(树状数组)
- HOJ 2275 Number sequence(树状数组) 大于小于问题
- 树状数组题目总结三( 上)( HOJ 2275 Number sequence )
- HIT 2275 Number sequence
- hoj Score Sequence DP
- HOJ 2761 Gibonacci Sequence
- HOJ 1603 Brackets Sequence
- HOJ MaoLaoDa Number
- UVA 11728
- (转)伊世顿公司操纵期货市场案一审开庭
- Win32多线程学习
- NYOJ 九的余数
- java中equals和==的分析
- HOJ 2275 Number sequence
- JAVA网络通信之InetAddress类
- 设计模式
- golang 冒泡排序
- CCF NOI1025 统计奖牌
- 基类构造析构函数、子类构造析构函数和子类成员变量构造析构函数的调用顺序
- LeetCode
- 计算各种图形的周长(接口与多态)
- Eddy's mistakes