2019江西省程序设计竞赛
A.Cotree
题意:
两棵树,你需要连接两个点使得$\sum_{i=1}^{i=n}{\sum_{j=i+1}^{j=n}}{dis(i,j)}$最小。
思路:
对于每棵树进行换根dp,对每棵子树找到一个点使得所有点到这个点的距离和最小,连接这两个点,然后进行一次DFS统计每条边的贡献,累加即可。
code
1 |
|
D.Wave
题意:
给一个数组,找到最长的一个子序列使得这个子序列的所有奇数位的数字相同,所有偶数位的数字相同,奇数位和偶数位的数字不同。
思路:
利用一个前缀和可以快速地查询$[l,r]$区间内$c$的数量,记录下每个数字出现的位置,暴力枚举子序列的那两个不同的数字,更新最大值。
code
1 |
|
F.String
题意:
给定一个字符串,随机拿出四个字母,求这四个字母组成”avin”的概率。
思路:
答案即为$\frac{num[‘a’]num[‘v’]num[‘i’]*num[‘n’]}{|s|^4}$
代码
1 |
|
G.Traffic
题意:
一个十字路口,东西和南北各有车辆经过,每个车到达十字路口的时间为$t_i$,但是如果东西走向的汽车和南北走向的汽车同时到达十字路口,那么南北走向的就得等待。问最少要等多长时间。
思路:
暴力枚举等待时间,知道不会再有车发生时间冲撞。
代码:
1 |
|
H.Rng
题意:
一个$[1,n]$的区间,执行下列操作:
1.任意在$[1,n]$中选择一个$r$
2.在$[1,r]$中选择一个$l$
计算两次线段相交的概率
思路:
手动计算2的情况为$\frac{3}{4}$,暴力打表发现接近$\frac{1}{2}$,猜测答案为$\frac{n+1}{2*n}$
代码:
1 |
|
I.Budget
题意:
$n$个保留三位的小数,计算他们四舍五入变为2位后的差值
思路:
以string读入,判断最后一位即可。
代码:
1 |
|
J.Worker
题意:
$n$个工作间,$m$个人,第$i$个工作间每个人每天的产量位$a_i$,计算一种分配方案使的每个工作间的产量相同,如果没有,输出”No”。
思路:
$lcm$分配即可。
代码:
1 |
|
K.Class
题意:
$x=a+b,y=a-b$
计算$a*b$
思路:
答案为$\frac{(x+y)*(x-y)}{4}$
代码
1 |
|