ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF817B Makes And The Product

2021-10-21 01:02:45  阅读:699  来源: 互联网

标签:tmp Product int times1 times2 times CF817B dfrac Makes


洛谷题面

考前写题解 \(\rm rp++\)。

题目大意

给定 \(n\) 个数 \(a[1\cdots n]\) 问你满足 \(a[i]\times a[j]\times a[k]\) 的值最小,且 \(i<j<k\) 的有序对有几个?

题目分析

很妙的一道题。

来一个 \(\operatorname{O(n~log~n)}\) 的做法。

看到求三个数相乘的最小值,再看到 \(3\le n\le10^5\) 的数据范围,妥妥的 \(\log~n\) 啊!

可以马上想到将数组升序排列一遍,然后看整段序列有多少个数与 \(a[3]\) 相等,答案即为 \(tmp\)。

接下来分类讨论:

  • 当 \(a[1]=a[2]=a[3]\) 时,直接在 \(tmp\) 里选 \(3\) 个数出来即可。

答案为

\[C_{tmp}^3 \]

\[=\dfrac{tmp!}{(tmp-3)!\times 3!} \]

\[=\dfrac{tmp\times(tmp-1)\times(tmp-2)\times\cdots\times 2\times1}{(tmp-3)\times(tmp-4)\times\cdots\times2\times1\times3\times2\times1} \]

\[=\dfrac{tmp\times(tmp-1)\times(tmp-2)}{3\times2\times1} \]

  • 当 \(a[1]\neq a[2]\) 但 \(a[2]=a[3]\) 时,第一个必然应该选择,剩下的就从 \(tmp\) 中选 \(2\) 个出来即可。

答案为

\[C_{tmp}^2 \]

\[=\dfrac{tmp!}{(tmp-2)!\times2!} \]

\[=\dfrac{tmp\times(tmp-1)}{2\times1} \]

  • 其他情况。

这个时候,前两个数必然应该选择,剩下一个数直接在 \(tmp\) 里任意选 \(1\) 个即可。

故此时输出 \(tmp\)。

代码

const int ma=100005;

int a[ma];

int n;

#undef int

int main(void)
{
	#define int long long
	
	n=read();
	
	for(register int i=1;i<=n;i++)
	{
		a[i]=read();
	}
	
	sort(a+1,a+n+1);
	
	int tmp=0;
	
	for(register int i=1;i<=n;i++)
	{
		if(a[i]==a[3])
		{
			tmp++;
		}
	}
	
	if(a[1]==a[2] && a[2]==a[3])
	{
		printf("%lld\n",tmp*(tmp-1)*(tmp-2)/(3*2*1));
	}
	
	else if(a[2]==a[3])
	{
		printf("%lld\n",tmp*(tmp-1)/2);
	}
	
	else
	{
		printf("%lld\n",tmp);
	}
	
	return 0;
}

你看我熬夜写的这么认真,不点个赞吗 \(\mathcal{QwQ}\)。

标签:tmp,Product,int,times1,times2,times,CF817B,dfrac,Makes
来源: https://www.cnblogs.com/Coros-Trusds/p/15431544.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有