您所在位置: 网站首页 / 自创试题解题报告-lzx.doc / 文档详情
自创试题解题报告-lzx.doc 立即下载
2024-09-09
约3.1千字
约6页
0
61KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

自创试题解题报告-lzx.doc

自创试题解题报告-lzx.doc

预览

免费试读已结束,剩余 1 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

寒假作业——自创试题——解题报告
K2002_12李子星
HYPERLINK\l"_【第一题】金链_1"【第一题】金链
HYPERLINK\l"_【第二题】公路建设_2"【第二题】公路建设
HYPERLINK\l"_【第三题】迷宫_1"【第三题】迷宫
HYPERLINK\l"_【第四题】Number_1"【第四题】Number

【第一题】金链
将这道题的题意看清,就知道题目的意思其实就是要我们求:
长度为n的链条怎么分段,使得:
分出的各个子链的长度可以凑成1到n之间的每一个整数,这样就可以保证店主在第i天拥有i个金环,即每一天店主都不会多收或少收房钱
分出的子链中,长度为1的子链的段数>=子链的总段数div2
分出的子链尽量的少

明确我们的目标后,就要向目标进攻:
我们采用构造法。构造“关卡数”
当n<8的时候,我们都可以用枚举知道:只要取出一个金环就可以了。
n>8时,看下面:

如果我们只取出2个金环,那么我们最多只能得到5段子链假设长度不限的话,我们使另外的三段子链长度分别为;3,6,12,那么我们就可以得到1~23之间的所有整数:
123456789101112131415161718192021222311
131
31
1
361
61
1
63
61
3
61
1
3
6121
121
1
123
121
3
121
1
3
126
121
6
121
1
6
123
6
121
3
6
121
1
3
6
12好了,光知道这些还没有用,我们必须要从中找到规律:
2个1可以凑成1~2,3就不行了,于是我们最多只能增加一段长度为3的子链
多加一个3可以将“最大可以凑成的数”从2上升到5,此时我们若还想提升“最大可以凑成的数”,最多只能增加一段长度为6的子链……直到我们增加了一段长度为12的子链,我们就再也不能提升“最大可以凑成的数”了(因为我们已经增加了3段了)。再看,我们用的子链的总长度也只有23,如果我们的金链总长还没有23是不是也只要取出2个金环就可以了呢?答案是肯定的。比如说金链总长为22的时候,我们只要将最后加进来的子链(长为12的那一段)的长度减去1,就可以了。其实,对于长度大于等于8且小于等于23的金链,取出两个金环都可以完成任务。3个金环可以达到的“最大可以凑成的数”等于63。像8,23,63这样的小于等于它和大于它至少要取出的金环数不同的数,就叫做“关卡数”。

那么,关卡数要怎么求呢?
我们又来看取出2个金环的情况:1,1可以凑成1~2,这时加一段长度为3的子链,
1,1,3可以凑成1~5,这时加一段长度为6的子链
1,1,3,6可以凑成1~11,这时加一段长度为12的子链
……..
也就是说取出x个金环的情况一定是:
先加一段x+1,在加一段x+(x+1),在加一段x+(x+1)+(x+(x+1))…..直到加了x+1次
所以取出x个金环可以达到的“最大可以凑成的数”就等于(x+1)*2(x+1)-1,所以x个金环的“关卡数”就是(x+1)*2(x+1)-1,用Gate[x]=(x+1)*2(x+1)-1
“关卡数”出来了,问题的解又是多少呢?
不要紧,马上就出来了。对于长度为n的金链,我们只要求出i使得:
Gate[i]<n<=Gate[i+1]
那么,最少要取出的金环数就是i。
当n=1016时,i=46,而Gate[47]不比1016大很多,因此我们只要求出这47个关卡数,然后保存在const里面就可以了,要注意的就是要用comp存。

【第二题】公路建设
这道题看起来很复杂,其实就是要求你对一个最小生成树进行动态维护。
处理的方法如下:
读入一条a到b的边之后,先不将这一条边加入图中,检查a到b之间是否有路径相连,
>若相连则找到路径上权值最大的一条边e(u,v)
>若e(u,v)的权值比新读入的这条边的权值要小或相等,则去掉新读入的边
>若e(u,v)的权值比新读入的这条边的权值要大,则去掉e(u,v),加入新读入的边
>若不相连则直接将新读入的边
这样,每次读入一条边后,仍能使图保持为最小树形图。

这个算法的时空复杂度是多少呢?
>时间复杂度
每次读入一条边e(a,b),要检查a,b之间是否有路径相连,我们需要一个深搜的过程
>如果我们用链表的话,深搜的时间复杂为O(e),而最小树形图中最多只有n-1条边,所以这个过程为O(n)级的
然后我们要去边与加边,这都是小于O(n)级的,
所以维护的时间复杂的是O(n)级的。
因为有m要增加,我们总共要维护m次,
所以总的时间复杂度为O(n*m)级的,这是可以承受的。

>空间复杂度
我们采用链表,只要存储边就可以了,最小树形图中最多只有n-1条边,所以空间复杂度为O(n)。

【第三题】迷宫
这道题其实跟欧
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

自创试题解题报告-lzx

文档大小:61KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用