https://icpcarchive.ecs.baylor.edu/index.phpoption=com_onlinejudge&Itemid=8&page=show_problem&problem=5159

题目大意:n个队伍参加比赛,有m个队伍晋级,n个队伍有n-1场比赛,每两个队伍之间都有一场比赛。一场比赛赢的得a分,输的得c分,平局得b分,问没有晋级的队伍最高分和晋级的队伍最低分

分析:

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/2*a+m/2*c,即m/2*(a+c);

(2)第一堆m场比赛中所有队伍都平局

即第m+1个人得分:  m/2*b+m/2*b,即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/2*a+m/2*c,m/2*b+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)/2*a+(n-m)/2*c,即(n-m)/2*(a+c);

(2)第一堆n-m场比赛中所有队伍都平局

即第m个人得分:  (n-m)/2*b+(n-m)/2*b,即(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<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm> using namespace std; typedef long long ll; int main()
{
int t;
ll n, m, a, b, c, x, y;
int p = ;
scanf("%d", &t);
while(t--)
{
p++;
x = y = ;
scanf("%lld%lld", &n, &m);
scanf("%lld%lld%lld", &a, &b, &c);
if(a < c)
swap(a, c);
x += (n - m - ) * max(a, b);
x += max(m / *(a + c), m/*(b + b));
if(m % != )
x += max(b, c);
y += (m - ) * min(b, c);
y += min((n - m) / * (a + c), (n - m) / *(b + b));
if((n - m) % != )
y += min(a, b);
printf("Case #%d: %lld %lld\n", p, x, y);
}
return ;
}

UVALive 7147 World Cup的更多相关文章

  1. UVALive 7147 World Cup(数学+贪心)(2014 Asia Shanghai Regional Contest)

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...

  2. ACM学习历程—UVALive 7147 World Cup(分类讨论 && 贪心)

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  3. UVALive 7275 Dice Cup (水题)

    Dice Cup 题目链接: http://acm.hust.edu.cn/vjudge/contest/127406#problem/D Description In many table-top ...

  4. Gym 101194L / UVALive 7908 - World Cup - [三进制状压暴力枚举][2016 EC-Final Problem L]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  5. UVALive - 7147 (数学)

    题目链接 题意 n只队伍,两两之间会进行比赛,赢平输都有相应得分,所有比赛结束后,前m名可以晋级.问最大的不能晋级分数为多少,以及最小的能晋级的分数. 分析 智商题...按照要求来贪心1.没有晋级的队 ...

  6. UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)

    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...

  7. UVALive - 4108 SKYLINE[线段树]

    UVALive - 4108 SKYLINE Time Limit: 3000MS     64bit IO Format: %lld & %llu Submit Status uDebug ...

  8. UVALive - 3942 Remember the Word[树状数组]

    UVALive - 3942 Remember the Word A potentiometer, or potmeter for short, is an electronic device wit ...

  9. UVALive - 3942 Remember the Word[Trie DP]

    UVALive - 3942 Remember the Word Neal is very curious about combinatorial problems, and now here com ...

随机推荐

  1. linux字符驱动程序结构

    linux内核为字符设备的驱动程序设计,提供了一些数据结构,和函数,供开发人员调用,将设备驱动程序注册到内核去.现代操作系统几乎都不直接和硬件通信,而是通过定义的接口,是硬件厂商自己来开发符合标准某个 ...

  2. iOS8 LaunchScreen.storyboard

    我目前的需求是需要将启动图片通过LaunchScreen.storyboard  来实现. 我首先想到的是创建一个Sb,使用自动布局来布局imageview,并设置如下图: 布局好之后,在Image里 ...

  3. mysql,多表的内外连接+子查询

    表: student house course 关系:student_course 多对多 student house 多对一 需求:查询房间1 的学生 都学习了什么课程 select s.s_nam ...

  4. 【解题报告】PKU 2826 An Easy Problem?!

    原题链接:http://poj.org/problem?id=2826 一题很蛋疼的一题.目前为止还有一个问题我没搞清楚,问题注在代码中. 题目大意: 外面下雨了,农民Johnoson的bull(?? ...

  5. 【Unity3D】模仿制作“神庙逃亡”吃金币后金币飞出屏幕效果

    [前言] 玩过“神庙逃亡”的应该都知道,这款游戏不论从游戏流畅度.人物动画.场景的管理都很棒. 自己也做了一款简单的跑酷游戏,实现了简单的吃金币效果,但是发现不好看,于是就想模仿“神庙逃亡”中的这个效 ...

  6. Android之Socket群组聊天

    在这只做了一个简单的例子,没有用到数据库,思路就是客户端发送信息到服务器端,服务器端转发所有数据到客户端,校验服务器端发来消息是否是自己发出的,如果是自己发出的,则不显示自己的消息 贴一下Androi ...

  7. Python time mktime()方法

    描述 Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数. 如果输入的值不 ...

  8. Karel运行环境配置

    1.下载 见http://wenku.baidu.com/view/24762ced998fcc22bcd10d5e.html 2.界面空白问题 问题:运行Karel后,发现整个界面空白一片,没有任何 ...

  9. Informatica9.6.1在Linux Red Hat 5.8上安装遇到的有关问题整理_1

    1.  产品安装过程中提示无法创建Domain([ICMD_10033] Command [defineDomain] failed with error [[INFASETUP_10002]) 1) ...

  10. String定义与方法

    //5种构造方法 public void Con(){ String str = "sfaj"; String str1 = new String("sfajdf&quo ...