2017 湖南省赛 K Football Training Camp
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的更多相关文章
- 湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心
2007: Football Training Camp[原创-转载请说明] Submit Page Summary Time Limit: 1 Sec Memory Limit: 1 ...
- CSU-2007 Football Training Camp
Football Training Camp 在一次足球联合训练中一共有n支队伍相互进行了若干场比赛. 对于每场比赛,赢了的队伍得3分,输了的队伍不得分,如果为平局则两支队伍各得1分. Input 输 ...
- 【数论】【原根】【动态规划】【bitset】2017四川省赛 K.2017 Revenge
题意: 给你n(不超过200w)个数,和一个数r,问你有多少种方案,使得你取出某个子集,能够让它们的乘积 mod 2017等于r. 2017有5这个原根,可以使用离散对数(指标)的思想把乘法转化成加法 ...
- Petrozavodsk Summer Training Camp 2017 Day 9
Petrozavodsk Summer Training Camp 2017 Day 9 Problem A. Building 题目描述:给出一棵树,在树上取出一条简单路径,使得该路径的最长上升子序 ...
- Petrozavodsk Summer Training Camp 2017
Petrozavodsk Summer Training Camp 2017 Problem A. Connectivity 题目描述:有\(n\)个点,现不断地加边.每条边有一种颜色,如果一个点对\ ...
- ACM总结——2017湖南省省赛总结
2017省赛已经结束了2天了,今天终于有时间,也有勇气来写下这一篇总结.的确,这是我第一次正式的ACM线下赛,我本以为再不济,也可以拿个三等奖,没想到,实力打铁.确实对我打击比较大,以前的确是知道自己 ...
- 2016 Al-Baath University Training Camp Contest-1
2016 Al-Baath University Training Camp Contest-1 A题:http://codeforces.com/gym/101028/problem/A 题意:比赛 ...
- 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个镜子 ...
- Petrozavodsk Winter Training Camp 2018
Petrozavodsk Winter Training Camp 2018 Problem A. Mines 题目描述:有\(n\)个炸弹放在\(x\)轴上,第\(i\)个位置为\(p_i\),爆炸 ...
随机推荐
- webpack和sass功能简介
1.webpack webpack 是一个打包工具,为什么需要打包?因为有的人的脚本开发语言可能是 CoffeeScript 或者是 TypeScript,样式开发工具可能是 Less 或者 Sass ...
- mysql在cmd里中文乱码解决办法
右边画红线部分中文已经乱码,左边红线里中文则完美显示出来了. 解决办法 用set names utf-8: 效果如图
- PHP (Yii2) 自定义业务异常类(可支持返回任意自己想要的类型数据)
public function beforeAction($action) { return parent::beforeAction($action); } public function runA ...
- ubuntu 18 lnmp
1安装Nginx sudo apt-get install nginx 2安装PHP sudo apt- php7.-fpm 3安装mysql sudo apt-get install mysql 启 ...
- Kubernetes-DNS
Kubernetes提供的虚拟DNS服务名为skydns,由四个组件组成: etcd:DNS存储 kube2sky:将Kubernetes Master中的Service(服务)注册到etcd sky ...
- 关于VSCode如何缩进两个空格
使用VSCode编写vue的时候,由于缩进问题经常报错.(默认缩进4个空格,实际规范上是两个空格) 更改VSCode的缩进格式. 但是此时你在编写代码的时候却发现任然缩进4格,此时因为vscode默认 ...
- Rmarkdown:输出pdf设置
输出pdf需要安装Ctex --- title: "first markdown" author: "name" date: "`r format(S ...
- AVL重平衡细节——插入
话说这个系列鸽了好久,之前在准备语言考试,就没管博客了,现在暑假咱们继续上路! 每当我们进行一次插入之后,整棵AVL树的平衡性就有可能发生改变,为了控制整棵树的高度,我们需要通过一系列变换(重平衡)来 ...
- leetcode 笔记5 single number
question: Given an array of integers, every element appears twice except for one. Find that single o ...
- 【jQuery】 资料
[jQuery] 资料 1. 选择器 http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp 2. 事件 http://www.w3sch ...