HIT 2275 Number sequence
思路: 树状数组
分析:
1 题目要求的是总共的搭配方式,满足Ai < Aj > Ak.并且i j k不同
2 我们开两个树状数组,第一个在输入的时候就去更新。然后我们在去枚举Aj 同时维护第二个树状数组,对于AI来说就是在第二个树状数组里面求和
然后在通过第一个树状数组就可以求出Ak的个数,把结果相乘即可
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; const int MAXN = 50010; int n , num[MAXN];
int treeNumOne[MAXN];
int treeNumTwo[MAXN]; int lowbit(int x){
return x&(-x);
} int getSum(int *arr , int x){
int sum = 0;
while(x){
sum += arr[x];
x -= lowbit(x);
}
return sum;
} void add(int *arr , int x , int val){
while(x < MAXN){
arr[x] += val;
x += lowbit(x);
}
} long long getAns(){
if(n < 3)
return 0;
long long ans = 0;
add(treeNumTwo , num[1] , 1);
for(int i = 2 ; i < n ; i++){
int x = getSum(treeNumTwo , num[i]-1);
int y = getSum(treeNumOne , num[i]-1);
add(treeNumTwo , num[i] , 1);
ans += (x)*(y-x);
}
return ans;
} int main(){
while(scanf("%d" , &n) != EOF){
memset(treeNumOne , 0 , sizeof(treeNumOne));
memset(treeNumTwo , 0 , sizeof(treeNumTwo));
for(int i = 1 ; i <= n ; i++){
scanf("%d" , &num[i]);
num[i]++;
add(treeNumOne , num[i] , 1);
}
printf("%lld\n" , getAns());
}
return 0;
}
HIT 2275 Number sequence的更多相关文章
- HOJ——T 2275 Number sequence
http://acm.hit.edu.cn/hoj/problem/view?id=2275 Source : SCU Programming Contest 2006 Final Time li ...
- HOJ 2275 Number sequence
题意:问你有多少个序列满足Ai < Aj > Ak and i < j < k. 思路:对每个数求它之前和之后分别有多少个个数比它小,两边相乘.最后求和.具体实现先用树状数组正 ...
- HDU 1005 Number Sequence
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- POJ 1019 Number Sequence
找规律,先找属于第几个循环,再找属于第几个数的第几位...... Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- HDOJ 1711 Number Sequence
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Number Sequence
Number Sequence A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) ...
- [AX]AX2012 Number sequence framework :(三)再谈Number sequence
AX2012的number sequence framework中引入了两个Scope和segment两个概念,它们的具体作用从下面序列的例子说起. 法国/中国的法律要求财务凭证的Journal nu ...
- KMP - HDU 1711 Number Sequence
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 1005:Number Sequence(水题)
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
随机推荐
- ubuntu 12.04上安装OpenERP 7的一次记录
登陆ssh, 先更新系统: sudo apt-get update && sudo apt-get dist-upgrade 接着再为openerp运行创建一个系统用户,用户名就叫op ...
- myeclipes准备工作
设置jsp中默认编码为utf-8
- 20160205.CCPP体系详解(0015天)
程序片段(01):01.杨辉三角.c 内容概要:杨辉三角 #include <stdio.h> #include <stdlib.h> #define N 10 //01.杨辉 ...
- python练习程序(c100经典例11)
题目: 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? a=1;b=1 print a,b, for i ...
- uva 11991
STL 使用,,由于数据范围没有 超越极限数据 依旧可以用 vector 搞定: #include<iostream> #include<stdio.h> #include& ...
- 3500常用汉字与标点符号(已排除不支持GB2312的)
.?!,.::“”‘’…()<>〈〉[].,:;!?-'_"'()[]<>|&~;+-*/=<>0123456789ABCEFGHIJKLMNOP ...
- 高新服务平台在SUSE系统上重新部署笔录
安装步骤 ./shutdown.sh 停止tomcat (1) 删除 zjgx 目录下 除bbs 和Demos所有目录和文件 (2)上传zjgx0519.zip 到zjgx目录下 (3)unz ...
- Creole
Home Bisher besucht: AnzeigenAnhängeInfo The Creole 1.0 project has been succ ...
- 如何在MySql中记录SQL日志
SQL server有一个sql profiler可以实时跟踪服务器执行的SQL语句,这在很多时候调试错误非常有用.例如:别人写的复杂代码.生产系统.无调试环境.无原代码... ... 查了一下资 ...
- [再寄小读者之数学篇](2014-11-19 $\tan x/x$ 在 $(0,\pi/2)$ 上递增)
$$\bex \frac{\tan x}{x}\nearrow. \eex$$ Ref. [Proof Without Words: Monotonicity of $\tan x/x$ on $(0 ...