朗格拉日计数(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;
}

朗格拉日计数(counter)的更多相关文章

  1. 【Foreign】朗格拉日计数 [暴力]

    朗格拉日计算 Time Limit: 10 Sec  Memory Limit: 128 MB Description Input Output 仅一行一个整数表示答案. Sample Input 5 ...

  2. 洛谷 P4708 画画(无标号欧拉子图计数)

    首先还是类似于无标号无向图计数那样,考虑点的置换带动边的置换,一定构成单射,根据 Burnside 引理: \[|X / G| = \frac{1}{|G|}\sum\limits_{g \in G} ...

  3. SVM 使用朗格朗日乘子得到权重向量

    紧跟前一篇SVM博文,下面我们用数学推导来导出权重的计算方法.

  4. BZOJ2190 [SDOI2008]仪仗队(欧拉函数)

    与HDU2841大同小异. 设左下角的点为(1,1),如果(1,1)->(x,y)和(1,1)->(x',y')向量平行,那只有在前面的能被看见.然后就是求x-1.y-1不互质的数对个数. ...

  5. js多选下拉框

    1.js原生实现 1.1:引用JS文件 /*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ !function(a,b ...

  6. 【小梅哥FPGA进阶教程】MC8051软核在FPGA上的使用

    十.MC8051软核在FPGA上的使用 本教程内容力求以详细的步骤和讲解让读者以最快的方式学会 MC8051 IP core 的应用以及相关设计软件的使用,并激起读者对 SOPC 技术的兴趣.本实验重 ...

  7. words2

    餐具:coffee pot 咖啡壶coffee cup 咖啡杯paper towel 纸巾napkin 餐巾table cloth 桌布tea -pot 茶壶tea set 茶具tea tray 茶盘 ...

  8. 数据分析学习(zhuan)

    http://www.zhihu.com/question/22119753 http://www.zhihu.com/question/20757000 ********************** ...

  9. AE二次开发中几个功能速成归纳(符号设计器、创建要素、图形编辑、属性表编辑、缓冲区分析)

    /* * 实习课上讲进阶功能所用文档,因为赶时间从网上抄抄改改,凑合能用,记录一下以备个人后用. * * ----------------------------------------------- ...

随机推荐

  1. 4W条人才表循环处理业务sql优化过程

    场景: 使用windows服务定时更新合同数据:执行存储过程(pas_RefreshContractStatus),但存储过程里面有一个需要更新4W条人才表循环处理业务 问题: 循环更新4W条人才表状 ...

  2. PHP递归操作

    对于php的递归操作解释说明,递归基本上是学习每种语言都要会的最基本的操作.来吧,下面是我闲的时候随便写的一个对数组进行遍历操作的一个递归函数. 原理很简单,递归就是在一个函数里面调用自身的一种机制. ...

  3. Ubuntu下安装libpcap+测试安装

    1.从ftp://ftp.gnu.org/gnu/下载flex.bison.GNU M4.libpcap安装包,具体的链接分别如下: flex下载:http://flex.sourceforge.ne ...

  4. 华为模拟器ensp代码错误2,41,40问题的解决

    win8+ensp320 ensp这是个神奇的软件,问题竟然出现的这么莫名其妙..前一秒还是好的时候,后一秒就立马出现了问题.不过不要慌...沉住气,把这篇文章看下去. 博主从昨天开始,ensp神奇的 ...

  5. [Bzoj2246]迷宫探险(概率+DP)

    Description 题目链接 Solution 用三进制表示陷阱状态,1表示有害,2表示无害,0表示不知道 用\(f[S][i]\)表示状态为S时陷阱i有害的概率,这个可以预处理出 \(d[S][ ...

  6. 笔记-python-standard library-17.7 queue

    笔记-python-standard library-17.7 queue 1.  queue source code:Lib/queue.py 该模块实现了多生产者,多消费者队列. 此模块实现了所有 ...

  7. python os模块练习题

    # 1.获取某个文件所在目录的上一级目录. # 例如'D:\python\projects\test19.py'目录的结果 :D:\python\projects # 方法1 # path = os. ...

  8. 04,Python网络爬虫之requests模块(1)

    引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃文档 ...

  9. android MotionEvent

    getAction() 获取事件的类型,这是一个组合值,由pointer的index值和事件类型值组合而成的 getActionMasked() 获取事件的类型,不具有其他信息 参考: http:// ...

  10. 分别用反射、编程接口的方式创建DataFrame

    1.通过反射的方式 使用反射来推断包含特定数据类型的RDD,这种方式代码比较少,简洁,只要你会知道元数据信息时什么样,就可以使用了 代码如下: import org.apache.spark.sql. ...