NOI2014题解
起床困难综合症(BZOJ 3668)
送分题,直接从高位向低位贪心。
魔法森林(BZOJ 3669)
一个容易想到的办法就是枚举A的最大值,以B作为权值求最小生成树。暴力的话要T的。如果从小到大枚举A的最大值,每次仅会添加一些新的边,所以自然想到用LCT维护。本来还可以考一下LCT的,结果考场上A此题的人多半都写的各式各样的黑暗算法。真不知道出题人是怎么出的数据。
动物园(BZOJ 3670)
题目里面就把题解都说明白了,要用KMP。求了next数组后,以next为边建成一棵树,然后就很好做了,只需要知道到根的链上有多少标号不超过当前点标号一半的点。由于是单调的,直接二分就好了。注意不能暴力移动父节点一半的位置来得到新的位置,这样最坏不是O(n)的,虽然随机数据跑得飞快(随机数据随便怎么暴力都跑得飞快)。很容易构造数据卡成O(n^2),像这样就行了:前面一串a,中间一串b,末尾又一串a。不过官方数据似乎过弱,有人这么写当场就A了。
随机数生成器(BZOJ 3671)
很逗的题。只要不被随机忽悠,这题就成了大水题。贪心从小到大填,能填就填。每一行可填的位置一定时刻有个上下界,开两个数组暴力维护就行了。判断能否填是O(1)的,填入是O(n)的,而填入的次数是O(n)的,所以总复杂度是O(n^2)了。整个考的就是数组和for循环,5分钟之内就能写出来。卡内存?能用short的用short就行了。不过考场上的我更逗,写了个线段树维护上下界,判断和填入都是O(lgn)的,而且当时居然还开了n^2级别的线段树节点,我都不知道自己当时怎么想的!
购票(BZOJ 3672)
这题应当是本次NOI中最有价值的一道题了。考场上只搞出了t=0或1的数据,拿了70分。当时想的是用可持久化Treap维护每个节点到根节点的下凸壳,但是只要有距离限制就直接跪了,没法将凸壳拆一段下来。后来研究了半天,才发现分治大法好。
考虑链上带距离限制该怎么做(t=2)。cdq分治就行了。下面想怎么转换到树上。
点分治的时候,我们抓个重心出来,将重心去掉后树就变成了几棵树。其中有包含重心父节点的那棵。这棵树中的节点显然不会从其他树中的节点转移过来,所以可以先处理这棵树。然后我们处理这棵树对另外的树的贡献,这和cdq分治就很像了。类似地做就是了。需要注意的是树中所有以重心为“端点”的转移都应该被处理,被打上标记后重心就不会被考虑了。
NOI2014题解的更多相关文章
- NOI2014 部分题解
感觉NOI2014的一些题目也是比较好做的... 但是笔者往往有思路却没有想清楚就开始搞了...这样还是不太好.. Day1 T1 起床困难综合征 (我感觉这题应该叫综合征不是综合症...) a ...
- NOI2014魔法森林题解报告
题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,-,n,边标号为 1,2,3,-, ...
- 【题解】洛谷P2375 [NOI2014] 动物园(KMP)
洛谷P2375:https://www.luogu.org/problemnew/show/P2375 思路 这道题可以说是完全刷新了本蒟蒻对KMP的理解 感觉对next数组的理解上升到一个新的高度 ...
- BZOJ3669:[NOI2014]魔法森林——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3669 https://www.luogu.org/problemnew/show/P2387 为了得 ...
- 【KMP】洛谷P2375 [NOI2014]动物园 题解
一开始的方向应该对了,但是没有想到合理的优化还是没写出来…… 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己 ...
- 【题解】 UOJ #2. 【NOI2014】起床困难综合症
传送门 不是很简单? 考虑一下这个数的二进制位是什么,要么是1,要么是0. 然后怎么做? 因为一开始可以选0~m的数,那么二进制为中全是0的肯定是可以选的. 接着考虑全是1的怎么选? 如果全都是1的而 ...
- BZOJ3670 & 洛谷2375 & UOJ5:[NOI2014]动物园——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3670 https://www.luogu.org/problemnew/show/P2375#su ...
- BZOJ3668:[NOI2014]起床困难综合症——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3668 https://www.luogu.org/problemnew/show/P2114 21世 ...
- 【题解】NOI2014购票
实际上是一个不完美算法……cogs上面A不掉(爆栈啦).感谢机房大佬PPY的指点,现在也写出来供大家参考参考,理解起来应该是比较简单的一种. 我们首先get出斜率优化方程: \(dp[v] = dis ...
随机推荐
- 指针-->字符串
1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符. 如在代码中写"abc",那么编译器帮你存储的是"abc\0". 2. "ab ...
- Linux 下安装包制作
一 Linux安装文件 Linux常见的安装为tar,zip,gz,rpm,deb,bin等.我们可以简单的分为三类, 第一:打包或压缩文件tar,zip,gz等,一般解压后即可,或者解压后运行sh文 ...
- Android中使用ListView绘制自定义表格(2)
上回再写了<Android中使用ListView绘制自定义表格>后,很多人留言代码不全和没有数据样例.但因为项目原因,没法把源码全部贴上来.近两天,抽空简化了一下,做了一个例子. 效果图如 ...
- linux配置时间同步
目标环境,5台linux centos 6.3, 一台作为NTPD服务与外部公共NTP服务同步时间,同时作为内网的NTPD服务器,其他机器与这台服务做时间同步. 服务器IP 角色 说明 同步方式 ...
- 深搜最基础题---全排列And组合数
这个是理解标记和取消标记,用一个vis数组来标记 全排列代码: #include <stdio.h> ]; ]; int n; void dfs(int step)//step是当前已经进 ...
- 接入淘宝SDK(OneSDK)和支付宝SDK(AlipaySDK)出现 duplicate symbols for architecture i386
起初我在我的项目中先接入了AlipaySDK,没有出现什么问题,之后想要接入淘宝SDK之后,就出现了duplicate symbols for architecture i386的错误 经过一段时间排 ...
- php魔法常量
有七个魔术常量它们的值随着它们在代码中的位置改变而改变.例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定.这些特殊的常量不区分大小写,如下: 名称 说明 __LINE__ 文件中的当前行号 ...
- 持续集成环境(Gitlab+jenkins+shell)
一.搭建gitlab ps:不是这方面的专家,主要还是一键式安装为主. 1.进入官网:https://about.gitlab.com/gitlab-com/ 2.选择自己的操作系统:我这边选择的ub ...
- Caused by: java.lang.NullPointerException, java.lang.reflect.InvocationTargetExc
java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native M ...
- HDU 4606 Occupy Cities (计算几何+最短路+最小路径覆盖)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题目:给出n个城市需要去占领,有m条线段是障碍物, ...