【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]表示不 ...
随机推荐
- android触控,先了解MotionEvent(一)
http://my.oschina.net/banxi/blog/56421 这是我个人的看法,要学好android触控,了解MotionEvent是必要,对所用的MotionEvent常用的API要 ...
- 2018.07.31cogs2964. 数列操作η(线段树)
传送门 线段树基本操作. 给出一个排列b,有一个初始值都为0的数组a,维护区间加1,区间统计区间∑(ai/bi)" role="presentation" style=& ...
- 一个简单的Linux后门程序的实现
该程序实质是一个简单的socket编程,在受害方上运行攻击代码(后门进程),通过socket打开一个预设端口,并监听,等待攻击方的链接.一旦攻击方通过网络链接工具试图链接该socket,那么后门进程立 ...
- MySQL终端下常用命令
一:控制类命令 1.show variables like "%datadir%";显示注册在variables中(一个注册表key-value的格式存储数据)key能匹配%dat ...
- PHP中的mb_convert_encoding与iconv函数介绍
php传输乱码 mb_convert_encoding这个函数是用来转换编码的.原来一直对程序编码这一概念不理解,不过现在好像有点开窍了. 不过英文一般不会存在编码问题,只有中文数据才会有这个问题.比 ...
- 功率谱密度(PDS)的MATLAB分析
功率谱密度(PSD),它定义了信号或者时间序列的功率如何随频率分布.这里功率可能是实际物理上的功率, 或者更经常便于表示抽象的信号被定义为信号数值的平方,也就是当信号的负载为1欧姆(ohm)时的实际功 ...
- mac windows蓝牙问题
如果是win7.win8或win10三者的64位版本,可以下载驱动解决:http://file2.mydrivers.com/2014/notebook/apple_broadcom_bluetoot ...
- 简单的nginx模拟网站的负载均衡
环境:nginx1.10.3 虚拟机环境:3台centos7虚拟机 将148机器作为转发服务器配置如下 监听80端口,在http里面配置如下 将edc.com分别转发到149和150的服务器上 本地主 ...
- C#-安全
分为两种,代码访问安全,基于角色的安全性. 代码访问安全.是代码告诉.net框架,自己(代码)正确执行,需要的权限,.net框架手动分配代码可执行操作方面的权限,代码可列出调用自己需要的权限集合. 基 ...
- The First Android App----Starting Another Activity
To respond to the button's on-click event, open the activity_main.xml layout file and add the androi ...