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 ...... 数 ...
随机推荐
- 解决火狐访问(localhost)本地网站提示输入用户名密码
VS在调试程序时浏览器一直提示要输入用户名及密码,但是我程序根本没有登录界面,最后终于找到了解决方案,如下: 1.在火狐浏览器地址栏中输入:about:config 2.然后在搜索文本框中输入:NTL ...
- 【BZOJ2561】最小生成树 最小割
[BZOJ2561]最小生成树 Description 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在 ...
- 海康DS NVR播放URL规则
URL规定:rtsp://username:password@<address>:<port>/Streaming/Channels/<id>(?parm1=val ...
- Android笔记之自定义PopupWindow
效果图 popup_window_addition.xml <?xml version="1.0" encoding="utf-8"?> <L ...
- 服务化之Netty
关于Netty的介绍可参考:https://www.zhihu.com/question/24322387 Netty官网为:http://netty.io/ Git:https://github.c ...
- Linux系统上安装字体
最近项目中需要控制字体类型,然后就上网查了一下在linux系统上安装字体,在window上和linux上,字体要求一样,都是ttf格式,下面这是window上的字体截图 在linux系统中的/usr/ ...
- CodeForces - 385E Bear in the Field —— 矩阵快速幂
题目链接:https://vjudge.net/problem/CodeForces-385E E. Bear in the Field time limit per test 1 second me ...
- VK Cup 2015 - Round 2 E. Correcting Mistakes —— 字符串
题目链接:http://codeforces.com/contest/533/problem/E E. Correcting Mistakes time limit per test 2 second ...
- cassandra 存储二进制data
Blob type The Cassandra blob data type represents a constant hexadecimal number defined as 0[xX](hex ...
- jQuery ajax序列化函数
参数序列化$.param() 举例: <!DOCTYPE html> <html> <head> <script src="https://ajax ...