cf1475E Advertising Agency(求组合数)
创始人
2024-06-03 08:51:55
0

Problem - 1475E - Codeforces

翻译:

玛莎在一家广告公司工作。为了推广新品牌,她想与一些博主签订合同。玛莎总共有n个不同的博主。编号为i的博客有ai追随者。

由于玛莎的预算有限,她只能与k个
 个不同的博主。当然,玛莎希望她的广告能被尽可能多的人看到。因此,她必须雇用拥有最大总粉丝数的博主。

请帮助她,找出有多少种方法可以选择k个博主,从而使他们的粉丝总数达到最大。如果第一种方式中至少有一个博主,而第二种方式中没有,则认为两种方式不同。Masha认为,所有的博主都有不同的追随者(也就是说,没有追随者会关注两个不同的博主)。

例如,如果n=4, k=3, a=[1,3,1,2] 那么Masha有两种方法来选择3个具有最大总关注者数量的博主。

与数字为1, 2和4的博主签订合同
在这种情况下,关注者的数量将等于a1+a2+a4=6
与数字为2, 3 和4的博主签订合同
在这种情况下,关注者的数量将等于a2+a3+a4=6
由于答案可能相当大,所以输出它的模数109+7

输入
第一行包含一个整数t (1≤t≤1000)--测试案例的数量。然后 t 个测试用例。

每个测试案例的第一行包含两个整数n和k (1≤k≤n≤1000)--博主的数量和你能与多少个博主签订合同。

每个测试用例的第二行包含 n 个整数a1,a2,...an (1≤ai≤n)--每个博主的追随者数量。

保证所有测试案例的n之和的总和不超过1000

输出
对于每个测试案例,在单独的一行中输出一个整数--选择 k 个博主,从而使其追随者的总数达到最大。

例子
inputCopy
3
4 3
1 3 1 2
4 2
1 1 1 1
2 1
1 2
输出拷贝
2
6
1
注意
该测试案例在声明中进行了解释。

在第二个测试案例中,以下方式是有效的。

与数字为1和2的博主签订合同
. 在这种情况下,追随者的数量将等于a1+a2=2;
与数字为1和3的博主签订合同
. 在这种情况下,追随者的数量将等于a1+a3=2;
与数字为1和4的博主签订合同
. 在这种情况下,追随者的数量将等于a1+a4=2;
与编号为2和3的博主签订合同。
. 在这种情况下,追随者的数量将等于a2+a3=2;
与数字为2和4的博主签订合同
. 在这种情况下,追随者的数量将等于a2+a4=2;
与数字为3和4的博主签订合同
. 在这种情况下,追随者的数量将等于a3+a4=2;


在第三个测试案例中,以下方式是有效的。

与数字为2的博主签订合同
. 在这种情况下,追随者的数量将等于a2=2。

思路

进行从大到小排序,假设最大的选出来m个,剩下跟第k个数相等的数从中选k-m个即可

也就是组合数

代码

#include
#include
#include
using namespace std;
#define ll long long
const ll N=1e5+10,mod=1e9+7;
ll p[N];
bool cmp(int a,int b)
{return a>b;
}ll fact[N],infact[N];ll qmi(ll a,ll b,ll c)
{ll ans=1;while(b){if(b&1)ans=ans*a%c;a=a*a%c;b>>=1;}return ans;
}int main()
{fact[0]=infact[0]=1;for(int i=1;i<=1e5;i++){fact[i]=fact[i-1]*i%mod;infact[i]=infact[i-1]*qmi(i,mod-2,mod)%mod;}int t;cin>>t;while(t--){int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>p[i];}sort(p+1,p+1+n,cmp);int a=0,b=0;for(int i=1;i<=n;i++){if(p[i]>p[m])a=i;if(p[i]==p[m])b++;}int k=m-a;cout<

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...