首页 > 其他 > 详细

CF840A Leha and Function

时间:2021-02-02 23:36:17      阅读:69      评论:0      收藏:0      [点我收藏+]

尝试暴力展开。

\[\begin{aligned} F(n,k)&=\dfrac{\sum_{i=1}^{n-k+1}i\times\dbinom{n-i}{k-1}}{\dbinom{n}{k}}\&=\dfrac{n+1}{k+1} \end{aligned}\]

数学推导先鸽着因为太难了。

完了,组合意义也看不出来了。

显然越大的 \(n\) 和越小的 \(k\) 配,不能理解就考虑通分后的式子,分子中越大的 \(n\) 乘的数要越大,可以用调整法证明。

时间复杂度 \(O\left(n\log n\right)\)

code:

#include<bits/stdc++.h>
using namespace std;
#define N 200005
#define For(i,x,y)for(i=x;i<=(y);i++)
struct number
{
	int val,id;
}b[N];
int a[N],ans[N];
void write(int X)
{
	if(X<0)putchar(‘-‘),X=-X;
	if(X>9)write(X/10);
	putchar(X%10|48);
}
int read()
{
	int A;
	bool K;
	char C;
	C=A=K=0;
	while(C<‘0‘||C>‘9‘)K|=C==‘-‘,C=getchar();
	while(C>‘/‘&&C<‘:‘)A=(A<<3)+(A<<1)+(C^48),C=getchar();
	return(K?-A:A);
}
inline bool cmp(number _,number __)
{
	return _.val<__.val;
}
int main()
{
	int m,i;
	m=read();
	For(i,1,m)a[i]=read();
	For(i,1,m)b[i].val=read(),b[i].id=i;
	sort(a+1,a+m+1,greater<int>());
	sort(b+1,b+m+1,cmp);
	For(i,1,m)ans[b[i].id]=a[i];
	For(i,1,m)write(ans[i]),putchar(‘ ‘);
	return 0;
}

CF840A Leha and Function

原文:https://www.cnblogs.com/May-2nd/p/14364679.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!