GDCPC 2018

原题选手或成最大赢家。

A: Chika’s Math Homework

题目大意

1T105,1n1018 1 ≤ T ≤ 10 5 , 1 ≤ n ≤ 10 18 ,求

i=0ni2Cin ∑ i = 0 n i 2 C n i

题解

比赛的时候队友打表找规律大师秒杀。。太强大了。
可以看出来原式就是 n(n+1)2n2 n ( n + 1 ) 2 n − 2 。快速幂即可。

B: Letter Kingdom

题目大意

一个有向图有 n(2n26) n ( 2 ≤ n ≤ 26 ) 个点, n n 条边,每个点有唯一一条出边,有m(1m2×105)个士兵分布在各个点,有 q(1q2×105) q ( 1 ≤ q ≤ 2 × 10 5 ) 次询问,可以是将编号在 [l,r] [ l , r ] 内的士兵沿出边走到相邻点,或者是将编号是 x x 的倍数的士兵沿出边走到相邻点,或者查询某个士兵现在在那个点。

题解

因为有向图每个点只有一条出边,因此从一个点出发必定会进入一个环,也就是一个环带一个尾巴的那种。所以我们预处理出来每个点出发走多少次能到那些点。
对于第一种操作,我们用树状数组维护每个士兵走了多少次,对于第二种操作,因为一个数的因数很少,我们每次标记x,那么在第三种操作查询的时候直接暴力 O(n) O ( n ) 时间找到 n n 的所有因数,统计一次,加上树状数组维护的值就可以知道这个士兵走了多少次了,也就知道走到哪个点。

C: Xor Tree

题目大意

给定一棵树,1n2×105,1为根节点,每个点有一个正的权值, m(1m2×105) m ( 1 ≤ m ≤ 2 × 10 5 ) 次询问,查询 u u v路径上点权值与 x x 的异或值最大为多少。

题解

我们先考虑序列上的情况。给定一个序列,我们每次查询区间上的数与x的异或值最大为多少。我们可以想到可持久化Trie。这样我们可以方便地得到区间的Trie,那么我们通过贪心就可以得到异或值的最大值了(即每次尽量走相反的位)。那么树上的话,树链剖分就可以解决了。
码力题。。不过30min还是能写完的。

D: Bipartite Coloring

题目大意

给定一个二分图,每个点的权值,以及点集V的两个不相交子集 B1,B2 B 1 , B 2

E: Lottery

题目大意

给定 P(2P1014) P ( 2 ≤ P ≤ 10 14 ) ,求 2mn,nP 2 ≤ m ≤ n , n ≥ P ,使得 mn×m1n1=12 m n × m − 1 n − 1 = 1 2

题解

我们变换一下形式(我们令 m m 为自变量):

(1)mn×m1n1=12(2)2m(m1)=n(n1)(3)2m22m=n2n(4)2m22mn2+n=0(5)Δ=

F: Find the Number

题目大意

1..n 1.. n n(1n109) n ( 1 ≤ n ≤ 10 9 ) 个数字,C心里想一个数字 x x ,A和B轮流询问C,x是否大于某个数,C会回答是或者不是,然后对于A和B, x x 所在的范围就会缩小,直到区间长度为1的时候此时的人赢。

题解

fi表示剩下的 x x 所在的可能区间的长度为i时的先手胜率,那么有:

fi=max{ji×(1fj)+iji×(1fij)}

gi=ifi g i = i f i ,那么有 gi=max{igjgij} g i = max { i − g j − g i − j } 。打表可以发现:

gi=i2+2,i22,i+12,i mod 4=0i mod 4=2i mod 2=1 g i = { i 2 + 2 , i  mod  4 = 0 i − 2 2 , i  mod  4 = 2 i + 1 2 , i  mod  2 = 1

G: Commemorate

BZOJ 3514…

题目大意

N个点M条边的无向图,多次询问保留图中编号在 [l,r] [ l , r ] 的边的时候图中的联通块个数。

H: Number String

题目大意

给定各个元素在 [1..9] [ 1..9 ] 内的正整数序列,长度 n(1n5×106) n ( 1 ≤ n ≤ 5 × 10 6 ) 。现在你可以使用两种操作:删掉一个数,或者合并两个相邻的数为两数的和(要求和不超过9),找到经过一些操作后能得到的字典序最大的序列,且操作次数最少。
如:182736,合并18,27,36得到999,操作次数为3。如6723,删去6,合并72得到93,操作次数为2。如67211,合并62,11得到92,操作次数为2。如900,不进行任何操作。

题解

贪心:我们从左到右扫,扫过的区间 [l,r] [ l , r ] 如果恰好就可以组合出可以组合得到的最大的数(也就是说能组合得到 [l,n] [ l , n ] 能组合到的最大的数的情况下 r r 最小),那么将这个区间直接替换成最大的数,就可以了。

I: Convex Hull

题目大意

有不超过10组数据,有n(3n1000)个点( 0xi,yi10000 0 ≤ x i , y i ≤ 10000 ),令为 A0,A1,,An1 A 0 , A 1 , ⋯ , A n − 1 ,以逆时针方向排序。一个点 P P 是好的当i=0n1SΔPAiA(i+1)%n=w,如果设这些点的凸包面积为 S S ,那么有1.1S<w<1.2S。现在你需要计算所有 P P 围成的区域的面积,精度2位小数。

J: Maximum × Minimum

题目大意

给定序列 {an}(1n105) { a n } ( 1 ≤ n ≤ 10 5 ) ,求

l=1nr=lnmax{al,al+1,,ar}×min{al,al+1,,ar} ∑ l = 1 n ∑ r = l n max { a l , a l + 1 , ⋯ , a r } × min { a l , a l + 1 , ⋯ , a r }

109+7 10 9 + 7 的模。

题解

我们计算出所有点作为最大值的区间和最小值的区间。然后线段树7个域暴力搞一发,舒服。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值