AStar2006 --- 变态比赛规则问题

原创 2006年05月31日 12:13:00

 

变态比赛规则问题

 

为了促进各部门员工的交流,百度举办了一场全公司范围内的拳皇(百度内部最流行的格斗游戏)友谊赛,负责组织这场比赛的是百度的超级拳皇W.ZW.Z不想用传统的淘汰赛或者循环赛的方式,而是自己制定了一个比赛规则。

 

由于一些员工(比如同部门或者相邻部门员工)平时接触的机会比较多,为了促进不同部门之间的交流,W.Z希望员工自由分组。不同组之间的每两个人都会进行一场友谊赛而同一组内的人之间不会打任何比赛。

 

比如4个人,编号为1~4,如果分为两个组并且12一个组,34一个组,那么一共需要打四场比赛:1 vs 31 vs 42 vs 32 vs 4 而如果是123一组,4单独一组,那么一共需要打三场比赛: 1 vs 42 vs 43 vs 4

 

很快W.Z意识到,这样的比赛规则可能会让比赛的场数非常多。W.Z想知道如果有N个人,通过上面这种比赛规则,总比赛场数有可能为K场吗?比如3个人,如果只分到一组则不需要比赛,如果分到两组则需要2场比赛,如果分为三组则需要3场比赛。但是无论怎么分都不可能恰需要1场比赛。

 

相信作为编程高手的你一定知道该怎么回答这个问题了吧? 那么现在请你帮助W.Z吧。

 

输入要求:

每行为一组数据,包含两个数字 N, K(0<N<=500, K>=0)。例:

2 0

2 1

3 1

3 2

样例:in.txt

 

输出要求:

对输入的N,K 如果N个员工通过一定的分组方式可以使比赛场数恰好为K,则输出"YES",否则输出"NO"(请全部使用大写字母),每组数据占一行。例:

YES

YES

NO

YES

样例:out.txt

 

评分规则:

1.程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试数据集上运行不能超过10秒,否则该用例不得分;

2.要求程序能按照输入样例的格式读取数据文件,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分;

3.该题目共有3个测试数据集,每个测试数据集为一个输入文件。各测试数据集占该题目分数的比例分别为30%30%40%

4.该题目20分。

 

 

以下是我的想法:

百度一共有N个员工, 按照一定的分组方式会有K场比赛.

不妨假设分为x, 那么每组的人数分别为A1, A2, A3 … Ax

满足 A1+A2+A3+…+Ax = N;

对于第1组来说,他们队员一共需要跟第2组,第3x组进行比赛,那么一共需要

进行 A1*A2 + A1*A3 + …+A1*Ax 场比赛, 也就是A1*(A2+A3+…+Ax)场比赛。

对于第2组来说, 一共需要 A2*(A1+A3+…+Ax)比赛

……

对于第x组来说, 一共需要 Ax*(A1+A3+…+A(x-1))比赛

 

那么一共进行的比赛场数就是:

A1*(A2+A3+…+Ax)  + A2*(A1+A3+…+Ax) + Ax*(A1+A3+…+A(x-1))

由于A1+A2+A3+…+Ax = N

那么式转变为

A1*(N-A1)  + A2*(N-A2) + … +Ax*(N-Ax)

A1*N-A1*A1 + A2*N-A2*A2  + … + Ax*N -Ax*Ax

N(A1+A2+…+Ax) – (A1*A1+A2*Ax+…+Ax*Ax)

N*N - (A1*A1+A2*Ax+…+Ax*Ax)

由于重复了1

那么 K = (N*N - (A1*A1+A2*Ax+…+Ax*Ax))/2;

: N*N-2K = A1*A1+A2*Ax+…+Ax*Ax;

也就是说, 如果从多个分组方式里头找到满足上式的一个分组方式就正确,

如果找不到就错误

 

虚代码如下:

/* 返回0则无法分组, 返回1则分组成功 */

int grouping(int NVal, int KVal)

{

char result = 0;

 

int N = NVal;

int K = KVal;

 

我再好好想想………….

 

return result;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

php解:2006 年百度之星程序设计大赛初赛题目 3 ----变态的比赛规则

2006 年百度之星程序设计大赛初赛题目 3 变态的比赛规则 为了促进各部门员工的交流,百度 (baidu) 举办了一场全公司范围内的 " 拳皇友谊赛 " ,负责组织这场比赛的是百度的超级 " 拳皇 ...
  • wxhlxx
  • wxhlxx
  • 2011-06-04 20:57
  • 1058

变态的比赛规则

  • 2014-03-27 09:39
  • 406B
  • 下载

"百度之星"程序设计大赛试题解答(Java实现)---变态的比赛规则(未完成!!!)

悲催啊,弄了整整一下午还是没有完整滴弄出来 不得不承认我智商很一般,搞这个整数划分的算法搞了近1个小时才弄明白,可是,这道变态的题目并不是这样简单啊!!!忍无可忍,只好站在前人的肩膀上了来做了一位是...

ACM2、变态的比赛规则

2006 年百度之星程序设计大赛初赛题目 3  变态的比赛规则  为了促进各部门员工的交流,百度 (baidu) 举办了一场全公司范围内的 " 拳皇友谊赛 " ,负责组织这场比赛的是百度的...

2006年百度之星程序设计大赛试题初赛题目-题3-变态的比赛规则

变态的比赛规则  为了促进各部门员工的交流,百度 (baidu) 举办了一场全公司范围内的 " 拳皇友谊赛 " ,负责组织这场比赛的是百度的超级 " 拳皇 "...

飞思卡尔比赛规则

  • 2014-07-13 18:12
  • 1022KB
  • 下载

关于codeforces比赛规则介绍(转载)

Codeforces 简称: cf(所以谈论cf的时候经常被误会成TX的那款游戏). 网址: codeforces.com   这是一个俄国的算法竞赛网站,由来自萨拉托夫州立大学、由Mike M...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)