zoukankan      html  css  js  c++  java
  • CSP 模拟17

    A:简单的区间

    如题 简单
    但是我考试的时候脑瘫不会
    cdq直接搞就完了
    每次处理跨过中点的贡献
    记录左区间和 右区间和
    Mx在左边右边分别讨论
    开一个桶来记录某个值出现过多少次
    模k可以通过推式子消除 假设此时左指针到i 右指针到j
    (sum[i] + sum[j] - Mx) % k = 0
    sum[j] % k = (Mx - sum[i]) % k
    所以桶里放sum[j]模k之后的值 然后每次查询(Mx - sum[i]) % k 一共出现过几次
    然后就可以直接在桶里找答案了




    B:简单的玄学

    首先答案肯定是 (cfrac{A^{m}_{2^n}}{2^{nm}})
    不会的建议重学排列组合
    然后考虑怎么约分
    首先肯定只可以约掉2
    所以就是求(A^{m}_{2^n})
    (A^{m}_{2^{n-1}})
    这个东西中2的因子个数 和(m-1)!是一样多的

    证明:也就是证(2^n) - (a) 中的2因子与 a中的一样多
    设a = (2^k) * x
    则原式可以化为(2^k) * ((2^{n-k}) - x)
    而后面的柿子一定不含2的因子
    所以含有就是(2^k) 即a中含有的2的因子数

    而k!中含有2的因子数是个挺经典的问题(我怎么不知道

    证明很简单 随便一手模就理解了
    约分之后直接取模就能做了





    C:简单的填数

    一些性质是很显然的
    所以大模拟就好了
    贪心




    D:聪聪和可可

    本来以为是个期望dp
    记忆化优化暴力
    预处理出来 聪聪在x 可可在y 位置是 聪聪下一步会去哪里就好了
    搜索的时候记忆化一下

  • 相关阅读:
    南大算法设计与分析课程课后习题(1)
    南大算法设计与分析课程复习笔记(1) L1
    LeetCode-59. Spiral Matrix II
    LeetCode-58. Length of Last Word
    LeetCode-56. Merge Intervals
    LeetCode-55. Jump Game
    linux内核源码目录结构分析
    LeetCode-54. Spiral Matrix
    如何保证数据一致性
    CountDownLatch的简单使用
  • 原文地址:https://www.cnblogs.com/2004-08-20/p/13823398.html
Copyright © 2011-2022 走看看