zoukankan      html  css  js  c++  java
  • Facebook Hacker Cup 2020 Round 2 题解

    Problem A: Ca-pasta-ty
    题意:有(N)个位置,每个位置初始有(S_i)个人,要求使得每个位置人数在([X_i,X_i+Y_i])范围,每次可以将一个人从一个位置移动到另一个位置,求是否可行以及最少操作次数.
    题解:可行当且仅当(sum Xleqsum Sleqsum X+sum Y),操作次数为(summax(0,X-S)+summax(0,S-X-Y)).
    复杂度(O(N)).

    Problem B: Elimination
    题意:(N)个人能力分别为(1)(N).一共有(N-1)轮,每轮从剩下的人中等概率选取其中两个对决,输的人出局,能力较高的人获胜概率为(P).求每个人期望留下来的轮数.
    题解:记(dp_{i,j})为共(i)个人,能力第(j)小的人期望留下来的轮数.考虑每一轮五种情况:1.两个比(j)小的人对决;2.两个比(j)大的人对决;3.一个比(j)小,一个比(j)大的人对决;4.(j)和比(j)小的人对决;5.(j)和比(j)大的人对决,于是有.
    (dp_{i,j}=egin{cases}0,&i=j=1,\frac{2}{i(i-1)}(frac12(j-1)(j-2)dp_{i,j-1}+frac12(n-j)(n-j-1)dp_{i,j}+frac12(j-1)(n-j)(Pdp_{i,j-1}+(1-P)dp_{i,j-1}+(j-1)Pdp_{i,j-1}+(n-j)(1-P)dp_{i,j})+1,& ext{ohterwise}.end{cases}.)
    复杂度(O(N^2)).

    Problem C: Circular Circles
    题意:给定(N)(M),一个图由(N)个大小为(M)的环组成,并且相邻两个环间有一条边连接两个环上分别给定的点,共(O(NM+N))条边.每次修改一条边的权值,求最小生成树权值.
    题解:只有两种情况:1.去掉额外(N)条边权值最大的一条以及每个环中权值最大的一条边.2.分别去掉(N-1)个环中每个环权值最大的一条边以及剩下一个环中分别在两个连接点形成的两侧边中最大的(1)条边.使用multiset维护答案的复杂度是(O(NMlog M+Nlog N+Elog N+Elog M)).

    Problem D: Log Drivin' Hirin'
    题意:在一棵带边长的有根树上,每个节点有权(H).每次询问给定节点(X)和初始权(Y),从节点(X)向下移动到叶子,经过每条边的代价为权( imes)边长,每次到一个节点时可以将当前的(Y)替换成该节点的权(H).
    题解:记(dp_u)为从(u)出发初始权为(H_u)的答案,于是有:
    (dp_u=egin{cases}0,&u ext{ is a leaf,}\min{dp_v+ ext{dist}(u,v)H_u:v ext{ is in subtree of }u},& ext{ohterwise}.end{cases}).
    (D_u)为根到(u)的距离,容易发现(dp_u=dp_v+H_uD_v-H_uD_u),可以使用凸包优化.使用启发式合并以及将询问离线可以使得复杂度为(O(Nlog^2N+Mlog N)).

  • 相关阅读:
    SpringBoot学习:整合shiro(验证码功能和登录次数限制功能)
    SpringBoot学习:整合shiro(rememberMe记住我功能)
    SpringBoot学习:整合shiro(身份认证和权限认证),使用EhCache缓存
    SpringBoot学习:整合Redis
    SpringBoot学习:获取yml和properties配置文件的内容
    SpringBoot学习:使用spring-boot-devtools进行热部署
    SpringBoot学习:添加JSP支持
    SpringBoot学习:整合MyBatis,使用Druid连接池
    DL杂谈
    YOLO3训练widerface数据集
  • 原文地址:https://www.cnblogs.com/Heltion/p/13585621.html
Copyright © 2011-2022 走看看