2021.8.14提高B组模拟6T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)

Posted SSL_LKJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.8.14提高B组模拟6T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)相关的知识,希望对你有一定的参考价值。

United Cows of Farmer John

题目传送门

解题思路

树状数组乱糊

AC代码

#include<cstdio>
#include<cstring>
using namespace std;
long long n,ans,a[200005],f[200005],t[200005];//答案要long long 
long long lowbit(long long x)//处理 
{
	return x&(-x);
}
void update(long long x,long long y)//修改 
{
	for(long long i=x;i<=n;i+=lowbit(i))t[i]+=y;
}
long long query(long long x)//查询 
{
	long long sum=0;
	for(long long i=x;i;i-=lowbit(i))sum+=t[i];
	return sum;
}
int main()
{
	scanf("%lld",&n);
	for(long long i=1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
		f[i]=n+1;//初值 
	}
	for(long long i=n;i>=1;i--)//枚举起点 
	{
		ans+=query(f[a[i]]-1);
		update(f[a[i]],-1);//修改区间的数的种类数 
		update(i,1);
		f[a[i]]=i;	//修改位置 
	}
	printf("%lld",ans);
	return 0;
}

谢谢

以上是关于2021.8.14提高B组模拟6T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)的主要内容,如果未能解决你的问题,请参考以下文章

2021.8.14提高B组模拟6T2 + P7557 [USACO21OPEN] Acowdemia (二分)

2021.8.14提高B组模拟6T4 + P7555 [USACO21OPEN] Maze Tac Toe (dfs)

2021.8.14提高B组模拟6T4 + P7555 [USACO21OPEN] Maze Tac Toe (dfs)

2021.8.14提高B组模拟6T2 + P7557 [USACO21OPEN] Acowdemia (二分)

2017.12.09NOIP提高组模拟赛A组

2017.07.16【NOIP提高组】模拟赛B组 卫星照片 题解