atcoder057D(组合数模板)
题目链接:http://abc057.contest.atcoder.jp/tasks/abc057_d
题意:给出n个数,可以选择x~y个数,使其平均值最大,求其最大平均数以及选择方案数。
思路:只考虑两种情况即可:
1. 最大的数出现次数大于x, 那么最大平均数及为最大数,选择方案数为C(b[0], i) x<=i<=min(y, b[0]); //其中b[0]为最大数出现的次数
2. 最大数出现的次数小于x, 那么我们只需要考虑最末尾那个数即可;
代码:
#include <iostream>
#include <algorithm>
#include <stdio.h>
#define ll long long
#define MAXN 60
using namespace std; ll a[MAXN], b[MAXN], c[MAXN][MAXN]; void gelou(void){//组合模板
c[][]=c[][]=;
for(int i = ; i<MAXN; i++){
c[i][]=;
for(int j = ; j<MAXN; j++){
c[i][j]=(c[i-][j]+c[i-][j-]);
}
}
} int main(void){
gelou();
ll n, x, y;
cin >> n >> x >> y;
for(int i=; i<n; i++){
cin >> a[i];
}
sort(a, a+n);
ll pos=, cc=a[n-];
for(int i=n-; i>=; i--){//记录每个数出现的次数
if(a[i]==cc){
b[pos]++;
}else{
cc=a[i];
pos++;
b[pos]++;
}
}
pos++;
ll gg=, num=;
if(b[]>=x){//最大的数出现的次数大于等于x
for(int i=x; i<=min(b[], y); i++){
num+=c[b[]][i];
}
printf("%.6lf\n", (double)a[n-]);
printf("%lld\n", num);
return ;
}
for(int i=; i<pos; i++){
if(gg+b[i]>=x){
ll f=x-gg;
num=c[b[i]][f];//只考虑最后一个值的选择情况
break;
}else{
gg+=b[i];
}
}
double ave=;
for(int i=n-,j=; j<x; j++,i--){
ave+=a[i];
}
ave/=x;
printf("%.6lf\n", ave);
printf("%lld\n", num);
return ;
}
atcoder057D(组合数模板)的更多相关文章
- HDU 6114 Chess【逆元+组合数】(组合数模板题)
<题目链接> 题目大意: 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子.一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中摆最多个数的車使 ...
- 组合数模板 - Lucas
2017-08-10 19:35:32 整理者:pprp 用于计算C(m,n) % p 代码如下: //lucas #include <iostream> using namespace ...
- 求大的组合数模板 利用Lucas定理
Lucas定理:A.B是非负整数,p是质数.A B写成p进制:A=a[n]a[n-1]…a[0],B=b[n]b[n-1]…b[0]. 则组合数C(A,B)与C(a[n],b[n])C(a[n-1], ...
- 51nod 1805 小树 (组合数模板,逆元公式)
题意:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1805 题解: 根据cayley公式,无向图的每一个生成树就对应一个 ...
- 【组合数模板】HDU 6114 Chess
http://acm.hdu.edu.cn/showproblem.php?pid=6114 [思路] 就是求C(m,n) [板] #include<iostream> #include& ...
- HDU6333 莫队+组合数
题目大意: 给定n m 在n个数中最多选择m个的所有方案 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3 ...
- Andrew Stankevich's Contest (21) J dp+组合数
坑爹的,,组合数模板,,, 6132 njczy2010 1412 Accepted 5572 MS 50620 KB C++ 1844 B 2014-10-02 21:41:15 J - 2-3 T ...
- hdu6333 Problem B. Harvest of Apples(组合数+莫队)
hdu6333 Problem B. Harvest of Apples 题目传送门 题意: 求(0,n)~(m,n)组合数之和 题解: C(n,m)=C(n-1,m-1)+C(n-1,m) 设 ...
- 数位dp 的简单入门
时间紧张,就不讲那么详细了. 之前一直被深搜代码误解,以为数位dp 其实就是记忆化深搜...(虽说爆搜确实很舒服而且还好想) 但是后来发现数位dp 的标准格式其实是 预处理 + dp ...... 数 ...
随机推荐
- java 浮点数
package precisenumber; //import java.util.*;public class PreciseNumber { public int fore; public int ...
- 04-树4 是否同一棵二叉搜索树(25 point(s)) 【Tree】
04-树4 是否同一棵二叉搜索树(25 point(s)) 给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和 ...
- [shell] Bash编程总结
由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进 ...
- [NOIP2011提高组day2]-3-观光公交
3.观光公交 (bus.cpp/c/pas) [问题描述] 风景迷人的小城 Y 市,拥有 n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光 ...
- windows下的host文件在哪里,有什么作用?
在Window系统中有个Hosts文件(没有后缀名),在Windows98系统下该文件在Windows目录,在Windows2000/XP系统中位于C:\Winnt\System32\Drivers\ ...
- 提取html的正文
1 using System; 2 using System.Text; 3 namespace HtmlStrip 4 { 5 class MainClass 6 { 7 ...
- html5--4-2 video元素的属性
html5--4-2 video元素的属性 学习要点 掌握video元素的基本用法 直到现在,在网页中的大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件.HTML ...
- js 弹出QQ对话框
首先打开下面链接,开通QQ推广. http://shang.qq.com/v3/index.html 然后在页面代码中写入 <a target="_blank" href=& ...
- js 判断滚动条是不是在浏览器底部
http://jingyan.baidu.com/album/86f4a73e91da7837d65269d5.html?picindex=2
- C++之匿名对象解析
我们知道在C++的创建对象是一个费时,费空间的一个操作.有些固然是必不可少,但还有一些对象却在我们不知道的情况下被创建了.通常以下三种情况会产生临时对象: 1,以值的方式给函数传参: 2,类型 ...