NOI2015

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+上下界网络流。还没有改过就不说了...

时间: 2024-10-10 09:17:03

NOI2015的相关文章

BZOJ 4196: [Noi2015]软件包管理器

二次联通门 : BZOJ 4196: [Noi2015]软件包管理器 /* BZOJ 4196: [Noi2015]软件包管理器 树链剖分 树链剖分 , 用线段树维护链上的和与子树的和 对于1操作, 每次预先查询待修改点x点的深度 后查询1到x这条链上有多少已安装的, 然后上面的值减下面的值 对于2操作,每次查询以x为根的子树的大小 修改整颗子树即可.. 说白了其实就是板子题 */ #include <cstdio> #define Max 500090 inline int min (int

【NOI2015】软件包管理器

Description 你决定设计你自己的软件包管理器.不可避免的,你要解决软件包之间的依赖关系.如果A依赖B,那么安装A之前需安装B,卸载B之前须卸载A.0号软件包不依赖任何软件包.依赖关系不存在环(包括自环). 你的任务是,求出每次安装.删除操作会改变多少个包的状态. 安装一个已安装的软件包,或者卸载一个未安装的软件包,都不会改变任何软件包的安装状态,即在此情况下,改变安装状态的软件包数为0 每次操作不仅需要计算安装软件包数,还作为操作影响后来的安装/删除 Input 第一行一个整数n,表示

bzoj4195[Noi2015]程序自动分析

bzoj4195[Noi2015]程序自动分析 题意: t组数据,每组n个给出两个变量是相等还是不等的约束条件,要求判断是否能满足.n≤1000000,变量数量≤109 题解: 先离散化,然后只处理相等条件用并查集维护“相等集合”,接着对每个不相等条件判断是否在一个集合,是的话则说明不满足. 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <queue&g

【NOI2015】程序自动分析

[Noi2015]程序自动分析 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2051  Solved: 967[Submit][Status][Discuss] Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上

【BZOJ 4196】[Noi2015]软件包管理器

[Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 331  Solved: 199[Submit][Status][Discuss] Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置.Debian/Ubunt

【BZOJ 4195】[Noi2015]程序自动分析

[Noi2015]程序自动分析 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 630  Solved: 270[Submit][Status][Discuss] Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述

NOI2015考试小结

这次NOI2015有幸获得金牌考进了国家集训队,意味着我的OI退役时间既省选之后有延迟了好几个月,又有了新的目标吧. 先说一下考试之外的感受吧,学军宿舍很牛X,接待NOIers而不提供插座,唯一可以用的空调插座有因为“安全原因”不允许使用(拜托会不会比一比电脑,空调哪个功率大啊).食堂没有冬令营的好吃,也许是当时压力比较大吧.据不完全统计,光是四川选手,为学军周边咖啡馆贡献的营业额就高达数千RMB,真是hehe了. 考前,一年前于神在NOI开始前看了“三傻大闹宝莱坞”,于是我也在考前看了“三傻大

noi2015 day1 T2软件包管理器

noi2015 软件包管理器 Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置.Debian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的软件包管理器. 你决定设计你自己的软件包管理器.不可避免地,你要解决软件包

品酒大会[NOI2015]

品酒大会[NOI2015] P2330 - [NOI2015]品酒大会 Description 一年一度的"幻影阁夏日品酒大会"隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发"首席品酒家"和"首席猎手"两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainbow 调制了 n 杯鸡尾酒.这 n 杯鸡尾酒排成一行,其中第i杯酒(1≤i≤n)被贴上了一个标签 si,每个标签都是 26 个小写英文字母之一.设Str(l,r)表示

【BZOJ4197】[Noi2015]寿司晚宴 状压DP+分解质因数

[BZOJ4197][Noi2015]寿司晚宴 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 1,2,3,…,n−1,其中第 i 种寿司的美味度为 i+1 (即寿司的美味度为从 2 到 n). 现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小 G 品尝的寿司种类中存在一种美味度为 x