#树状数组#[ssloj 1474] 简单计算题 [jzoj] Tiny Counting

Title

在这里插入图片描述


Solution

假如 a , b , c , d a,b,c,d a,b,c,d可以相等,那么 a n s ans ans是顺序对和逆序对的乘积。可以减去不合法的的方案数。
l s , l b , r s , r b ls,lb,rs,rb ls,lb,rs,rb指的是比分别左边比 i i i小的,大的,右边比 i i i小的,大的的数量。
排除以下四种情况:

  • a = c a=c a=c
  • S d < S a = c < S b S_d<S_{a=c}<S_b Sd<Sa=c<Sb
  • ( a = c ) < b , d (a=c)<b,d (a=c)<b,d
  • r s ∗ r b rs*rb rsrb

  • a = d a=d a=d
  • S c > S a = d < S b S_c>S_{a=d}<S_b Sc>Sa=d<Sb
  • c < ( a = d ) < b c<(a=d)<b c<(a=d)<b
  • l b ∗ r b lb*rb lbrb

  • b = c b=c b=c
  • S a < S b = c > S d S_a<S_{b=c}>S_d Sa<Sb=c>Sd
  • a < ( a = c ) < d a<(a=c)<d a<(a=c)<d
  • l s ∗ r s ls*rs lsrs

  • b = d b=d b=d
  • S a < S b = d < S c S_a<S_{b=d}<S_c Sa<Sb=d<Sc
  • a , c < ( b = d ) a,c<(b=d) a,c<(b=d)
  • l b ∗ l s lb*ls lbls

以第一和第二种情况举例:

因为弄的比较快,下面可能会有些锅**(注意)**。

第一种
注意下面 r b , r s rb,rs rb,rs换一下位置
在这里插入图片描述
第二种

注意下面 ( c , b ) (c,b) (c,b)改成 ( c , d ) (c,d) (c,d)
在这里插入图片描述


Code

#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
#define rep(i,x,y) for(register ll i=x;i<=y;i++)
using namespace std; 
ll n,ans,t[100500],a[100500],b[100500],p,q,ls[100005],lb[100005],rs[100005],rb[100005]; 
inline void add(ll x,ll y){for(;x<=n;x+=x&(-x)) b[x]+=y;}
inline ll ask(ll x){ll q=0; for(;x;x-=x&(-x)) q+=b[x]; return q;}
int main(){
	scanf("%lld",&n); 
	rep(i,1,n) scanf("%lld",&a[i]),t[i]=a[i]; 
	sort(t+1,t+n+1); 
	int m=unique(t+1,t+n+1)-t-1; 
	rep(i,1,n) a[i]=lower_bound(t+1,t+m+1,a[i])-t; 
	rep(i,1,n){
		ls[i]=ask(a[i]-1); lb[i]=ask(n)-ask(a[i]); p+=ls[i]; 
		add(a[i],1); 
	}
	memset(b,0,sizeof(b)); 
	for(int i=n;i>=1;i--){
		rs[i]=ask(a[i]-1); rb[i]=ask(n)-ask(a[i]); q+=rs[i]; 
		add(a[i],1); 
	}
	ans=p*q; 
	rep(i,1,n) ans-=ls[i]*rs[i]+rs[i]*rb[i]+rb[i]*lb[i]+lb[i]*ls[i]; 
	printf("%lld",ans); 
	return 0; 	
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值