博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NOI2015
阅读量:5293 次
发布时间:2019-06-14

本文共 1529 字,大约阅读时间需要 5 分钟。

Day1:

  程序自动分析:

    并查集裸题,离散化一下就好。

  软件包管理器:

    树链剖分入门题。

  寿司晚宴:

    2到n共n-1个数,两个人各选一个数集(可以为空集),设为A,B,要满足∀x∈A,y∈B,gcd(x,y)=1,问选择方案数。

    我们发现,要满足这样的条件,选了一个数就相当于选择了它所有的质因子,而两个集合不能拥有相同的质因子。

    注意到两个性质:

      对于一个正整数x,大于等于√x的质因子只有一个,暂且叫做大质因子。

      数据范围中n≤500,小于等于√500的质数只有{2,3,5,7,11,13,17,19}共8个。

    先不考虑大质因子,因为小质因子只有八种,所以我们可以预处理每个数x的质因子集合prime[x],进行经典的状态压缩动态规划:

      设f[state_a][state_b]代表A集合选择质因子的情况是state_a,B集合选择质因子的情况是state_b的方案数。

      初始化f[0][0]=1。

      枚举每个数x,枚举state_a,state_b,满足state_a&state_b=0,

        如果prime[x]&state_b=0,f[state_a|prime[x]][state_b]+=f[state_a][state_b]。

        如果prime[x]&state_a=0,f[state_a][state_b|prime[x]]+=f[state_a][state_b]。

      最后答案就是∑f[state_a][state_b],满足state_a&state_b=0。

    可是要考虑大质因子怎么办呢?我们将拥有相同大质因子的数放在一起考虑,因为他们只能出现在同一个集合里(或者不出现)。

      g[0(或1)][state_a][state_b]代表将这些数放进集合A(或B),A,B质因子状态分别为state_a,state_b的方案数。

      在处理当前大质因子之前,初始化g[0][state_a][state_b]=g[1][state_a][state_b]=f[state_a][state_b]。

      枚举所有拥有当前处理大质因子的数x,枚举state_a,state_b,满足state_a&state_b=0,

        如果prime[x]&state_b=0,g[0][state_a|prime[x]][state_b]+=g[0][state_a][state_b]。

        如果prime[x]&state_a=0,g[1][state_a][state_b|prime[x]]+=g[1][state_a][state_b]。

      将这些数处理完以后,令f[state_a][state_b]=g[0][state_a][state_b]+g[1][state_a][state_b]-f[state_a][state_b]。

      为什么要减去呢?因为不放入任何一个数的情况在g[0]和g[1]都考虑了。

Day2:

  荷马史诗:k叉哈夫曼树裸题。

  品酒大会:后缀数组。用到了将height数组从大到小合并的方法。详见我之前的博客:http://www.cnblogs.com/iamCYY/p/4727309.html

  小园丁和老司机:DP+上下界网络流。还没有改过就不说了...

转载于:https://www.cnblogs.com/iamCYY/p/5013437.html

你可能感兴趣的文章
Red Hat安全性指南
查看>>
《构建之法》第五章自习感想与知识点
查看>>
[Swift]LeetCode741. 摘樱桃 | Cherry Pickup
查看>>
[Xcode 实际操作]六、媒体与动画-(8)使用CATransaction Reveal制作渐显动画
查看>>
[Xcode 实际操作]八、网络与多线程-(5)使用UIApplication对象发送邮件
查看>>
bzoj 1093: [ZJOI2007]最大半连通子图
查看>>
springCloud的zuul基于config和github实现热更新
查看>>
python学习笔记(pip下载安装)
查看>>
CSS
查看>>
shell 管道和tee使用时获取前面命令返回值
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
[TypeScript] Understanding Generics with RxJS
查看>>
一、基础篇--1.3进程和线程-基本概念
查看>>
Linux kernel ‘ioapic_read_indirect’函数拒绝服务漏洞
查看>>
WordPress GRAND FlAGallery插件“s”跨站脚本漏洞
查看>>
zoj3690 Choosing number
查看>>
阳宇宸:网站开发的常用语言
查看>>
CF 600 E 启发式合并
查看>>
保险配置
查看>>