传送门

写在前面:为了保护正睿题目版权,这里不放题面,只写题解。


  • A

\(21pts:\)

随便枚举,随便爆搜就好了。

\(65pts:\)

比较显然的dp,设\(f_{i,j,k}\)表示在子树\(i\)中,两个赞助商分别选了\(j,k\)个的最优解。

对枚举的上下界卡的紧一点,按照树上背包的聚合分析,复杂度是\(O(n^3)\)的,可以通过。

\(100pts:\)

观察数据范围可以发现,这题的子树大小限制可以抽象成一个经典的网络流模型。

跑一个最大费用流就好了。

我写丑了,每个点拆了\(5\)个点出来,然而还是跑的飞快。


  • B

\(22pts:\)

枚举全排列/状压。

\(100pts:\)

这题非正解不太好写,直接上正解吧。

先考虑什么时候无解。随便弄一棵生成树出来,如果\(\sum a_i<\sum w_i\),显然无解。

现在我们要证明,只要\(\sum a_i \geq \sum w_i\),一定有解。

考虑我们缩点缩到一个局面,此时所有边都无法缩起来。此时对于每条边\((u_i,v_i,w_i)\),都有\(w_i>a_{u_i}+a_{v_i}\)。

将所有不等式加起来,我们得到\(\sum w_i > \sum a_i\cdot dgr_i\geq \sum a_i\),显然与我们之前的假设矛盾。

所以,我们证明了对于一棵生成树,只要\(\sum a_i \geq \sum w_i\),一定有解。那么显然取最小生成树最优。

那么我们考虑对一个满足\(\sum a_i \geq \sum w_i\)的树,如何构造出一种方案。

首先设\(s_i=a_i + \sum_{j\in subtree_i} a_j-w_{(j,fa_j)}\),即\(i\)点子树中所有点权和与边权和之差。

对每个点\(i\),我们算出它的每个儿子\(j\)的\(s_j-w_{(j,i)}\),设这个值为\(v_j\),按照\(v_j\)把它的儿子从大到小排序。(\(v_j\)的实际意义在于,将子树\(j\)的所有点连接到父亲上之后,父亲点权的增量)

对于一个儿子\(j\),如果\(s_j\geq 0\),则先递归处理这个儿子,再连接它与父亲之间的边。

否则,这个儿子无法自己处理子树中的边,需要先连接父亲与它的边,再递归处理子树,并将父亲剩余的权值传递下去。

正确性存疑的地方只有连接某个儿子时,由于减去了某条边的权值,权值和可能\(<0\)。

发现对于\(v_i\geq 0\)的点,连接后一定会使父亲的剩余权值增大,不会影响。

否则,此后的点\(v_i\)均为负。由于最后父亲剩余权值\(\geq 0\),则在这个不断减小的过程中也不会\(<0\)。

实现时,发现一个儿子的影响只和\(v_i\)的正负性有关,因此并不需要排序,只需扫两遍,先取\(v_i\geq 0\)的儿子,再取\(v_i<0\)的儿子即可。

复杂度\(O(n\log n)\),瓶颈在于求mst时的排序。


  • C

\(6pts:\)

显然质数的答案一定是\(0\)。

\(34pts:\)

爆搜+打表,可以过掉\(n\leq 100\)。

\(51pts:\)

看到出题人完全平方,就很容易想到质因数异或线性基。

用bitset维护每个质数,复杂度\(O(\frac{n^4}{64\ln ^2n})\),实现优秀可过\(n\leq 1000\)。

\(100pts:\)

设\(g(x)\)为\(x\)向左找到的最近的数,即与\(f(x)\)意义类似,只是方向相反的函数。

发现\(f(x)\)与\(g(x)\)互为反函数。

证明:假设从\(f(x)\)向左找到的第一个位置为\(y>x\),则我们把两次找到的序列取对称差(即异或),则得到的新序列也是完全平方数,发现由于\(f(x)\)在两个序列里都出现了,且\(x\)只出现了一次,所以可以找到一个左端点为\(x\),右端点\(<f(x)\)的序列,与\(f(x)\)是向右找到最近的数矛盾。

也就是说,每个合数都有且仅有一个互不相同的解,且答案为\(g(x)\)。

考虑从\(x\)往前扫,每次加入一个\(l\),看是否线性无关即可。复杂度\(O(\frac{n^3}{64\ln ^2n})\),好像没什么用。

发现超过\(\sqrt n\)的质数只会有一个,在线性基上特判一下即可。

不超过\(1000\)的质数只有\(168\)个,复杂度\(O(\frac{168^2\times n}{128})\),由于对于实际上跑不满(比如答案不会超过\(\frac n2\)),所以可过。

ZROI 19.08.05模拟赛的更多相关文章

  1. ZROI 19.08.07模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "正睿从来没有保证,模拟赛的题目必须原创." "文案不是我写的,有问题找喵老师去."--蔡老师 ...

  2. ZROI 19.08.09模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. A \(70pts:\) 维护一个栈,从一侧向另一侧扫描,如果新加入的元素与当前栈顶相同,则出栈,否则进栈.显然一个子串是括号序列,当 ...

  3. ZROI 19.08.06模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. 今天正睿又倒闭了,从删库到跑路. 天祺鸽鸽txdy! A "不要像个小学生一样一分钟就上来问东西."--蔡老板 虽 ...

  4. ZROI 19.08.12模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "我发现问题的根源是大家都不会前缀和."--敦爷 A 敦爷spj写错了,差点把蒟蒻swk送走 \(50pts:\) ...

  5. ZROI 19.08.11模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. dlstql,wsl A \(10pts:\) \(a=100,T=100\),对每个排列构造一个反的,一步到位即可. \(20pts ...

  6. ZROI 19.08.10模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. A \(20pts:\) 枚举操作序列然后暴力跑,复杂度\(O(6^n)\). \([50,80]pts:\) 枚举改成dfs,每层操 ...

  7. ZROI 19.08.04模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "这应该是正睿OI历史上第一次差评破百的比赛." "这说明来正睿集训的人越来越多了." &qu ...

  8. ZROI 19.08.08模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. 首先恭喜swk今天翻车! "小心大样例演你."--天祺鸽鸽 果然swk今天被大样例演死了,天祺鸽鸽诚不欺我! A ...

  9. ZROI 19.08.02 杂题选讲

    给出\(n\)个数,用最少的\(2^k\)或\(-2^{k}\),使得能拼出所有数,输出方案.\(n,|a_i|\leq 10^5\). 显然一个绝对值最多选一次.这个性质非常强. 如果所有都是偶数, ...

随机推荐

  1. CentOS7 下SaltStack部署

    一,概念SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack基于Python语言实现,结合 ...

  2. leveldb Arena

    背景我们都知道,对于一个高性能的服务器端程序来说,内存的使用非常重要.C++提供了new/delete来管理内存的申请和释放,但是对于小对象来说,直接使用new/delete代价比较大,要付出额外的空 ...

  3. poj2773(欧基里德算法 或 二分+容斥)

    题目链接:https://vjudge.net/problem/POJ-2773 题意:给定m,k,求与m互质的第k个数. 思路一:利用gcd(a,b)=gcd(b*t+a,b)知道,与m互质的数是以 ...

  4. springboot - 应用实践(1)认识springboot

    1.为什么要推出springboot springboot设计的目的是用来简化新spring应用的初始搭建以及开发过程.springboot遵循“约定优于配置”原则. 2.springboot默认的配 ...

  5. 并发之AQS原理(二) CLH队列与Node解析

    并发之AQS原理(二) CLH队列与Node解析 1.CLH队列与Node节点 就像通常医院看病排队一样,医生一次能看的病人数量有限,那么超出医生看病速度之外的病人就要排队. 一条队列是队列中每一个人 ...

  6. 【挣扎失败】2019CSP-S 游记

    妈耶…… 今年是作为高中生参赛的第一年……然而…… 心痛 洛谷评分,一橙一蓝两紫两黑 我个菜鸡瑟瑟发抖 在考完后三天的信息课码的,刚写没几个字就要下课了 抽空把这个写完

  7. springboot2.0处理自定义异常始终返回json

    1. 编写自定义异常类 package cn.jfjb.crud.exception; /** * @author john * @date 2019/11/24 - 9:48 */ public c ...

  8. python简介与简单入门

    1.计算机基础 计算机组成: 输入输出设备内. 存储器 .cpu .电源 .显卡 中央处理器(cpu) 处理各种数据 相当于人的大脑 内存 存储数据 相当于临时记忆 硬盘 存储数据 相当于人的永久记忆 ...

  9. python-day13(正式学习)

    闭包函数 闭包 闭包:闭是封闭(函数内部函数),包是包含(该内部函数对外部作用域而非全局作用域的变量的引用).闭包指的是:函数内部函数对外部作用域而非全局作用域的引用. 额...这里提示一下闭包!=自 ...

  10. SparkML之推荐算法ALS

    参考: SparkML之推荐算法(一)ALS --有个比较详细的讲解,包含blocks使用. Spark ALS源码总结 //TODO 源码,集群尝试.研究blocks使用原理及作用. 官方解释:nu ...