2019.02.15【NOIP提高组】模拟 B 组总结

9 篇文章 0 订阅
7 篇文章 0 订阅

100+80+30=210
T1:很容易看出是棵树
求出最长距离,深搜一下
如果一个点是叶子节点
暂时在它与它父亲那条边上放陷阱直到与根节点的距离达到最大值
如果是父亲节点
由于一个节点与它父亲的边上的陷阱可以影响这个点的所有儿子
也就是说我们可以在i与i的父亲的那条边上放陷阱来减少i到i的儿子的边上的陷阱数
但放太多会使某些点距离大于最大值
求个min就好。
T2:

一眼状压

但是2^15*10000会爆掉,没法DP
所以打了两个状压宽搜,从起点到终点和从终点到起点

其实差不多,都是部分分
打着打着打不下去
忽然看出求答案的过程只与起点,k个点,终点有关
我们把它们剥离出来,做k+2遍最短路,求出两两之间的最短距离
然后两次状压宽搜(第一个求起点到终点,第二个求终点到起点)

第一个的初值是f1[1,0]=0

第二个的初值是f2[k+2]=f1[k+2]
要开int64
要开int64
要开int64
一开始打的int64,后来想了一下可能会时超
如果它不卡你可以开longint
但它卡了
而我在最后一分半钟交了longint
100->80

T3:
二叉字典树(二进制,31层)
沿着走
如果只有一个子节点就走
否则,如果风水值这位为1,就走0,否则走1
字典树记录一下编号,输出即可

已AK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值