用户工具

站点工具


2020-2021:teams:mian:nowcoder_training:2020_multi-university_training_contest_9

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
2020-2021:teams:mian:nowcoder_training:2020_multi-university_training_contest_9 [2020/08/08 22:29]
grapelemonade [E]
2020-2021:teams:mian:nowcoder_training:2020_multi-university_training_contest_9 [2020/08/14 11:20] (当前版本)
gary
行 1: 行 1:
-====== 2020牛客暑期多校训练营(第场) ======+====== 2020牛客暑期多校训练营(第场) ======
  
 ===== Results ===== ===== Results =====
行 44: 行 44:
 <code python>​print(eval(input().replace('​(','​**('​)))</​code>​ <code python>​print(eval(input().replace('​(','​**('​)))</​code>​
 ===== B ===== ===== B =====
 +
 +考虑类似树上DP的过程,记录每个节点完成其子树所需的最小初始HP以及可以获得的HP,最小初始HP可以通过二分来求解,可以增加HP的子树直接选取,减小HP的子树贪心选取
  
 ===== C ===== ===== C =====
行 56: 行 58:
  
 $$ $$
-\large\prod\limits_{i=a}^{b}\prod\limits_{j=c}^{d}\gcd(x^i,​y^j)\\ +\prod\limits_{i=a}^{b}\prod\limits_{j=c}^{d}\gcd(x^i,​y^j)\\ 
-\large=\prod\limits_{i=a}^{b}\prod\limits_{j=c}^{d}\gcd((p_1^{u_1}p_2^{u_2}\dots p_n^{u_n})^i,​(p_1^{v_1}p_2^{v_2}\dots p_n^{v_n})^j)\\ +=\prod\limits_{i=a}^{b}\prod\limits_{j=c}^{d}\gcd((p_1^{u_1}p_2^{u_2}\dots p_n^{u_n})^i,​(p_1^{v_1}p_2^{v_2}\dots p_n^{v_n})^j)\\ 
-\large=\prod\limits_{i=a}^{b}\prod\limits_{j=c}^{d}\prod\limits_{k=1}^{n}p_k^{\min(i\cdot u_k, j\cdot v_k)}\\ +=\prod\limits_{i=a}^{b}\prod\limits_{j=c}^{d}\prod\limits_{k=1}^{n}p_k^{\min(i\cdot u_k, j\cdot v_k)}\\ 
-\large=\prod\limits_{k=1}^{n}\prod\limits_{i=a}^{b}\prod\limits_{j=c}^{d}p_k^{\min(i\cdot u_k, j\cdot v_k)}\\ +=\prod\limits_{k=1}^{n}\prod\limits_{i=a}^{b}\prod\limits_{j=c}^{d}p_k^{\min(i\cdot u_k, j\cdot v_k)}\\ 
-\large=\prod\limits_{k=1}^{n}p_k^{\sum\limits_{i=a}^{b}\sum\limits_{j=c}^{d}\min(i\cdot u_k, j\cdot v_k)}\\+=\prod\limits_{k=1}^{n}p_k^{\sum\limits_{i=a}^{b}\sum\limits_{j=c}^{d}\min(i\cdot u_k, j\cdot v_k)}\\
 $$ $$
  
-考虑对每个质因数 $p_k$ 求 $$\large\sum\limits_{i=a}^{b}\sum\limits_{j=c}^{d}\min(i\cdot u_k, j\cdot v_k)$$+考虑对每个质因数 $p_k$ 求 $$\sum\limits_{i=a}^{b}\sum\limits_{j=c}^{d}\min(i\cdot u_k, j\cdot v_k)$$
  
 容易发现 $i$ 固定后 $\sum\limits_{j=c}^{d}\min(i\cdot u_k, j\cdot v_k)$ 至多由一段等差数列和一段常数列组成。 容易发现 $i$ 固定后 $\sum\limits_{j=c}^{d}\min(i\cdot u_k, j\cdot v_k)$ 至多由一段等差数列和一段常数列组成。
行 71: 行 73:
 那么我们枚举 $p_k$,再枚举 $i$ 即可。 那么我们枚举 $p_k$,再枚举 $i$ 即可。
 ===== F ===== ===== F =====
 +
 +将所有衣服排序,滑动窗口遍历排序后的序列,保证窗口内有m间不同时间的衣服,扫一遍对所有满足条件的状态求最小值
  
 ===== G ===== ===== G =====
 +
 +这个题很有趣,提示我们不要乱写 Simpson,不是什么时候收敛都好的。
 +
 +题意是给一个凸多边形,可以绕原点转。给一条直线,问随机转之后直线截凸多边形弦长大于 $L$ 的概率。
 +
 +容易发现我们可以把直线当成动的,凸包当成静的。重要的参数只有初始时原点到直线的距离,这个是决定直线轨迹的参数。
 +
 +容易发现每次只要确定两端的边就可以确定这个弦变动的范围。
 +
 +那么我们随机选个端点作为起点,然后扫一遍找到这个端点的弦对应的另一条边。把所有点对应的两个角度按凸包顺序分别装进两个数组里,扫的时候每次判断碰见的下一个端点属于哪一条边,然后就直接把边编号记一下,另开一个函数算这段角度区间对应的贡献。
 +
 +至于这个贡献怎么计算,赛场上第一个想到的是辛普森,然后放弃了单峰性质,事实证明这么干挺蠢的(
 +
 +这个直接如同题解所说,把它峰值找出来,再二分找到两个分界点,就直接可以求出贡献为 1 的区间长度了。
 +
  
 ===== H ===== ===== H =====
  
 ===== I ===== ===== I =====
 +
 +推算一下会发现,选取最小的一位数和剩余数组成的最小数字是最优的解
  
 ===== J ===== ===== J =====
行 88: 行 109:
 ===== K ===== ===== K =====
  
 +先求出开始追击的节点,只有对追的人遍历所有节点记录他到每个位置的时间,再对逃跑的人遍历,记录所有可以比追击的人先到的节点,对所有可行的时间去最大值
  
 ------------- -------------
行 95: 行 117:
 ptw: ptw:
  
 +  * 我决起而飞
 +
 +Gary:
  
 +  * 大概把会的都做了
 +  * 读题要仔细,最好两人读题
2020-2021/teams/mian/nowcoder_training/2020_multi-university_training_contest_9.1596896995.txt.gz · 最后更改: 2020/08/08 22:29 由 grapelemonade