离散化后通过树状数组求出:

b[i]为i之前比它小的。

c[i]为i之前比它大的=i-1-i之前小于等于它的。

d[i]为i之后比它小的。

e[i]为i之后比它大的=n-i-f[i]。

f[i]为i之后小于等于它的。

则:

$cnt_{123}=\sum_{i=1}^n b[i]e[i]$

$cnt_{321}=\sum_{i=1}^n c[i]d[i]$

$cnt_{213}$=将序列a翻转后的$cnt_{312}$

$cnt_{231}$=将序列a翻转后的$cnt_{132}$

$cnt_{312}=\sum_{i=1}^n b[i]c[i]-cnt_{132}$

$cnt_{132}$可以这样计算:

枚举$3$的位置$i$,它右边比它小的$k$有$b[k]$的贡献,还要减去$i$右下角内$12$形状的二元组的个数,即右下角$b[k]+f[k]$的和$-C_{d[i]}^2$。

时间复杂度$O(n\log n)$。

#include<cstdio>
#include<algorithm>
#define N 100010
typedef long long ll;
int n,i,a[N],b[N],c[N],d[N],e[N],f[N];ll bit[N],c1,c2,c3,c4,c5,c6,all;
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
inline int lower(int x){int l=1,r=n,mid,t;while(l<=r)if(b[mid=(l+r)>>1]<=x)l=(t=mid)+1;else r=mid-1;return t;
}
inline void add(int x,int y){for(;x<=n;x+=x&-x)bit[x]+=y;}
inline ll ask(int x){ll t=0;for(;x;x-=x&-x)t+=bit[x];return t;}
void write(ll x){for(printf("0."),i=0;i<20;i++)x*=10,printf("%d",x/all),x%=all;puts("");}
int main(){for(read(n),i=1;i<=n;i++)read(a[i]),b[i]=a[i];for(std::sort(b+1,b+n+1),i=1;i<=n;i++)a[i]=lower(a[i]);for(i=1;i<=n;i++)b[i]=ask(a[i]-1),c[i]=i-1-ask(a[i]),add(a[i],1);for(i=1;i<=n;i++)bit[i]=0;for(i=n;i;i--)d[i]=ask(a[i]-1),f[i]=ask(a[i]),e[i]=n-i-f[i],add(a[i],1);for(i=1;i<=n;i++)bit[i]=0;for(i=n;i;i--){c1+=1LL*b[i]*e[i],c6+=1LL*c[i]*d[i];c5+=1LL*b[i]*c[i],c2+=ask(a[i]-1)-1LL*d[i]*(d[i]-1)/2,add(a[i],b[i]+f[i]);}c5-=c2;for(i=1;i<n-i+1;i++)std::swap(a[i],a[n-i+1]);for(i=1;i<=n;i++)bit[i]=0;for(i=1;i<=n;i++)b[i]=ask(a[i]-1),c[i]=i-1-ask(a[i]),add(a[i],1);for(i=1;i<=n;i++)bit[i]=0;for(i=n;i;i--)d[i]=ask(a[i]-1),f[i]=ask(a[i]),add(a[i],1);for(i=1;i<=n;i++)bit[i]=0;for(i=n;i;i--)c3+=1LL*b[i]*c[i],c4+=ask(a[i]-1)-1LL*d[i]*(d[i]-1)/2,add(a[i],b[i]+f[i]);c3-=c4;all=c1+c2+c3+c4+c5+c6;write(c1),write(c2),write(c3),write(c4),write(c5),write(c6);return 0;
}

  

转载于:https://www.cnblogs.com/clrs97/p/4858143.html

BZOJ2837 : 小强的形状相关推荐

  1. 赤兔四足机器人的作用_跑得快,打不死!清华大学开发“小强”机器人,壮汉狂踩也挡不住前进步伐...

    大数据文摘编辑部出品 提到蟑螂,很多同学都深恶痛绝. 这种身型小巧的虫子不仅跑得快.繁殖能力强,而且超级抗打抗压,在所有的环境下都能顽强地生存下去. 12mm高的蟑螂可以躲进4mm的缝隙 也难怪周星驰 ...

  2. 清华伯克利造出机械小强:承重200万倍踩不死,跑得和真蟑螂一样快

    郭一璞 安妮 发自 凹非寺  量子位 报道 | 公众号 QbitAI 打不死的小强,真的是太讨厌了! 既然打不死,那--干脆仿造一个出来,为我所用,岂不是爽歪歪? 还真有人仿造成功了,最新的一期Sci ...

  3. python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...

    问题引入 在小强学Python+OpenCV之-1.4.2裁剪一节,我们使用的是numpy数组切片功能实现图片区域的裁剪. 那么,如果我们想要裁剪图像中任意形状的区域时,应该怎么办呢? 答案是,使用掩 ...

  4. 自制小强机器人,能看能听能说能画

    1 概述 首先可以先看下小强机器人上个版本: 自己制作智能语音机器人(基于jetson nano)自己制作智能语音机器人(基于jetson nano)_智能语音机器人开发_AI强仔的博客-CSDN博客 ...

  5. view(*args)改变张量的大小和形状_pytorch reshape numpy

    20201227 这个方法是在不改变数据内容的情况下,改变一个数组的格式,参数及返回值,官网介绍: a:数组–需要处理的数据 newshape:新的格式–整数或整数数组,如(2,3)表示2行3列,新的 ...

  6. 目标形体形状轮廓重建:ICCV2019论文解析

    目标形体形状轮廓重建:ICCV2019论文解析 Shape Reconstruction using Differentiable Projections and Deep Priors 论文链接: ...

  7. 人体姿态和形状估计的视频推理:CVPR2020论文解析

    人体姿态和形状估计的视频推理:CVPR2020论文解析 VIBE: Video Inference for Human Body Pose and Shape Estimation 论文链接:http ...

  8. CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状

    CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Sha ...

  9. PyTorch 笔记(04)— Tensor 属性方法(获取元素个数numel/neleme、查看形状size()/shape、增减维度squeeze()/unsqueeze()、resize形状)

    1. 获取 Tensor 元素个数 获取 Tensor 的元素个数 ,a.numel() 等价 a.nelement() In [1]: import torch as t In [5]: a = t ...

最新文章

  1. 关于pyecharts 地图显示添加数据的问题
  2. Datawhale两岁啦!
  3. 关于excel导入到封装成工具类jar包和web版门店收银网络无法无法连接上的解决方法...
  4. Struts2教程2:处理一个form多个submit
  5. 在Ubuntu中永久添加DNS
  6. 精通android布局,Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...
  7. c语言课全部由字母,C语言程序设计课程期末练习试题.doc
  8. endp 汇编start_飞思卡尔Kinetis L 汇编语言启动文件startup_MK25Z4简单分析
  9. ubuntu下定时任务的执行
  10. 关于 jquery和js获取宽度时只能取整数,取不到小数点
  11. 算法 matlab_MATLAB遗传算法及其实现
  12. Java开发笔记(一百四十)JavaFX的选择框
  13. 解决EPSON LQ-630k打印机打印方向相反的问题(预览正常打印就不行)
  14. 五金行业智慧采购解决方案:应用集中采购协同管理系统激活企业数字化采购价值
  15. R语言中同比增长和环比增长
  16. 打鼾,是一种全身性疾病
  17. 专为风电筒叶片除冰研发的爬壁机器人
  18. 计算机常用英文简称扫盲
  19. Win98 源代码(特别版)
  20. iSubtitle for Mac(视频字幕制作软件)

热门文章

  1. andiod 导入工程 报错
  2. WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色
  3. windows server 2008 r2之间的ftp传输脚本
  4. 关于SQL操作的一些经验
  5. career opportuties
  6. start for graduate studies career path
  7. statistics DATA in jiangsu
  8. identification for completing the census
  9. 当你真的去买菜的时候,你就知道为什么奶奶姥姥对于价格那么敏感,为什么喜欢打折?
  10. 2019年清华自主招生部分试题