• CSP 模拟26


    A:字符交换

    可以发现最后的答案只与一种字符有关
    枚举最后所有点都聚到了哪个中间点
    枚举之后贪心的向中间去移动左右两边的点
    这样可以求出k次移动最多使当前位置出现多少个连续字符
    每次取max就是答案




    B:平方数

    正解可以做到(n^{frac{1}{3}})筛平方因子 %%lin4xu
    首先平方数一定各个质因子的次幂都是偶数次
    那么对于(p1^{k1}*p2^{k2}*...)(k1,k2为奇数)
    这个数和(p1*p2*...)是等效的
    所以直接把所有数都化成(p1*p2*...)的形式
    然后统计相同的个数就可以了
    但是直接把一个数的平方因子都筛掉是根号级别的
    所以考虑优化
    一个数一定可以表示为(x^2*y)的形式 其中y是个质因子
    考虑如何优化筛(x^2)
    发现对于一个数 (x,y)不可能同时大于1e3
    那么可以考虑只筛1e3以内的质数
    如果质数有奇数个就记录下来
    定为cur
    这样如果筛完之后 剩下的数如果是个平方数
    那么最后一定和cur是等效的
    如果筛完之后 剩下的数不是个平方数
    那么它一定也不含有平方项了
    因为如果含有平方项 一定是大于1e3的因子的平方
    而由于不是个平方数 所以一定也有一个大于1e3的质因子
    乘起来显然大于1e9
    所以最后一定就是剩下的数乘以cur
    然后就很好处理了 随便开桶 或者离散化 或者写哈希表都能过




    C:多维网络

    80pts 显然可以用傻逼容斥随便写
    考虑容斥复杂度瓶颈: 一条不合法路径被重复计算了多次
    那么考虑唯一表示一条不合法的路径 并且不重不漏
    可以用第一次经过的坏点是哪个来表示一条路径
    而且显然不会重和漏
    假定第一次经过的坏点是i的方案数是f[i]
    那么把终点也看成坏点 也可以一样求出终点的答案
    考虑怎么求第一次经过的坏点是i的方案数
    显然很好求
    用所有到i的方案数 减去第一次经过的坏点是j的方案数*j到i的方案数就可以了




    D:Lesson5!

    咕咕咕

    如初见 与初见
  • 相关阅读:
    Linux部署Apache ActiveMQ 5.14.1
    数据库iops的理解
    IOPS性能指标
    APK反编译工具与使用方法
    App Inspector-iOS真机
    idea 项目maven无法拉取jar
    adb shell常用命令
    ADB 在APP自动化测试应用汇总
    java调用shell命令并获取执行结果的示例
    分享几个特别实用的网站,分分钟钟提升个人技能
  • 原文地址:https://www.cnblogs.com/HISKrrr/p/13902320.html
Copyright © 2020-2023  润新知