【Foreign】朗格拉日计数 [暴力]
朗格拉日计算
Time Limit: 10 Sec Memory Limit: 128 MB
Description
Input
Output
仅一行一个整数表示答案。
Sample Input
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
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstring> 5 #include<cstdlib> 6 #include<cmath> 7 using namespace std; 8 typedef long long s64; 9 const int ONE = 1000001; 10 const int MOD = 1e9+7; 11 12 int n; 13 int a[ONE],f[ONE]; 14 s64 Ans; 15 16 int get() 17 { 18 int res=1,Q=1; char c; 19 while( (c=getchar())<48 || c>57) 20 if(c=='-')Q=-1; 21 if(Q) res=c-48; 22 while((c=getchar())>=48 && c<=57) 23 res=res*10+c-48; 24 return res*Q; 25 } 26 27 s64 C(int n) 28 { 29 return (s64)n*(n-1)/2; 30 } 31 32 33 namespace Bit 34 { 35 int C[ONE]; 36 37 int lowbit(int x) 38 { 39 return x&-x; 40 } 41 42 void Add(int R,int x) 43 { 44 for(int i=R;i<=n;i+=lowbit(i)) 45 C[i]+=x; 46 } 47 48 int Query(int R) 49 { 50 int res=0; 51 for(int i=R;i>=1;i-=lowbit(i)) 52 res+=C[i]; 53 return res; 54 } 55 } 56 57 int pre_min(int i) {return f[i];} 58 int pre_max(int i) {return i-1-f[i];} 59 int suc_min(int i) {return a[i]-1-pre_min(i);} 60 int suc_max(int i) {return n-a[i]-pre_max(i);} 61 62 int main() 63 { 64 n=get(); 65 for(int i=1;i<=n;i++) a[i]=get(); 66 67 for(int i=1;i<=n;i++) 68 { 69 Bit::Add(a[i],1); 70 f[i] = Bit::Query(a[i]-1); 71 } 72 73 for(int i=1;i<=n;i++) 74 { 75 Ans += (s64)pre_min(i) * suc_max(i); 76 Ans += C( pre_max(i) ); 77 Ans += C( suc_min(i) ); 78 Ans -= (s64)2 * pre_max(i) * suc_min(i); 79 } 80 81 printf("%lld",Ans); 82 }
View Code
转载于:https://www.cnblogs.com/BearChild/p/6522835.html
【Foreign】朗格拉日计数 [暴力]相关推荐
- 有限元-朗格朗日和欧拉描述的区别
在学习有限元的过程中经常会出现拉格朗日描述.欧拉描述,拉格朗日描述又分为完全的拉格朗日格式.更新的拉格朗日格式,初学者很容易被这些描述和格式类型搞的晕头转向,因此有必要理清它们之间的关系. 引言 描述 ...
- 《 Matlab_Simulink动力学系统建模仿真》及 ‘///’动力学 达朗贝尔原理、虚位移原理、朗格朗日方程...
<动力学-达朗贝尔原理.虚位移原理.朗格朗日方程> < Matlab_Simulink动力学系统建模仿真> [] 移动机器人形式方向控制PID实现 []单级倒立摆系统的状态反馈 ...
- 【BZOJ1815BZOJ1488】有色图图的同构,Polya计数+暴力
P1815 P1488 思路: 之前看论文发现的一道题目 点的置换引起边的置换 1488是弱化版 直接套烧边引理显然是不科学的 写了一个Polya的暴力,复杂度是O(n!n2)O(n!n^2) 跑不出 ...
- Jam计数 暴力排列法
详细题设请在站内搜索"Jam计数法" 原题中的样例输入和输出分别为 Input: 2 10 5 bdfij Output: bdghi bdghj bdgij bdhij bef ...
- matlab 狄利克雷函数图像,Poisson image editing算法实现的Matlab代码解析
之前我发了数篇系列博文来仔细研究Poisson Image Editing算法,每次重新审视和深入,仿佛都能有更为深刻的认识和很大的收获.这应该算是我这个系列的完结篇,会用用Matlab代码一点一点的 ...
- 数据去重 填补空缺值(拉格朗日)
此时我是不是该喊一声"我胡汉三又回来啦!!!" 这篇博客容许我摸一下数据清洗的裤脚...... 1.首先. 这是在网上找的数据,一个心脏病的数据集,英文不好的默默打开翻译,被我悄悄 ...
- Poisson image editing算法实现的Matlab代码解析
之前我发了数篇系列博文来仔细研究Poisson Image Editing算法,每次重新审视和深入,仿佛都能有更为深刻的认识和很大的收获.这应该算是我这个系列的完结篇,会用用Matlab代码一点一点的 ...
- 一次真实的应急响应案例(Linux)——SSH暴力破解+crontab隐藏后门——事件复现(含靶场环境)
一.SSH协议介绍 SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密.SSH 是目前较可靠,专为远程登录会话和其 ...
- C#上位机(定时器计数)
1.对窗体进行编辑,并对每一个控件进行属性修改 1.控件可以直接拖进窗体中: 2.对每一个控件进行修改:主要修改Test(窗体显示的部分)和Name(内部函数名,一般建议大驼峰格式命名.) 3.特别是 ...
最新文章
- boost::safe_numerics模块实现数据类型下溢的测试程序
- new,is和as运算符解析及运行时类型,对象,线程堆栈,托管堆之间的联系
- SAP UI5 bindProperty的实现
- 有机晶体数据库_Cambridge Structural Database 2017 晶体结构分析软件分享
- 8tupian图片加密平台源码 v3.5
- 后端工程师的「跨域」之旅
- 分布式文件系统HDFS体系
- docker 安装dm8 数据库
- Greenplum数据库故障分析——UDP Packet Lost(packet reassembles failed)
- 交互设计的本质是什么?交互设计哪些意义?
- SDHC 与SD的区别
- 58子站安居,经纪人营销管理平台登录接口加密逆向
- c#读蓝牙数据_c# – 将蓝牙设备连接到具有32feet .NET蓝牙库的计算机
- PHPUnit的使用
- vs code 简易使用教程(前端)
- 【技术分享】Ubuntu20.04启动LGSVL-2021.03闪退解决方案
- MYSQL基本操作(增删改查)
- Java之于Javascript就好比Car(汽车)之于Carpet(地毯)。
- 计算机课情感态度与价值观,浅谈信息技术课中情感态度价值观的培养
- Codeforces Round #703 (Div. 2)C1C2	 Guessing the Greatest(二分)
热门文章
- java默认权限什么时候使用_Java 应用程序默认权限(简例)
- 三次握手,四次挥手(大白话)
- smartbi v7 Linux,图表传值?花式互动?Smartbi V7.0.1新特性有没有撩到你?
- preg_replace在java中_Java相当于PHP的preg_replace_callback
- 中兴手机数据通道打不开_换了个新手机
- An attempt by a client to checkout a Connectio n has timed out报错解决
- MYSQL中时间毫秒数转换及日期格式化
- easyui combotree 数据太多 无法显示的处理方法
- [DBNETLIB][ConnectionOpen(connect()).]SQL Server 不存在或拒绝访问解决方
- linux ps命令使用详解