2013 NEERC
Problem A. ASCII Puzzle
题目描述:完成一个拼图。
solution
暴搜,但好像挺难打的,但听说因为题目限制比较多,其实很多奇怪的情况都不存在。
Problem B. Bonus Cards
题目描述:有(n)张票,两种买票方式(A, B),选票流程:每轮决定一张票给谁,(A)方式抽中的概率是(B)方式的两倍。所有票都抽完,或者所有人都有票则选票结束。给出(A, B)方式各有多少人,问你用(A)方式能拿到票的概率以及(B)方式能拿到票的概率。
solution
设(f[i][j])表示经过了(i)轮,有(j)个用(A)方式的人已经拿到票的概率。
转移方程:
[f[i+1][j]+=f[i][j]*2*(A-j)/((B-(i-j))+2*(A-j)+2)
]
[f[i+1][j]+=f[i][j]*(B-(i-j))/((B-(i-j))+2*(A-j)+2)
]
更新答案:
[ans+=f[i][j]*2/((B-(i-j))+2*(A-j)+2)
]
用(B)方式的也类似。
时间复杂度:(O(n^2))
Problem F. Fraud Busters
solution
模拟。
Problem H. Hack Protection
题目描述:给定一个序列(a_i),求有多少个区间满足区间内的数的异或和等于与的值。
solution
枚举区间左端点(L),然后求出每个二进制位(L)以后最早出现(0)的是哪一位,从小到大排序,设(num=2^{30}),每遇到一个出现(0)的位置,(num)对应二进制位就变成(0),直到下一个出现(0)的位置为止,所有区间的与值都是(num),然后求出这段区间有多少个作为右端点时异或和等于(num)即可,这个可以求异或和的前缀和,然后排一下序,到时候二分就可以求答案了。
时间复杂度:(O(30nlogn))
Problem I. Interactive Interception
题目描述:交互题。已知有一架飞机一开始在数轴([0, p])之间,速度在([0, v])之间,每次可以询问飞机是否在一段区间内,询问后飞机的坐标就会加速度。先需要你在某一时刻能确定飞机的位置。
solution
二分,每次询问可行区间的一半,然后根据得到的结果缩小位置的区间以及速度的区间。
不太会,待更。
Problem J. Join the Conversation
solution
字符串处理+最长路。