Noip 模拟 16 2018/11/4

T1:物理课 (physics)
wzy 正在上物理课!他发现了一个完全不会的题目:caoxia 在一个奇妙的星球上(重力加速度为 g)踢了一只猫,猫飞起的路线与地面夹角为 θ (角度制),初速度为 v,猫非常地开心,所以每次落地后会自己反弹,但反弹后速度会乘以一个常数 d(0≤d<1)。请问猫最后的落点离起点多远?(猫飞行时方向不会改变,飞行过程中不计空气阻力与摩擦力,所有数值单位均为国际标准单位制)
斜抛运动,表示对不考虑空气阻力无力吐槽(虽然加了我也不会写
将力分解后,发现是等比数列求和,套上公式即可

T2:数学课 (math)
wzy 又来上数学课了…… 虽然他很菜,但是数学还是懂一丢丢的。老师出了一道题,给定一个包含 n 个元素的集合 P=1,2,3,…,n,求有多少个集合 A⊆P,满足任意 x∈A 有 2x∉A,且对于 A 在 P 中的补集 B,也满足任意 x∈B 有 2x∉B。
wzy 花费了 1e100 天终于算出来了这个答案,但是可恶的 caoxia 居然又加了一个条件!他要求 A 的大小恰好为 m,这样又有多少个 A 呢?
这回 wzy 真的不会了,他找到了你,希望能够得到帮助。由于答案太大,你只需要输出答案 m o d 1 0 7 + 19 mod10^7+19 mod107+19 即可。

可以发现,一个数的奇数倍和偶数倍一定是在两个不同的集合,且差最大为 1
那么就可以得到一个集合的最小个数,剩下的套组合数乘上 2 的次幂,但组合数很大,可以使用卢卡斯
考虑怎么处理一个数奇数倍和偶数倍的个数,从后往前看, n 2 \frac{n}{2} 2n n n n 一定是 1, n 4 \frac{n}{4} 4n n 2 \frac{n}{2} 2n 是 2,……,分块处理即可

T3:地理课 (geography)
地理课上,老师给出了一个巨大的地图,由于世界日新月异,会有一些道路在某一时刻被删除,也会有一些道路在某一时刻被修建。这里的道路均为双向的。
老师认为,有一些城市被分在了一个连通块中可以相互到达,而有一些城市不能够相互到达。而他想知道,每个时刻所有连通块大小的乘积是多少?
wzy 看到这个地图的时候就蒙了,还好那只上天的喵及时帮助了他。现在他把这个毒瘤的地图拿过来给你,想试试看你能不能求出来。由于答案可能很大,输出乘积 m o d 1 0 7 + 19 mod10^7+19 mod107+19 即可。

直接维护应该是很难吧(反正我不会 )(有大佬暴力水过但被 hack 了)
那就只能考虑离线了
一条连边只会在一段时间内对答案有影响,很像是区间修改对吧,那么就用线段树维护
以时间为下标建一棵线段树,按时间将一条边加入线段树,在递归时将完全覆盖这段时间的边加入并查集,到底层统计答案
往下的时候需要开 vector 记录下修改的信息,才能回退(可持久化并查集不会写

你可能感兴趣的:(2018NOIP)