CF840A Leha and Function
作者:互联网
尝试暴力展开。
\[\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;
}
标签:Function,10,Leha,int,dfrac,write,CF840A,ans,aligned 来源: https://www.cnblogs.com/May-2nd/p/14364679.html