【bzoj5055】膜法师(离散化+树状数组)
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=5055
这道题……不得不说,从标题到题面都能看出一股浓浓的膜法气息……苟……
题意就是统计顺序三元组(似乎可以这么叫吧)的乘积和。顺序三元组有个低阶版本叫做顺序对,顺序对有一个亲兄弟叫做逆序对。既然我们可以用值域树状数组来处理关于顺/逆序对,因此也可以尝试用同样的方法处理这道题。
我们可以固定a[j],求剩下的a[i]和a[k]。ans=a[j]*sigma(a[i]*a[k])
于是我们就把一个顺序三元组拆成了两个顺序对,一个是a[i]<a[j]且i<j,另一个是a[j]<a[k]且j<k,且这两个逆序对是不干扰的,可以直接把结果乘起来。
所以我们对于每个数,求出左边比它小的数的总和,和右边比他大的数的总和,记为l[i]和r[i]。于是ans=sigma(a[i]*l[i]*r[i])
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<queue>
#include<vector>
#define ll long long
#define mod 19260817
using namespace std;
inline ll read()
{
ll tmp=; char f=,c=getchar();
while(c<''||''<c){if(c=='-')f=-; c=getchar();}
while(''<=c&&c<=''){tmp=tmp*+c-''; c=getchar();}
return tmp*f;
}
ll c[];
ll a[],id[],rk[];
ll l[],r[];
int n;
bool cmp(ll x,ll y){return a[x]<a[y];}
void add(int x,ll k){while(x<=n){c[x]+=k; x+=x&(-x);}}
ll getsum(int x){ll sum=; while(x){sum+=c[x]; x-=x&(-x);} return sum;}
int main()
{
int i;
n=read();
for(i=;i<=n;i++)a[i]=read(),id[i]=i;
sort(id+,id+n+,cmp);
rk[id[]]=;
for(i=;i<=n;i++){
rk[id[i]]=rk[id[i-]];
if(a[id[i]]>a[id[i-]])++rk[id[i]];
}
for(i=;i<=n;i++)c[i]=;
for(i=;i<=n;i++){
l[i]=getsum(rk[i]-)%mod; add(rk[i],a[i]);
}
for(i=;i<=n;i++)c[i]=; ll sum=;
for(i=n;i;i--){
r[i]=(sum-getsum(rk[i]))%mod; add(rk[i],a[i]); sum+=a[i];
}
ll ans=;
for(i=;i<=n;i++)ans=(ans+l[i]*r[i]%mod*a[i])%mod;
printf("%lld\n",ans);
return ;
}
bzoj5055
【bzoj5055】膜法师(离散化+树状数组)的更多相关文章
- 【bzoj5055】膜法师 离散化+树状数组
题目描述 给定一个序列$a$,求满足$i<j<k$且$a_i<a_j<a_k$的三元组$(i,j,k)$的个数. 输入 第一行1个数 n 第二行n个数 a_i 输出 一个数,表 ...
- BZOJ_5055_膜法师_树状数组+离散化
BZOJ_5055_膜法师_树状数组+离散化 Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然 ...
- CodeForces 540E - Infinite Inversions(离散化+树状数组)
花了近5个小时,改的乱七八糟,终于A了. 一个无限数列,1,2,3,4,...,n....,给n个数对<i,j>把数列的i,j两个元素做交换.求交换后数列的逆序对数. 很容易想到离散化+树 ...
- Ultra-QuickSort(归并排序+离散化树状数组)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 50517 Accepted: 18534 ...
- HDU 5862 Counting Intersections(离散化+树状数组)
HDU 5862 Counting Intersections(离散化+树状数组) 题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=5862 D ...
- BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组
BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 ...
- poj-----Ultra-QuickSort(离散化+树状数组)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 38258 Accepted: 13784 ...
- Code Forces 652D Nested Segments(离散化+树状数组)
Nested Segments time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- hdu 3015 Disharmony Trees (离散化+树状数组)
Disharmony Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【bzoj4627】[BeiJing2016]回转寿司 离散化+树状数组
题目描述 给出一个长度为n的序列,求所有元素的和在[L,R]范围内的连续子序列的个数. 输入 第一行包含三个整数N,L和R,分别表示寿司盘数,满意度的下限和上限. 第二行包含N个整数Ai,表示小Z对寿 ...
随机推荐
- veridata实验举例(4)验证veridata查找出updata、delete操作导致的不同步现象
veridata实验举例(4)验证veridata查找出updata.delete操作导致的不同步现象 续接:<veridata实验举例(3)验证veridata查找出insert操作导致的不同 ...
- 网页或WEB应用或PC端浏览器调用百度地图API
今天在写微网页中遇见了调用百度地图这个问题:在一个容器中显示地图信息如图(设计图截图) 然后在网上查了接口:http://api.map.baidu.com/,就是这个东东,当然不止这个,还有几个必选 ...
- Android WebView-应用内嵌入浏览器
移动应用开发,web app.Native app的讨论已经很久了,纯粹的web app还很少,多少能见到Native + web混合的app,混合的app是在Native app中写一个浏览器加载 ...
- ECMAScript/JS 基础知识讲解
闭包 下面这个方法能输入0 1 2 ... 9吗?显然是不可以的,输出结果是10个10. function test() { var arr = []; for(var i = 0; i < 1 ...
- ng-disabled的使用
1.适用范围 该指令适用于<input>, <select>,<button> 和 <textarea> 元素. 2.用法解析 ng-disabled ...
- ajax异步请求分页显示
html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 常用算法及其Python实现
冒泡排序 def bubble_sort(li): for i in range(len(li)-1): # i表示第几趟 for j in range(len(li)-i-1 ...
- 我的Android进阶之旅------>HTTP Content-type 对照表
HTTP Content-type 对照表 文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*( 二进制流, 不知道下载文件类 ...
- 常用模块一(random模块、time模块、sys模块)
一.random模块 import random # 1 取随机小数 应用:数学计算 ret = random.random() # 大于0且小于1之间的小数 print(ret) # 0.53559 ...
- applicationContext.xml配置简介
这里简单介绍一下spring的配置文件applicationContext.xml中的一些配置的作用. <context:component-scan base-package="&q ...