• csp-s模拟84


    T1:
      很容易想到直接开个堆,每次把最小的数取出,再分别乘上大于等于该数最大质因子的所有质数,把这些数再塞回堆里
      发现TLE了……
      需要一个(O(n))的算法,考虑在题目中寻找单调性(蚯蚓???)
      设第i次取出的数为(x_i),那么对于任意(j<i)(x_j<x_i),那么(x_j*p_k<x_i*p_k)
      发现对于乘以同一个质数所产生的新数是单调的,所以可以用B个队列存储,每次比较所有队头元素
      复杂度从(O(nlogn))变为(O(nB))(???)
     
    T2:
      毒瘤题
      考虑设计状态(f_{s,t})表示已经有的质因数集合是s,已经有的在不同数中出现的质因数对集合为t
      发现s的大小是(2^6),t的大小是(2^{(^6_2)+6}),发现存不下
      但考虑定义会发现有很多状态是不合法的,所以可以记忆化搜索或用hash表存状态
      具体转移可以枚举新加入的数所包含的质因数集合news,转移需满足该集合内出现的数对集合不能与原状态的t有交集
      若可以转移,那么新状态的(s'=s|news),(t'=t|f_{s,news})
      (其中(f_{i,j})表示i集合与j集合所产生的新数对)
      新状态的方案数即为原方案数乘以news的质因子集合的指数之积
    T3:
      考虑正确的很多,所以可以随机化,随机选两组,然后计算出各个参数后check正确的有多少个
      麻烦的在于解方程,考试时是手解的,其实可以用高斯消元

  • 相关阅读:
    linux消息队列相关操作
    linux下删除3分钟之前指定文件夹下的指定类型文件
    centos6.5安装gmime-2.6
    centos6.5安装filezilla
    posix 正则库程序
    nginx正向vs反向代理
    AbstractQueuedSynchronizer 原理分析
    JAVA NIO详解
    java NIO原理及实例
    Thread类详解
  • 原文地址:https://www.cnblogs.com/Gkeng/p/11834874.html
Copyright © 2020-2023  润新知