2017 湖南省赛 K Football Training Camp

题意:

在一次足球联合训练中一共有\(n\)支队伍相互进行了若干场比赛。 对于每场比赛,赢了的队伍得3分,输了的队伍不得分,如果为平局则两支队伍各得1分。

现在给出每只队伍的得分\(s_i\),问最少和最多进行了多少场比赛,不超过1000组数据

\(1<=n<=20\)

\(0<=s_i<=200\)

思路:

比赛的时候脑子不清醒,被这个配对难住了,暴力往搜索方面想了想,肯定会TLE啦,就放弃了

现在清醒一点,胜负局对胜负配对没有影响,只有平局对配对有影响,而且平局越多,比的场次也越多

如果设胜负局有\(x\)场,平局\(y\)场,则有\(3x + 2y = sum\)

枚举\(x\), 判断是否可以出现\(y\)场平局,但是这里取胜的队伍策略不固定,所以不好判断平局是否可以出现

现在问题就变成 给一个局面 如何判断当前局面,可以全打平局

当且仅当 \(sum\) 为偶数, 且\(max <= sum / 2\)

\(sum\)为偶数是显然的,若\(max > sum / 2\), 那么剩下的数无法消除\(max\)

考虑这样一种方法,假设\(a_1,a_2,...a_n\)为得分从小到大排序后的序列,找到中线所在的位置

令\(psum[i]\)为分数的前缀和,假设\(i\)为一个满足 \(psum[i-1] + a_i >= sum / 2\)的位置

若\(psum[i-1] + a_i = sum / 2\) 显然就可以将\(a_1,...a_i\)和\(a_{i+1},...a_n\)这两部分配对即可

若\(psum[i-1] + a_i > sum / 2\) 这样将\(a_i\)分成了两部分,将左边部分\(sum / 2 - psum[i-1]\)用\(a_{i+1},...a_n\)消掉,右边部分\(psum[i] - sum / 2\)用\(a_1,...a_i\)消掉

然后\(a_{i+1},...a_n\) 与 \(a_1,...a_i\)配对即可

这样若$max > sum / 2 $那么中线一定会出现在 \(a_n\) 中,就无法成功配对了。

知道了这个结论,现在只需要每次贪心将\(max\) 取一场胜负局,再接着判定平局是否合法即可

#include<queue>
#include<algorithm>
#include<iostream>
#include<cstdio> #define LL long long using namespace std; priority_queue<int > q;
int main(){ int n;
while(scanf("%d",&n) == 1){
int x,ansmx = 0,ansmi = 0;
while(!q.empty()) q.pop();
int sum = 0;
for(int i = 1;i <= n;i++){
scanf("%d",&x);
q.push(x);
sum += x;
}
int cnt = 0;
while(!q.empty()){
x = q.top();q.pop();
if(sum % 2 == 0 && x <= sum / 2) {
if(!ansmx) ansmx = cnt + sum / 2;
ansmi = cnt + sum / 2;
}
if(x < 3) break;
sum -= 3;
q.push(x - 3);
cnt++; }
cout<<ansmi<<" "<<ansmx<<endl;
}
return 0;
}

2017 湖南省赛 K Football Training Camp的更多相关文章

  1. 湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心

    2007: Football Training Camp[原创-转载请说明] Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 1 ...

  2. CSU-2007 Football Training Camp

    Football Training Camp 在一次足球联合训练中一共有n支队伍相互进行了若干场比赛. 对于每场比赛,赢了的队伍得3分,输了的队伍不得分,如果为平局则两支队伍各得1分. Input 输 ...

  3. 【数论】【原根】【动态规划】【bitset】2017四川省赛 K.2017 Revenge

    题意: 给你n(不超过200w)个数,和一个数r,问你有多少种方案,使得你取出某个子集,能够让它们的乘积 mod 2017等于r. 2017有5这个原根,可以使用离散对数(指标)的思想把乘法转化成加法 ...

  4. Petrozavodsk Summer Training Camp 2017 Day 9

    Petrozavodsk Summer Training Camp 2017 Day 9 Problem A. Building 题目描述:给出一棵树,在树上取出一条简单路径,使得该路径的最长上升子序 ...

  5. Petrozavodsk Summer Training Camp 2017

    Petrozavodsk Summer Training Camp 2017 Problem A. Connectivity 题目描述:有\(n\)个点,现不断地加边.每条边有一种颜色,如果一个点对\ ...

  6. ACM总结——2017湖南省省赛总结

    2017省赛已经结束了2天了,今天终于有时间,也有勇气来写下这一篇总结.的确,这是我第一次正式的ACM线下赛,我本以为再不济,也可以拿个三等奖,没想到,实力打铁.确实对我打击比较大,以前的确是知道自己 ...

  7. 2016 Al-Baath University Training Camp Contest-1

    2016 Al-Baath University Training Camp Contest-1 A题:http://codeforces.com/gym/101028/problem/A 题意:比赛 ...

  8. 2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest (5/9)

    2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest B. Forcefield 题意 给你一维平面上n个镜子 ...

  9. Petrozavodsk Winter Training Camp 2018

    Petrozavodsk Winter Training Camp 2018 Problem A. Mines 题目描述:有\(n\)个炸弹放在\(x\)轴上,第\(i\)个位置为\(p_i\),爆炸 ...

随机推荐

  1. php 电商系统SKU库存设计

    sku 全称为:Stock Keeping Unit,是库存进出计量的基本单元. 我们一般会在电商网站基本都会看到 比如淘宝,JD 淘宝和JD的 方式可能不一样,因为我不清楚他们具体是如何设计的, J ...

  2. Hadoop Eclipse 插件制作以及安装

    在本地使用Eclipse调试MapReduce程序,需要Hadoop插件,笔摘记录下制作安装过程. 准备工作(hadoop-2.6.0为例): 搭建好Hadoop环境 下载Hadoop安装包,解压到某 ...

  3. C语言运算符优先级和结合性

    运算符优先级和结合性 优先级                                       运算符 结合性                                         ...

  4. docker学习(三) 安装docker的web可视化管理工具

    1.docker是一个一款很轻便的应用容器引擎,为了更好的管理和使用docker,使用web可视化管理工具似乎更符合大多数人的需求.在这里,我给大家分享下自己使用过的几款web工具:docker UI ...

  5. [Python 3.X]python练习笔记[2]-----用python实现七段数码管显示年月日

    #SevenDigitsDrawV2.py import turtle import time def drawGap(i):#绘制数码管间隔 turtle.penup() turtle.fd(i) ...

  6. Python3: 对两个字符串进行匹配

    Python里一共有三种字符串匹配方式,用于判断一个字符串是否包含另一个字符串.比如判断字符串“HelloWorld”中是否包含“World”: def stringCompare(str1, str ...

  7. performance_schema实现套路

      实现中大量使用多层次嵌套预编译,大量if else,wrapper等 不建议去看这个实现 start_mutex_wait_v1 if (flag_thread_instrumentation) ...

  8. jmeter使用BeanShell断言

    1. 首先存储一个接口的响应结果,如在http请求的BeanShell PostProcessor: import java.io.UnsupportedEncodingException; Syst ...

  9. React Antd中样式的修改

    如果需要对antd的样式进行修改, 进入你要修改的页面 注意:不能直接在自己的文件下面,加入一个css,修改这个class的样式,应该 加入global限定,global {} , 在{}里面写入 . ...

  10. 阿里云SLB上http强制跳转到https问题处理

    背景: 最近一客户有一个需求,需要将外网所有http访问请求强制跳转到https,公网出口使用阿里云SLB,证书放在SLB上,SLB后端实例为ECS(webserver)web服务使用nginx, 网 ...