2020.11.21【提高组】模拟赛C组总结

这是一个好东西->作者主页

T1 鸡腿の树荫

题目大意:给你一段数,每次清空[L,R]区间的数,求每次清空后还剩多少个数。
思路:

  1. 线段树:用线段树维护区间,利用 l a z y lazy lazy数组来标记这段区间是否清空。
  2. 暴力:用 a i a_i ai记录离他最近的没有清空的数的位置,然后直接模拟。
T2 Sum the Square

题目大意:给你若干对数,每一对数的数 A A A和数 B B B分别进行 操作 后可以相同。求最少操作次数+2。

思路:直接模拟。经过打表发现,不管怎么操作最终都只会出现两个环,直接判断即可。

T3 TheNumberGame

题目大意: A l i c e Alice Alice B o b Bob Bob玩游戏,给定一个数, A l i c e Alice Alice先手,可以让这个数减去它的任何一个因数(除了1和本身),不能操作视为失败,求谁会赢。
思路:
30 30 30%数据
我们不难发现,如果当某个人先手时,只要他的可行解中有一个是这个人必胜,那么这种情况就是这个人必胜。所以,我们可以建立一棵博弈树,再用数组记录答案,每次枚举当前的数的因数并减掉它搜索,到了这个数是质数时就为输,求出答案即可。

100 100 100%数据
通过打表得知只要是 2 2 2x 4 n 4^n 4n的数都是 B o b Bob Bob赢,其他的奇数 B o b Bob Bob赢,反之 A l i c e Alice Alice赢。所以直接打暴力就行了。

如何证明

我们知道,2是Bob赢。那么,到了4时Alice绝对先选择变成2,这样Alice就赢了。到了8时,Bob又可以操作数变成4,Bob又赢了。以此类推,由于Alice先手,所以2x4n的数绝对是Bob赢。

T4 Mixing Chemicals

题目大意:让你把 n n n个瓶子放进 k k k个盒子里,第 i i i个盒子不能和第 c i c_i ci个盒子放在一起。求方案个数 m o d mod mod 1 0 9 + 7 10^9+7 109+7后输出。
思路:

  1. 暴力模拟,10分。
  2. 考虑建图。具体操作如下:
    • 如果建完图后无环,则直接树形 d p dp dp,因为相连的两个点不能放在同一个盒子里,所以方案数排除这个情况。
    • 如果建完图后有环,则用并查集判断,在哪一条边出现了环,把他们记录下来,在树形 d p dp dp中把下面的点定住为1,再去操作。最后把所有记录过的答案乘起来就行了。
    • 如何设 d p dp dp。设 d p i , j dp_{i,j} dpi,j表示当前是第 i i i个点,放进了第 j j j个盒子里,所有都不冲突的方案数。那么, d p i , j dp_{i,j} dpi,j=所有 s u m s o n − d p s o n , j sum_{son}-dp_{son,j} sumsondpson,j的乘积,其中 s u m i sum_i sumi表示所有 d p i , j dp_{i,j} dpi,j的和。如果 i i i没有儿子,则所有 d p i , j dp_{i,j} dpi,j都设为1。
完成情况
  • T1
  • T2
  • T3
  • T4
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值