题目链接

题意

n只队伍,两两之间会进行比赛,赢平输都有相应得分,所有比赛结束后,前m名可以晋级。问最大的不能晋级分数为多少,以及最小的能晋级的分数。

分析

智商题。。。按照要求来贪心
1.没有晋级的队伍最高分
将队伍分为两堆,分别为m+1,n-m-1;令第m+1个队伍就是没晋级分数最高的队伍
第m+1个人与第二堆里面的队伍的n-m-1场比赛中得分要么每场都赢,要么每场都平局
即第m+1个人的得分: (n-m-1)*max(a, b);
贪心的让第一堆的分数高,要使第m+1个队伍就是没晋级分数最高的队伍,有两种可能
(1)第一堆m场比赛中所有队伍中每个队伍赢得场数和输的场数基本相同
即第m+1个人得分 : m/2a+m/2c,即m/2*(a+c);
(2)第一堆m场比赛中所有队伍都平局
即第m+1个人得分: m/2b+m/2b,即m/2*(b+b);
与第一堆的比赛得分取以上两场比赛的最大值
即:max(m/2(a+c),m/2(b+b));
第一堆的m场比赛有可能是奇数场也有可能是偶数场,如果是奇数场那么第m+1个人的得分还得加上最后一场的得分,第一堆的最后一场比赛有可能输也有可能平局(不能赢,如果赢了那这个队就有可能比前m-1个队伍分高,就应该晋级),所以得分为max(b, c);
最终第m+1个人的得分为:
x = (n-m-1)max(a, b)+max(m/2a+m/2c,m/2b+m/2*b)
如果m为奇数x+= max(b, c);否则为x;
2.晋级的队伍最低分
将队伍分为两堆,分别为m-1,n-m+1;令第m个队伍就是晋级分数最低的队伍
第m个人与第一堆里面的队伍的m-1场比赛中得分要么每场都输,要么每场都平局
即第m个人的得分: (m-1)*min(c, b);
贪心的让第二堆的分数低,要使第m个队伍就是晋级分数最低的队伍,有两种可能
(1)第二堆n-m场比赛中所有队伍中每个队伍赢得场数和输的场数基本相同
即第m个人得分 : (n-m)/2a+(n-m)/2c,即(n-m)/2*(a+c);
(2)第一堆n-m场比赛中所有队伍都平局
即第m个人得分: (n-m)/2b+(n-m)/2b,即(n-m)/2*(b+b);
与第一堆的比赛得分取以上两场比赛的最小值
即:min((n-m)/2(a+c),(n-m)/2(b+b));
第二堆的n-m场比赛有可能是奇数场也有可能是偶数场,如果是奇数场那么第m个人的得分还得加上最后一场的得分,第一堆的最后一场比赛有可能赢也有可能平局(不能输,如果输的话,那该队得的分数就比第二堆其他队的分数低就不能晋级了),所以得分为min(b, a);
最终第m个人的得分为:
x = (m-1)min(c, b)+min((n-m)/2(a+c),(n-m)/2*(b+b))
如果n-m为奇数x+= min(b, a);否则为x;

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdlib>
#include<climits>
#include<ctype.h>
#include<set>
#include<map>
#define pi acos(-1.0)
#define mem(a) memset(a,0,sizeof(a))
#define mems(a,b) memset((a),(b),sizeof(a))
#define ll long long
#define ull unsigned long long
#define ls root<<1
#define rs root<<1|1
#define Ls root<<1,l,mid
#define Rs root<<1|1,mid+1,r
#define pb push_back
using namespace std;
const int maxn=100000+10;
const int inf=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int mod=1e9+7;int main()
{//freopen("data","r",stdin);int t,cas=1;ll n,m,win,ping,lose;scanf("%d",&t);while(t--){scanf("%lld%lld",&n,&m);scanf("%lld%lld%lld",&win,&ping,&lose);if(lose > win) swap(win,lose);ll big=max(win,ping);ll small=min(lose,ping);ll top,below;top=big*(n-m-1)+max(m/2*ping+m/2*ping,m/2LL*win+m/2LL*lose);if(m%2LL==1LL)top+=max(ping,lose);below=small*(m-1)+min((n-m)/2*min(win,ping)+(n-m)/2*min(win,ping),(n-m)/2LL*win+(n-m)/2LL*lose);if((n-m)%2LL==1LL)below+=min(ping,win);printf("Case #%d: %lld %lld\n",cas++,top,below);}return 0;
}

转载于:https://www.cnblogs.com/fht-litost/p/7346749.html

UVALive - 7147 (数学)相关推荐

  1. UVALive 7147- World Cup

    题目地址:UVALive 7147 题意:一场比赛,赢的队得A分,输的得C分,平手都得B分.有n支队伍,分别比赛一次,选前m个队伍晋级(分数相同的随机排名).问:可能的最大淘汰分数,可能的最小晋级分数 ...

  2. UVALive 6909 Kevin's Problem 数学排列组合

    Kevin's Problem 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid ...

  3. *UVALive 6657 - GCD XOR(数学)

    题目: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84227#problem/H 题意: 求出1~n中gcd(a,b)= a^b的对数 ...

  4. Beehive UVALive - 7528 (找规律+数学思维)

    点击打开链接 There is an infinite beehive like the one given in the figure. We consider two cells to be ad ...

  5. UVAlive 7308 Tom and Jerry 【几何数学】

    题目链接:这里是传送阵.. Tom and Jerry are very fond of cat and mice games, which might be rather obvious to yo ...

  6. 红书《题目与解读》第一章 数学 题解《ACM国际大学生程序设计竞赛题目与解读》

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 红书<题目与解读>第一章 数学 题解<ACM国际大学生程序设计竞赛题目与解读> ...

  7. 三年级竖式计算机应用题,小学三年级数学下册计算+应用题专项练习4套,提升训练!...

    原标题:小学三年级数学下册计算+应用题专项练习4套,提升训练! 今天王老师给同学们整理了三年级数学下册计算+应用题专项练习4套,无答案,打印给孩子提升训练! 计算+应用题练习1 一.竖式计算. 27× ...

  8. 群论中的拉格朗日定理(子群的阶必然能整除群阶---数学

    前言:仅个人小记.本文记录的证明逻辑上不具有流畅性,主要是在一开始不流畅,拉格朗日神乎其技地引入了一个等价关系,进而实现了整个定理的证明,目前我没能给出拉格朗日是如何想到引入该等价关系. 最后给出推论 ...

  9. 通俗理解条件熵-数学

    就是决策树里面选划分属性用到的计算 条件熵越小表示划分之后各个集合越纯净 前面我们总结了信息熵的概念通俗理解信息熵 - 知乎专栏,这次我们来理解一下条件熵. 我们首先知道信息熵是考虑该随机变量的所有可 ...

  10. 内积和外积的物理意义-数学

    内积和外积的物理意义 Persistently关注 2018.07.31 14:28:46字数 277阅读 6,276 向量的内积 ab=ab cos(θ) 向量a和b的长度之积再乘以它们之间的夹角的 ...

最新文章

  1. Navicat下载和破解以及使用
  2. emacs 新手笔记(四) —— 使用 dired 完成一些简单的文件和目录操作
  3. 【Transformer】Do Vision Transformers See Like Convolutional Neural Networks?
  4. form表单图片预览 layui_layui 实现图片上传和预览
  5. php学习----运算符
  6. 查询数据库中数据的年份_本地公开数据中的年份
  7. layer使用心得3
  8. WEB常用HTML颜色代码表
  9. Java多文件生成并压缩下载
  10. 伊甸园日历游戏 c语言,HDU2149-Good Luck in CET-4 Everybody!(博弈,打表找规律)
  11. 计算机网络基础之数据交换技术
  12. js worker使用总结
  13. 春招面试阿里,面试官让我说说Java8的新特性
  14. 中考计算机考试评分标准,2016年中考英语作文的评分标准及评分细则(最新)
  15. 如何给PDF中的内容添加下划线
  16. :要求查询出每一个雇员的编号,姓名,工资,领导的姓名,部门名称及位置,工资所在公司的工资等级
  17. 那对职业测评行业如何评价?
  18. 阿里巴巴Java成神之路-笔记(8)动态代理
  19. Python实现网络聊天室(支持多人聊天与私聊)
  20. 耗纸古文风之五--伊人恋

热门文章

  1. 旧的起点(开园说明)
  2. 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过?
  3. 在MyEclipse显示struts2源码和doc文档及自动完成功能
  4. 12.C# 接口和抽象类的区别
  5. 181101新闻:午后阳光下集思广益,课例研修尝试与挑战并存
  6. RabbitMQ之Exchange Direct模式
  7. 一张图学会Python3的基本用法
  8. 量化投资与Python
  9. Java面试基础部分合集
  10. ios开发网络学习三:NSURLConnection小文件大文件下载