(CSP2019模拟)DTOJ4599. 燃烧的火焰

题意

宫水三叶擅长手工,她自己编织了一张网。

这张网可以用一个 n n n 个点 m m m 条边的连通图来表示,每一条边都有长度。

但是这张网毕竟是可燃物。某一天,网上的 k k k 个节点在 0 0 0 时刻突然同时被点燃了,火焰以单位速度沿着边向外扩散。具体来说,如果有一条长度为 l l l 的边连接着点 x , y x,y x,y ,假设第 i i i个 时刻 x x x 节点被点燃了,那么在 i + l i+l i+l 的时刻 y y y 节点也会被点燃。反之也是成立的。

如果整张图的 n n n 个节点全部被点燃了,那么就认为这张图完全被点燃了。

既然着火了,那么首要任务就是救火。三叶请小H来帮忙。在 0 0 0 时刻时,小H随机选择了若干个已经被点燃的点,将它们扑灭。但是,小H扑灭了那些点后并没有使整张图完全被点燃的时间推晚!

三叶觉得小H运气太差了,于是她想知道这个事件的概率。

形式化的说,小H 2 k 2^k 2k 种灭火方案(包含一个都不选)。假设小H随机从中选一种,有多少概率选到的灭火方案没能使整张图完全被点燃的时间推晚。

假设在没有灭火时整张图完全被点燃从时刻 a a a 开始,灭火后整张图完全被点燃从时刻 b b b 开始,而没能使整张图完全被点燃的时间推晚的方案当且仅当 a = b a=b a=b

对于所有数据,满足 1 ≤ n ≤ 1 0 5 , 1 ≤ m ≤ 2 × 1 0 5 , 1 ≤ k ≤ 20 1\le n \le 10^5,1 \le m \le 2 \times 10^5,1 \le k \le 20 1n105,1m2×105,1k20
整张图保证没有重边和自环,并且保证联通。
k k k 个在 0 0 0 时刻被点燃的点的编号互不相同。
对于每条边满足 1 ≤ x i , y i ≤ n , 1 ≤ l i ≤ 1 0 9 1 \le x_i,y_i \le n ,1 \le l_i \le 10^9 1xi,yin,1li109
每个测试点具体限制见下表:

测试点编号 n n n k k k特殊性质
1 ∼ 2 1 \sim 2 12 ≤ 10 \le 10 10 ≤ 3 \le 3 3
3 ∼ 6 3 \sim 6 36 ≤ 1 0 3 \le 10^3 103 ≤ 8 \le 8 8 m ≤ 2 × 1 0 4 m \le 2 \times 10^4 m2×104
7 7 7 ≤ 1 0 5 \le 10^5 105 ≤ 8 \le 8 8特殊性质A
8 8 8 ≤ 1 0 5 \le 10^5 105 ≤ 8 \le 8 8特殊性质B
9 ∼ 10 9 \sim 10 910 ≤ 1 0 5 \le 10^5 105 ≤ 8 \le 8 8
11 ∼ 12 11 \sim 12 1112 ≤ 1 0 5 \le 10^5 105 ≤ 15 \le 15 15特殊性质A
13 13 13 ≤ 1 0 5 \le 10^5 105 ≤ 15 \le 15 15特殊性质B
14 ∼ 16 14 \sim 16 1416 ≤ 1 0 5 \le 10^5 105 ≤ 15 \le 15 15
17 ∼ 19 17 \sim 19 1719 ≤ 1 0 5 \le 10^5 105 ≤ 20 \le 20 20特殊性质A
20 20 20 ≤ 1 0 5 \le 10^5 105 ≤ 20 \le 20 20特殊性质B
21 ∼ 25 21 \sim 25 2125 ≤ 1 0 5 \le 10^5 105 ≤ 20 \le 20 20

特殊性质A:满足 m = n − 1 m=n-1 m=n1 ,对于第 i i i 条边,满足 x i = i , y i = i + 1 x_i=i,y_i=i+1 xi=i,yi=i+1
特殊性质B:满足 m = n − 1 m=n-1 m=n1

题解

考场:
不知道出于何种心态一直觉得它是个性质题(可能受昨天T2影响),猜了半天结论都是假的,到最后才发现转化一下式子,每个点到关键点距离的最小值(记为 m n u mn_u mnu)的最大值(记为 a n s ans ans)不变,从关键点集合的角度考虑,即为每个点的距离 ≤ a n s \le ans ans的关键点不能全部删掉,即删掉的点集不能完全包含任意一个求出的点集。于是也没多想,感觉只会暴力枚举点集然后枚举子集判断,效率 O ( 3 n ) O(3^{n}) O(3n),赶快敲完后看时间不多,情急之下想到分块枚举子集,效率 O ( 2 n / 2 × 3 n / 2 ) O(2^{n/2} \times 3^{n/2}) O(2n/2×3n/2)好像能卡过,然后赶紧码完调不出来,只有64pts的暴力。
正解:
slz:我没想到到你 不会做……
xjq、szm:这题挺良心的啊
效率要是 O ( 2 n ) O(2^{n}) O(2n),想到状压DP,记 f [ s ] f[s] f[s]为集合s是否合法,初始状态即为所有已知的不能全删的点集,要转移到所有超集,枚举每个集合,向第一个不在集合的点,即可保证所有集合都被标记到。
反思:
多给点时间应该能想到吧?以后看到题还是要就题意入手,不要乱想一些奇怪的东西,既浪费时间又有损心态。这种集合的转移问题应该还是比较基础的,因为只需要判断集合的合法性,即有一个子集不行就不行,重复枚举子集肯定是浪费的,于是状压就相当于记忆化,可避免重复地枚举子集。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值