【xsy1504】 pitcure 树状数组


数据范围:$n≤2\times 10^5$
以下是题解:

#include<bits/stdc++.h>
#define L unsigned int
#define MOD 16777216
#define lowbit(x) ((x)&(-(x)))
#define M 200005
using namespace std; L b[M]={},a[M]={},n;
void add(L x,L k){for(L i=x;i<=n;i+=lowbit(i)) b[i]+=k;}
L query(L x){L k=; for(L i=x;i;i-=lowbit(i)) k+=b[i]; return k;} L solve1(){
static L r[M]={},j[M]={}; L res=;
memset(b,,sizeof(b));
for(L i=n;i;i--){
r[i]=query(n)-query(a[i]);
add(a[i],);
}
memset(b,,sizeof(b));
for(L i=;i<=n;i++){
j[i]=query(a[i]);
add(a[i],i);
}
memset(b,,sizeof(b));
for(L i=;i<=n;i++){
L l=query(a[i]),now=;
now+=1LL*l*(i-);
now-=1LL*l*(l-)/;
now-=j[i];
res+=1LL*now*r[i];
add(a[i],);
}
return res;
}
L solve2(){
static L r[M]={},j[M]={}; L res=;
memset(b,,sizeof(b));
for(L i=n;i;i--){
r[i]=query(n)-query(a[i]);
add(a[i],);
}
memset(b,,sizeof(b));
for(L i=;i<=n;i++){
j[i]=query(a[i]);
add(a[i],a[i]);
}
memset(b,,sizeof(b));
for(L i=;i<=n;i++){
L l=query(a[i]),now=;
now+=1LL*l*(a[i]-);
now-=1LL*l*(l-)/;
now-=j[i];
res+=1LL*now*r[i];
add(a[i],);
}
return res;
} L solve3(){
L res=; memset(b,,sizeof(b));
for(L i=n;i;i--){
L hh=query(n)-query(a[i]);
res+=(1LL*hh*(hh-)*(hh-)/);
add(a[i],);
}
return res;
}
L solve4(){
static L f[M]={};
for(L i=n;i;i--) f[i]=;
for(L x=;x<=;x++){
memset(b,,sizeof(b));
for(L i=n;i;i--){
L hh=query(n)-query(a[i]);
add(a[i],f[i]);
f[i]=hh;
}
}
L res=; for(L i=;i<=n;i++) res+=f[i];
return res;
} main(){
scanf("%u",&n);
for(L i=;i<=n;i++) scanf("%u",a+i);
L res1=solve1();//1x2x
L res2=solve2();//14xx
L res3=solve3();//1xxx
L res4=solve4();//
printf("%u\n",((res1+res2-res3+res4)%MOD+MOD)%MOD);
}
【xsy1504】 pitcure 树状数组的更多相关文章
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- bzoj1878--离线+树状数组
这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- BZOJ 3289: Mato的文件管理[莫队算法 树状数组]
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2399 Solved: 988[Submit][Status][Di ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 508 Solved: 158[Submit][Sta ...
- 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)
题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...
随机推荐
- PTA第五次作业
#include<stdio.h> #include<math.h> int main () { int n,m,i,j,a; scanf("%d",&am ...
- 2081.09.22 Kuma(非旋treap)
描述 有N张卡片,编号从0到n-1, 刚开始从0到n-1按顺序排好. 现有一个操作, 对于p. l,表示从第p张卡片之后的l张卡片拿到 最前面. 例如n=7的时候, 刚开始卡片序列为0 1 2 3 4 ...
- 8b10b
目的:保持直流平衡DC Balance). running disparity() 8bit原始数据会分成两部分,其低5位会进行5B/6B编码,高3位则进行3B/4B编码,这两种映射关系在当时已经成为 ...
- Spring3.x错误---- Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.
Spring3.x错误: 解决方法: 缺少cglib的包, 下载地址: http://sourceforge.net/projects/cglib/files/latest/download?sour ...
- Mybatis中的update动态SQL语句
Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作: <select id="findBySrcId" resultMap="ent ...
- APUE(5)---标准I/O库 (3)
十.定位流 #include <stdio.h> long ftell(FILE *fp); //若成功,返回当前文件位置指示:若出错,返回-1L int fseek(FILE *fp, ...
- 21 Guns -- Green Day
21 Guns Green Day (绿日乐队)的代表曲之一.歌曲的主题是反战,同时安慰了曾 经信任布什政府如今失望透顶的美国民众.这首歌也被电影< ...
- STS中配置MyBatis代码生成器
1.STS工具菜单项Help > Eclipse Marketplace... 2.输入“mybatis”关键字搜索 3.选择MyBatis Generator 1.3.7进行安装 4.安装成功 ...
- 射线和三角形的相交检测(ray triangle intersection test)【转】
本文以Fast, Minimum Storage Ray Triangle Intersection为参考,在此感谢原作者,大家也可以直接阅读原版. 概述 射线和三角形的相交检测是游戏程序设计中一个常 ...
- java 发架包
// 完整发布流程 clean compile deploy install -U -DskipTests // 把架包安装到本地,跳过测试 install -Dmaven.test.skip=tru ...