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 ...... 数 ...
随机推荐
- scrollify 全屏滚动插件
使用 1.引入文件 <script src="js/jquery.min.js"> </script> <script src="js/jq ...
- c# winform 根据窗体自动调整控件
一.概述 本文要实现的功能是:当窗体最大化时,控件的大小可以随窗体一起变化.开发环境,vs2010 c# winform,窗体名称采用默认的Form1. 2.把调整控件大小的方法放到一个类中:Form ...
- DuiLib笔记之Control常用属性
name 指定控件名称,同一窗口内必须唯一,类型:STRING float 用于指定控件是否使用绝对定位,或设置FloatPercent,类型:BOOL,默认值为false,格式:float=&quo ...
- MFC HTTP(S)请求笔记
GET示例 #include <afxinet.h> #include <iostream> #include <vector> #ifdef _UNICODE # ...
- 阿里Java开发手册学习 2 异常日志
异常日志 异常处理 1.不要捕获继承自RuntimeException的运行时异常类,这类异常通常由程序员来校验,来保证查询的健壮性. 2. 不要对大段代码 try catch,分清稳定代码和非稳定代 ...
- 配置tomcat,访问端口改为80
首先:找到tomcat的的config文件夹下的server.xml文件: 编辑server.xml 保存server.xml文件,重启tomcat服务器,即可. 亲测好使.
- UIVisualEffectView
UIBlurEffect 只支持到iOS 8.0+.系统给予的一个自动生成滤镜的方法 UIVisualEffectView *effectView = [[UIVisualEffectView all ...
- Protocol_BGP
BGP协议 作者:Danbo 2015-7-8 BPG最重要的就是属性,下面我们针对路径属性分析一下.
- vue2.x源码理解
也不知道哪股风潮,钻研源码竟成了深入理解的标配.我只想说一句,说的很对 准备工作 从GitHub上面下载vue的源码(https://github.com/vuejs/vue) 了解下Flow,Flo ...
- (转)vim 访问系统剪贴板
原文出处:http://vim.wikia.com/wiki/Accessing_the_system_clipboard Please review this tip: This tip was i ...