UVA 5986 - Wizarding Duel 超级脑洞题
给出n个人,每个人两两比赛一场,一共有C(n,2)场比赛,现在给出一个榜,问其是否合法。不合法的话,就改成合法,输出最小需要改的变化。
分数一定是C(n,2)的了,
不和法的情况,比如0,0,2,是不行的,因为如果第一个人没赢过,那么第二个人绝对有赢过,起码赢了1啊,所以这个是不合法的。那么怎么做呢?
先从小到大排序,顺序是没关系的,我们不在意比分,只在意结果。然后对于前i个人,比分一定是C(i,2)这样才是合法的。不够的话,要补上,就比如0,0这样,我应该要ans += 1,因为前2个人的比分不够啊。那么我可能第三个人的比分补上来啊!!0,0,3,这样不行?是不行的,因为我们枚举的i,意义是满足前i个人互相比赛的结果,少了,自然要补。多了呢?无视,因为它可能是赢了后面的队伍。所以最后的时候,如果总比分比C(n,2)还要大的话,就要降下来,要加上差值。
很难想啊。。我是看题解的。。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL; #include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <string>
const int maxn = +;
int a[maxn];
bool cmp (int a,int b)
{
return a<b;
}
int C (int n,int m)
{
return n*(n-)/;
}
void work ()
{
int n;
cin>>n;
for (int i=;i<=n;++i)
cin>>a[i];
sort(a+,a++n);
int ans=;
int t=;
for (int i=;i<=n;++i)
{
t += a[i];
if (t < C(i,))
{
ans += C(i,) - t;
t = C(i,);
}
}
if (t > C(n,)) ans += t - C(n,);
cout<<ans<<endl;
} int main()
{
#ifdef local
freopen("data.txt","r",stdin);
#endif
int t;
scanf("%d",&t);
while (t--) work();
return ;
}
UVA 5986 - Wizarding Duel 超级脑洞题的更多相关文章
- 图论(KM算法,脑洞题):HNOI 2014 画框(frame)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABPoAAANFCAIAAABtIwXVAAAgAElEQVR4nOydeVxTV/r/n9ertaJEC4
- UVA.10881 Piotr's Ants (思维题)
UVA.10881 Piotr's Ants (思维题) 题意分析 有一根长度为L cm的木棍,上有n只蚂蚁,蚂蚁要么向左爬,要么向右,速度均为1cm/s,若2只蚂蚁相撞,则蚂蚁同时调头.求解第T秒时 ...
- UVA.11300 Spreading the Wealth (思维题 中位数模型)
UVA.11300 Spreading the Wealth (思维题) 题意分析 现给出n个人,每个人手中有a[i]个数的金币,每个人能给其左右相邻的人金币,现在要求你安排传递金币的方案,使得每个人 ...
- UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用)
UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用) 题意分析 绝对的好题. 先说做完此题的收获: 1.对数据结构又有了宏观的上的认识; 2.熟悉了常用STL ...
- uva 10305 ordering tasks(超级烂题)——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABHIAAAHDCAYAAABI5T2bAAAgAElEQVR4nOydPY7svLW1awQGNABHCm
- uva 489 Hangman Judge(水题)
题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...
- UVa 679 小球下落 简单模拟题,树
题目大意:给你一个完全二叉树,并且给他们编号,编号规则为左子树为2*k,右子树为2*k+1,每一个节点 上都有一个开关,初始时开关都处于关闭状态,小球碰到节点就会改变该点的开关的状态.然后给你I个小球 ...
- Poj3484-Showstopper(二分脑洞题)
Description Data-mining huge data sets can be a painful and long lasting process if we are not aware ...
- UVA 10820 欧拉函数模板题
这道题就是一道简单的欧拉函数模板题,需要注意的是,当(1,1)时只有一个,其他的都有一对.应该对欧拉函数做预处理,显然不会超时. #include<iostream> #include&l ...
随机推荐
- Windows Touch 便笺簿的
Windows Touch 便笺簿的 C# 示例 (MTScratchpadWMTouchCS) 本节介绍 Windows Touch 便笺簿的 C# 示例. Windows Touch 便笺簿的 ...
- JVM插庄之二:Java agent基础原理
javaagent 简介 Javaagent 只要作用在class被加载之前对其加载,插入我们需要添加的字节码. Javaagent面向的是我们java程序员,而且agent都是用java编写的,不需 ...
- SQL介绍(1)
SQL 是用于访问和处理数据库的标准的计算机语言. SQL,指结构化查询语言,全称是 Structured Query Language. SQL 让您可以访问和处理数据库. SQL 是一种 ANSI ...
- JAVA基础知识总结3(面向对象)
特点:过程其实就是函数:对象是将函数等一些内容进行了封装 1:将复杂的事情简单化. 2:面向对象将以前的过程中的执行者,变成了指挥者. 3:面向对象这种思想是符合现在人们思考习惯的一种思想. 匿名对象 ...
- 网络编程之socket编程实例
简单实例1 server.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include ...
- 【总结整理】overflow: auto/hidden;清除自己
.top-nav{ font-size: 12px; font-weight: bold; list-style-type: none; border-bottom: 8px solid #DC4E1 ...
- 面试题: mysql数据库 已看1 简单的sql练习
数据库总结--MySQL常见面试题 2015年03月24日 17:56:06 阅读数:7787 1.根据部门号从高到低,工资从低到高列出员工的信息 select * from employee ord ...
- 文件格式——fastq格式
fastQ格式 FASTQ是一种存储了生物序列(通常是核酸序列)以及相应的质量评价的文本格式. 他们都是以ASCII编码的.现在几乎是高通量测序的标准格式.NCBI Short Read Archiv ...
- webAPI中使用FormsAuthenticationTicket作为登录权限票据
最近在做的项目得到经验,在做登录的时候,使用FormsAuthenticationTicket, 登录成功以后生成cookia作为登录态维护,票据作为调用其他接口的凭据,票据生成后传到前台作为调用接口 ...
- hdu1088
#include <stdio.h> #include <string.h> int main() { char s[10000]; int len; int cnt = 0; ...