第22届全国青少年信息学奥林匹克联赛CCF-NOIP-2016 提高组(复赛)day2答案及解析.pdfVIP

第22届全国青少年信息学奥林匹克联赛CCF-NOIP-2016 提高组(复赛)day2答案及解析.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

一、实操题

1、组合数问题

【问题描述】

组合数表示的是从n个物品中选出m个物品的方案数。举个例子,从(1,2,3)

三个物品中选择两个物品可以有(1,2),(1,3),(2,3)

这三种选择方法。根据组合数的定义,我们可以给出计算组合数的一般公式:

其中n!=1×2×…×n。

小葱想知道如果给定n,m和k,对于所有的0≤i≤n,0≤j≤min(i,m)有多少对(i,j)

满足是k的倍数。

【输入格式】

从文件problem.in中读入数据。

第一行有两个整数t,k,其中t代表该测试点总共有多少组测试数据,k

的意义见【问题描述】。

接下来t行每行两个整数n,m,其中n,m的意义见【问题描述】。

【输出格式】

输出到文件problem.out中。

t行,每行一个整数代表所有的0≤i≤n,0≤j≤min(i,m)中有多少对(i,j)满足是k

的倍数。

【样例1输入】

12

33

【样例1输出】

1

【样例1说明】

在所有可能的情况中,只有是2的倍数。

【样例2输入】

25

45

67

【样例2输出】

0

7

【子任务】

参考答案:根据组合数的定义,我们可以先计算出所有可能的(i,j)对应的组合数C(i,

j),然后统计其中满足C(i,j)是k的倍数的对数。具体步骤如下:1.

初始化一个二维数组dp[n+1][m+1],其中dp[i][j]表示从i个物品中选择j个物品的方

案数,即C(i,j)。2.根据组合数的定义,计算dp数组的值。3.

遍历所有可能的(i,j)对,统计其中满足C(i,j)是k的倍数的对数。4.输出统计结果。

解析:【喵呜刷题小喵解析】:

本题是一道组合数问题,要求统计所有可能的(i,j)对,其中C(i,j)是k的倍数。根据

组合数的定义,我们可以使用公式C(i,j)=i!/(j!(i-

j)!)计算C(i,j)的值。然后,我们可以遍历所有可能的(i,j)对,判断C(i,j)是否是k的倍

数,如果是,则计数器加1。最后,输出计数器的值即可。

需要注意的是,由于n和m的取值范围较大,直接计算C(i,j)可能会超时。因此,我

们可以使用动态规划的思想,先计算出所有可能的C(i,j)的值,然后再进行统计。

具体地,我们可以使用一个二维数组dp[i][j]表示C(i,j)的值,然后根据组合数的定

义递推计算出dp数组的值。在计算dp数组时,我们需要注意一些细节,如ij时C(i,j

)=C(i-1,j)+C(i-1,j-1),以及i=j时C(i,i)=1等。

最后,我们需要注意题目中给出的子任务限制,根据子任务的要求进行相应的优化

。例如,当k=1时,所有C(i,j)都是1的倍数,此时我们可以直接输出n*(n+1)/2;当k

=2时,我们需要判断C(i,j)是否是2的倍数,即判断i和j的奇偶性等等。

2、蚯蚓

【问题描述】

本题中,我们将用符号表示对c向下取整,例如:

蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请

神刀手来帮他们消灭蚯蚓。

蛐蛐国里现在共有n只蚯蚓(n为正整数)。每只蚯蚓拥有长度,我们设第i

只蚯蚓的长度为

ai(i=1,2,…,n),并保证所有的长度都是非负整数(即:可能存在长度为

0的蚯蚓)。

每一秒,神刀手会在所有的蚯蚓中,准确地找到最长的那一只(如有多个则任选一

个)将其切成两半。神刀手切开蚯蚓的位置由常数p(是满足0p1

的有理数)决定,设这只蚯蚓长度为x,神刀手会将其切成两只长度分别为

的蚯蚓。特殊地,如果这两个数的其中一个等于0则这个长度为0

的蚯蚓也会被保留。此外,除了刚刚产生的两只新蚯蚓,其余蚯蚓的长度都会增加

q(是一个非负整常数)。

蛐蛐国王知道这样不是长久之计,因为蚯蚓不仅会越来越多,还会越来越长。蛐蛐

国王决定求助于一位有着洪荒之力的神秘人物,但是救兵还需要m

秒才能到来……(m为非负整数)

蛐蛐国王希望知道这m秒内的战况。具体来说,他希望知道:

m秒内,每一秒

您可能关注的文档

文档评论(0)

喵呜刷题 + 关注
实名认证
文档贡献者

来喵呜刷题,完成你的职业蜕变!

1亿VIP精品文档

相关文档