“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛

(2 mins to read)

A

给定一棵树,定义点对(s, t)间距离为路径上边权和+s和t的点权和dp记录每个点子树中到该点的最大和次大距离即可比赛的时候用树直径两次dfs的方法wa了,应该是有问题

B

给定n个数,每次可以选择一段区间,使区间-1,问最少几次操作可以使所有数变为1区间操作利用差分就可以转化成两次单点操作,再贪心考虑就很简单了

C

小学数学

D

条件概率,$P(A|B) = \frac {P(AB)} {P(B)}$P(AB):至少m枚硬币是反面,且恰好k枚硬币是正面同时发生,由于正面固定,所以反面为n-k,当$n-k<m$时概率为0,否则为$C(n,k)/(2^n)$P(B):从m到n枚举反面硬币个数,$\sum_{i=m}^{n} C(n,i)/(2^n)$代入公式即可

E

简单贪心,从小到大去战胜,并且每次用刚好大于的那个

F

显然是个fibonacci,数据范围有点坑,我开了ull还是wa,改成py就过了😡😤

G

显然最大流

H

每增加一条边,最多可以与之前的所有直线都产生一个交点蜜汁数据范围,又要大数,不过py不香吗

I

给定n个数,定义n个数组,第i个数组为删去$a_i$​后形成的,问这n个数组字典序从大到小的排列顺序考虑相邻两个数$a_i, a_{i+1}$

  • $a_i < a_{i+1}$​ i比后面所有的都要劣
  • $a_i > a_{i+1}$ i比后面所有的都要优
  • $a_i = a_{i+1}$​ i比i+1优考虑将相同的一起考虑,然后用两个栈来模拟即可

J

问一个串中最长的与前缀相同的非前缀串的长度比赛的时候无脑二分+kmpnext[i]表示s[0:i]这个前缀与后缀相同的最长长度(前缀最长border),所以所有next取个max即可