朗格拉日计算

Time Limit: 10 Sec  Memory Limit: 128 MB

Description

  

Input

  

Output

  仅一行一个整数表示答案。

Sample Input

  5
  3 2 5 4 1

Sample Output

  4

HINT

  

Main idea

  将一个排列围成一个环,每个点有一个值a[i],若顺时针三个点A、B、C 满足 a[A]<a[B]<a[C] 则可以统计答案,询问答案。

Solution

  我们不考虑环,从序列考虑,显然可以统计的就是类似这种:123、231、312这个样子的。

  我们考虑容斥,显然123这种是可以直接计算的,231就是xx1 - 321,312就是3xx - 321。

  显然我们这样这样用树状数组统计一下 f[i] 表示 i 前面<a[i]的个数,然后就可以计算出:前面<a[i]的个数、前面>a[i]的个数、后面<a[i]的个数、后面>a[i]的个数

  然后这样暴力计算即可。

Code

 #include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
typedef long long s64;
const int ONE = ;
const int MOD = 1e9+; int n;
int a[ONE],f[ONE];
s64 Ans; int get()
{
int res=,Q=; char c;
while( (c=getchar())< || c>)
if(c=='-')Q=-;
if(Q) res=c-;
while((c=getchar())>= && c<=)
res=res*+c-;
return res*Q;
} s64 C(int n)
{
return (s64)n*(n-)/;
} namespace Bit
{
int C[ONE]; int lowbit(int x)
{
return x&-x;
} void Add(int R,int x)
{
for(int i=R;i<=n;i+=lowbit(i))
C[i]+=x;
} int Query(int R)
{
int res=;
for(int i=R;i>=;i-=lowbit(i))
res+=C[i];
return res;
}
} int pre_min(int i) {return f[i];}
int pre_max(int i) {return i--f[i];}
int suc_min(int i) {return a[i]--pre_min(i);}
int suc_max(int i) {return n-a[i]-pre_max(i);} int main()
{
n=get();
for(int i=;i<=n;i++) a[i]=get(); for(int i=;i<=n;i++)
{
Bit::Add(a[i],);
f[i] = Bit::Query(a[i]-);
} for(int i=;i<=n;i++)
{
Ans += (s64)pre_min(i) * suc_max(i);
Ans += C( pre_max(i) );
Ans += C( suc_min(i) );
Ans -= (s64) * pre_max(i) * suc_min(i);
} printf("%lld",Ans);
}

【Foreign】朗格拉日计数 [暴力]的更多相关文章

  1. 朗格拉日计数(counter)

    朗格拉日计数(counter) 题目描述 在平面上以圆周等分排列着n个带标号(标号为1-n)的点,你需要计算有多少个三元组(a,b,c),满足a<b<c而且标号为a,b,c的点在圆上分布的 ...

  2. hihocoder #1178 : 计数 暴力

    #1178 : 计数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/problemset/problem/1178 ...

  3. BZOJ - 4066 KD树 范围计数 暴力重构

    题意:单点更新,大矩阵(\(n*n,n≤10^5\))求和 二维的KD树能使最坏情况不高于\(O(N\sqrt{N})\) 核心在于query时判断当前子树维护的区间是否有交集/当前子节点是否在块中, ...

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

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

  5. HDU 5701 中位数计数 暴力

    老题了,附上黄学长链接一发,直接改改就AC了,http://hzwer.com/1216.html #include <cstdio> #include <iostream> ...

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

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

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

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

  8. HMM隐马尔科夫算法(Hidden Markov Algorithm)初探

    1. HMM背景 0x1:概率模型 - 用概率分布的方式抽象事物的规律 机器学习最重要的任务,是根据一些已观察到的证据(例如训练样本)来对感兴趣的未知变量(例如类别标记)进行估计和推测. 概率模型(p ...

  9. 数据分析学习(zhuan)

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

随机推荐

  1. 【个人训练】(POJ1837)Balance

    这几天抓住国庆的黄金时间(因为没有女朋友,天天刷题emmmm 其实还在肝少前还要捞秋刀鱼) ,重点攻克掉几个基本的地方:搜索.dp.图论.这几天的题目应该就是这些范围. 题意 原题的意思大概是这样的, ...

  2. 每天一个Linux命令(12):su命令

    su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码. 语法: su(选项)(参数) 选项: -c<指令>或--command=<指令>:执行完指定 ...

  3. Python 3基础教程22-单个列表操作

    本文来介绍列表的操作,先看看单个列表的操作,列表有多个方法.以下多行代码,建议你写一个方法,测试运行一个方法,不然看起来很乱. # 元组操作 x = [5,6,2,1,6,7,2,7,9] # app ...

  4. 第二十三篇 logging模块(******)

    日志非常重要,而且非常常用,可以通过logging模块实现. 热身运动 import logging logging.debug("debug message") logging. ...

  5. 第一篇 Postman的初级使用之设置环境快速切换生成环境与测试环境

    POSTMAN是有谷歌的开源工具,在开发调试.测试执行过程中使用频率非常广泛,本文将记录一些postman在测试中常见的一些配置和使用方法 一.基本的页面区域 略,很简单,大家都会看,再有,学习下面的 ...

  6. centos7使用Gogs搭建Git服务器

    一.初次接触Gogs,记录一下搭建过程 二.平台环境 Linux: CentOS7.5.1804 MySQL: 5.6.35 安装步骤: linux服务器新建git用户: 下载.解压gogs安装包: ...

  7. ZooKeeper的伪分布式集群搭建

    ZooKeeper集群的一些基本概念 zookeeper集群搭建: zk集群,主从节点,心跳机制(选举模式) 配置数据文件 myid 1/2/3 对应 server.1/2/3 通过 zkCli.sh ...

  8. ubuntu 开热点

    原文地址:https://www.cnblogs.com/king-ding/archive/2016/10/09/ubuntuWIFI.html 今天教大家一个简单方法让ubuntu发散wifi热点 ...

  9. 学习bash——通配符与特殊符号

    一.通配符 这是bash操作环境中一个非常有用的功能,这让我们使用bash处理数据就更方便了. 常用通配符如下: 符号 意义 * 代表0个到无穷多个任意字符 ? 代表一个任意字符 [] 代表一定有一个 ...

  10. phpquery中文手册

    [简介] phpQuery是一个基于PHP的服务端开源项目,它可以让PHP开发人员轻松处理DOM文档内容.更有意思的是,它采用了jQuery的思想,使得可以像使用jQuery一样处理页面内容,获取想要 ...