朗格拉日计数(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. 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

    题目背景 提示:原 P1829 半数集问题 已经迁移至 P1028 数的计算 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a ...

  2. docker启用镜像常用脚本

    语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明:-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/ST ...

  3. JAVA / MySql 编程—— 第一章 数据库的设计

     1.        数据库设计:将数据库中的数据实体及这些数据实体之间的关系进行规划和结构化的过程: 良好的数据库设计: 节省数据的存储空间 能够保证数据的完整性 方便进行数据库应用系统的开发 糟糕 ...

  4. 【LeetCode #179】Largest Number 解题报告

    原题链接:Largest Number 题目描述: Given a list of non negative integers, arrange them such that they form th ...

  5. Redis 数据类型List链表

    list类型是一个双向链表. 上进上出:栈 例1 lpush newlogin tom lpush newlogin  jim lpush newlogin php lpush newlogin th ...

  6. Python全栈day 06

    Python全栈day 06 一.数据类型补充完整 1. 列表(list) 反转reverse list1 = [1,2,3,4,5,6,7,8,9] list1.reverse() print(li ...

  7. C++ 基础 引用

    1.引用的本质 int b = 10; int &a = b; 等效于: int * const a = &b; 由于 a 是 const声明,所以一旦定义无法修改,所以要在定义时就要 ...

  8. Git ---游离状态下的commit 分支切换与找回,commit之后无法找到历史记录

    commit之后无法找到历史记录 https://blog.csdn.net/zyb2017/article/details/78307688

  9. Leetcode 173. 二叉搜索树迭代器

    题目链接 https://leetcode.com/problems/binary-search-tree-iterator/description/ 题目描述 实现一个二叉搜索树迭代器.你将使用二叉 ...

  10. Kali Linux 搜狗输入法安装

    1.下载 搜狗输入法 for Linux http://pinyin.sogou.com/linux/ //有64位和32位的deb包 我这里下载的是 : sogoupinyin_2.1.0.0086 ...