zoukankan      html  css  js  c++  java
  • nowcoder提高集训营第5场

    (比赛链接)[https://www.nowcoder.com/acm/contest/177#question]

    T1

    (题目链接)[https://www.nowcoder.com/acm/contest/177/A]

    首先考虑二维前缀和
    [l1, r1], [l2, r2]的解
    即ans([0, r1], [0, r2]) - ans([0, l1 - 1], [0, r2]) - ans([0, l2 - 1], [0, r1]) + ans([0, l1 - 1], [0, l2 - 1])

    对于最简单的情况
    即 r1 = r2 = 2^n - 1(所有的都是闭区间)
    组成一个数有2^n - 1中方案
    那么只需统计有多少个m的倍数小于2^n

    如果r1 = 2^k - 1, r2 = 2^n - 1
    组成一个数一共有2^k - 1种方案
    那么只需统计有多少个m的倍数小于2^k

    对于更普遍的情况 比如r1 = 1010
    我们可以把r1 + 1即1011拆成一堆比它小的数
    0*** 100* 1010
    这样就涵盖了所有小于等于r1的情况
    打星号处可以随便填,一共可以分成log种类型
    这样的话就有log(r1)组和log(r2)组相互匹配
    对于其中一组 a1(2^p) +(p位的随机),a2(2^q) + (q位的随机)
    那么它们可以构成的数就是(a1(2^p)) & (a2(2^q)) + (p位随机)
    然后判(a1(2^p)) & (a2(2q))到(a1*(2p)) & (a2*(2^q)) + (2^(max(p, q) + 1) - 1)里面有多少个m的倍数就可以了

    注意随时取模!模 *不模 = 爆炸

    T2

    (题目链接)[https://www.nowcoder.com/acm/contest/177/B]

    对与这样一张图 设一个边被经过的次数为t[] 我们可以证明如下点
    1.所有t[i] > 1的边一定在MST上
    2.所有t[i] <= 2

    结论一是来自这道题特du别liu的边权设定
    使致一个环上最大那条边的边权 大于环上其他边的边权和

    对于结论二的证明
    对于一条被经过k次的边 就像相当于在这两点间连k条边
    然后走的是个欧拉回路 而欧拉回路上每个点的度数为偶数
    要是一条边被经过两次以上 比如3次 那么就和经过一次没区别
    同理 偶数次和经过2次相同

    对于图上奇偶 我们的日tao常lu处理方法就是 抑或
    我们建一棵MST 统计好每一个点的度数 根据奇偶性染色
    然后从叶子到根调节每条边经过次数 使得每个点的度数为偶数

    注意if(vv != fa)dfs(); 哒哒哒。。。
    后面的东西是会执行的! 需要continue掉!

    T3

    (题目链接)[https://www.nowcoder.com/acm/contest/177/C]

    把s当作是t加入一些0、1形成的
    t由c个0,d个1组成
    那么就有c + d + 1个空隙可以填数

    但是这样会重哦

    那么 对于一个被构成的序列u 我们认为他是可以被记录的
    当且仅当原来的s在u中是最靠前的一个为s的子串
    比如 在101的第一个1和0之间加一个0 所得串就不可以被记录
    因为原来的s在u中的位置是{1, 3, 4}而{1, 2, 4}也是与s相同的子串 并且比原来的s靠前
    但在第二个0和1之间加一个0 所得串可以被记录

    所以我们发现 在1前面不能加1 在0前面不能加0 但在最后可以随便加
    所以枚举在最后加了x个0,y个1
    即为在d+1个空里插a-c-x个0, 在c+1个空里插b-d-y个1(最后一个空两个都能放)
    之后就是个插xiao板ao了
    对于每个x和y 共可以构成C(a-c-x+d-1, d-1)C(b-d-y+c-1, c-1)C(x+y, x)个串
    对于每组(x, y)求和即为答案

  • 相关阅读:
    C语言:线程同步之信号量(sem_init,sem_post,sem_wait)
    SVN使用 -work
    atomic c++ y原子变量 替换锁代码
    原子变量
    perf
    内存泄露检测工具对比
    valgrind ----直接使用参数
    堆内存分析---特别棒
    调不尽的内存泄漏,用不完的 Valgrind(转)
    静态库动态库制作方法
  • 原文地址:https://www.cnblogs.com/hjmmm/p/9797386.html
Copyright © 2011-2022 走看看