• Codeforces Round #372 (Div. 2)


    Codeforces Round #372 (Div. 2)

    C. Plus and Square Root

    题意

    • 一个游戏中,有一个数字(x),当前游戏等级为(k),有两种操作:
    1. '+'按钮:使得(x=x+k)
    2. '√'按钮:使得(x=sqrt{x}),此时(x)必须是平方数,游戏等级加1,即(k=k+1),且(sqrt{x})(k+1)的倍数。
    • 游戏开始时,(x=2,k=1),输出(n(n le 10^5))个数,表示每个等级对应的(frac{x}{k})值(就是倍数),并且输出的值不超过(10^{18})
    • 任意时刻,(x)必须是(k)的倍数。

    Additionally, after each move, if ZS the Coder is at level k, and the number on the screen is m, then m must be a multiple of k.

    思路

    • 设$$x=kp=(k+1)2q2$$
    • 则$$p=frac{(k+1)2q2}{k}$$
      如果令(q=k),得$$p=k(k+1)^2$$
      这样的倍数显然满足题意。

    代码


    D. Complete The Graph

    题意

    • 一张图有(n(n le 10^3))个点,(m(m le 10^4))条边。
    • 每条边有权值(均为正整数),当边权为0时,表示需要重新赋值,使得(s o t)的最短路径长为(L(L le 10^9))
    • 若存在一种方案,输出"YES"和所有边的边权;否则输出"NO"。

    思路

    • 是否存在可以通过极端情况判断,即将所有0边赋值为1以及全赋值为L。
    • 若存在,显然可以二分出权值(x),使得所有0边均赋值为(x)时,(s o t)的最短路刚好大于或等于(L)
    • 此时我们可以通过将某些边从(x)变成(x-1)使得最短路变成(L),这样的时间复杂度为(O(NMlog{N})),是可以解决的。
    • 题解提到了一种复杂度更优的做法,大概思想是二分找到第一条0边,使得最短路小于(L),找到后再二分该边的权值,使得最短路刚好为(L)

    代码


    E. Digit Tree

    题意

    • 给一棵树,有(n(n le 10^5))个点。
    • 边有权值(w_i(1 le w_i le 9))
    • 求路径((u,v))使得(u o v)路径构成的大数模(m)为0,其中(gcd(10, m) = 1)

    思路

    • 点分治
    • 根据欧拉定理$$x^{phi{(m)}}equiv 1(mod verb' 'm), gcd(x, m)=1$$可以求出10的逆元。

    代码

  • 相关阅读:
    dojo/Deferred类和dojo/promise类的使用
    dojo中类的继承
    c# 委托
    使用Spring Data JPA报错:javax.persistence.TransactionRequiredException: Executing an update/delete query
    服务器重启后,Docker安装的mysql怎么重启?
    IDEA开启Run Dashboard的配置
    Java中List集合去重的几种方式
    关闭迅雷更新到新版本的提示
    XMind8 破解激活教程(win系统)
    连接Oracle报错 ORA-12638: 身份证明检索失败
  • 原文地址:https://www.cnblogs.com/mcginn/p/5891572.html
Copyright © 2020-2023  润新知