朗格拉日计数(counter)

题目描述

在平面上以圆周等分排列着n个带标号(标号为1~n)的点,你需要计算有多少个三元组(a,b,c),满足a<b<c而且标号为a,b,c的点在圆上分布的顺序为顺时针顺序。

分布顺序为顺时针的意思是,从标号为a的点出发,顺时针在圆上遍历一圈,标号为b的点先遍历到,标号为c的点后遍历到(a<b<c)。

输入

第一行一个整数n表示点数。

第二行n个整数表示一个1~n的排列,按顺时针顺序描述圆上点的标号。

输出

仅一行一个整数表示答案

约定

20%的数据:n≤100n≤100

60%的数据:n≤5000n≤5000

100%的数据:3≤n≤2∗1053≤n≤2∗105


solution

好题,xiaoyao巨

显然点的大小关系应为123 231 312

123很好统计

231=**1-321 这两个也很好统计

312=3**-321  这也很好统计

就结束了

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 200005
using namespace std;
int n,s[maxn],a1[maxn],a2[maxn],b1[maxn],b2[maxn];
int tr[maxn];
void add(int i){
for(;i<=n;i+=i&-i)tr[i]++;
}
int ask(int i){
int sum=0;for(;i;i-=i&-i)sum+=tr[i];
return sum;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&s[i]);
for(int i=1;i<=n;i++){
add(s[i]);
a1[i]=ask(s[i]-1);
a2[i]=i-1-a1[i];
}
memset(tr,0,sizeof tr);
for(int i=n;i>=1;i--){
add(s[i]);
b1[i]=ask(s[i]-1);
b2[i]=n-i-b1[i];
}
long long ans=0,tmp;
for(int i=1;i<=n;i++){
ans=ans+1LL*a1[i]*b2[i];
tmp=1LL*a2[i]*b1[i];
ans=ans+1LL*a2[i]*(a2[i]-1)/2+1LL*b1[i]*(b1[i]-1)/2-tmp-tmp;
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. MIT 6.828 JOS学习笔记5. Exercise 1.3
  2. JAVA join()方法
  3. WMSWebServiceExtension 使用,支持压缩
  4. linux中安装eclipse,安装好之后不能直接建servlet,不能直接在jsp页面中run on server.权限在作怪,我猜的,
  5. C++ typedef详解
  6. Obective-C之宏定义
  7. Codeforces 306B
  8. VC之美化界面(内容覆盖十分全面,经典)
  9. win7下安装sdks
  10. java web方面的面试问题,Spring MVC方面的面试问题,摘自java web轻量级开发面试教程
  11. Java学习笔记22---内部类之成员内部类的继承问题
  12. Angular20 nginx安装,angular项目部署
  13. 【分享】【原创开源应用第4期】给ili9488,RA8875类显示屏的emWin底层增加DMA加速方案
  14. echarts 折线图点击高亮
  15. [Bayes] qgamma &amp; rgamma: Central Credible Interval
  16. Duolingo 提高用户留存率的6个手段
  17. vue教程1-08 交互 get、post、jsonp
  18. 【51nod】1061 最复杂的数 V2
  19. 《DSP using MATLAB》示例Example 8.26
  20. 移动端尺寸新写法-rem

热门文章

  1. Zeppelin interperter 模式设置总结图解1
  2. lvs+ipvsadm负载均衡
  3. 【Effective C++ 读书笔记】条款04:确定对象使用前已先被初始化
  4. jpeglib的使用
  5. sql语句(Oracle和sqlserver)
  6. POJ-3126 BFS,埃式筛选及黑科技
  7. UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xab in position 11126: illegal multibyte sequence
  8. 【转帖】LoadRunner系统架构简介
  9. ListView Viewholder的坑 线性布局的坑
  10. Pycharm的使用一