ZROI 暑期高端峰会 A班 Day5 杂题选讲
CF469E
\(n\) 个需要表示的数,请使用最少的 \(2^k\) 或 \(-2^k\) 表示出所有需要表示的数。输出方案。
\(n\le 10^5,|a_i|\le 10^5\)。
首先每个数肯定都只会被选一次,因为两个 \(1\) 没有一个 \(1\) 一个 \(2\) 优。
然后发现 \(1\) 和 \(-1\) 不会同时选,不如选 \(1\) 和 \(-2\) 或者 \(2\) 和 \(-1\)。
考虑缩小问题规模。如果所有数都是偶数,直接全部除以 \(2\)。否则一定要在 \(1\) 和 \(-1\) 中选一个。直接搜索。
如果每层都把数去重,第 \(i\) 层数的个数不会超过 \(\frac{\max(a_i)}{2^i}\)。时间复杂度 \(O((n+\max(a_i))\log \max(a_i))\)。
hihocoder 29D
给出一个正整数序列 \(a\),每次可以选择把一个数 \(+1\) 或者 \(-1\)。问最少要多少次才能把这个序列变成不上升序列。
\(n\le 5\times 10^5\)。
我们假设求的是不下降序列。
设 \(f(x)\) 表示最后一个数 \(\le x\) 的答案。由于每次加的代价都是线性的,他显然是一条每段斜率都是正数的折线。
在最右边加入一个 \(A\) 时,将 \(f(x)\) 加上 \(|x-A|\),再和 \(f(x-1)\) 取个 \(\min\)。
当两条折线相加时,把拐点取个并就行了。
求 \(\min\) 显然就是把折线最右边斜率 \(\ge 1\) 的都删掉。
具体做法就是每次插入两个拐点,把 \(x\) 最大的拐点删掉。
最后用 \(f(0)=\sum a_i\) 还原出纵坐标,就能求答案了。
CS Academy 32 G
考虑所有大小为 \(k\) 的正整数可重集,\(\{a_i\}\),其中 \(\sum a_i=n\),求所有 \(\sum a_i^m\) 的和。
\(n,m,k\le 4096\)
设 \(f_{i,j}\) 表示大小为 \(i\),和为 \(j\) 的总和。转移,由于要保证有序,所以要么是放一个 \(1\),要么是所有数 \(+1\)。
可以用组合数转移,复杂度 \(O(n^4)\)。
可以用斯特林数转移,复杂度 \(O(n^3)\)。
考虑 \(i^m\) 对答案的贡献,就是 \(\sum\limits_{j\ge 1}(至少 j 个 i 的方案数)\)。后面可以用类似上面的 DP 搞。
复杂度 \(O(n^2)\)。
CF470E
传说讲过?
就是那个什么鬼对角化。
THUPC 2017 I
给定 \(a_1\) 到 \(a_n\),求 \(f_1\) 到 \(f_n\)。其中 \(f_k\) 表示所有数 \(k\) 次方和。
\(n,k\le 2\times 10^5\)。
考虑 \(\sum(1+a_ix+a_i^2x^2+a_i^3x^3+\dots)\),这个就是答案的生成函数。
也就是 \(\sum\frac{1}{1-a_ix}\)。
分治 FFT 合并,没了。
复杂度两个 \(\log\)。(不知道能不能过?)
牛顿恒等式:对于一个首一多项式 \(F(x)=\sum\limits_{i=0}^nC_{n-i}x^i\),其中 \(C_0=1\),设 \(P_i\) 表示它的 \(n\) 个根的 \(i\) 次方和。对于所有正整数 \(d\),有等式 \(\sum\limits_{i=0}^{d-1}C_iP_{d-i}+C_dd=0\)。
知道 \(C\) 求 \(P\),可以多项式求逆,\(O(n\log n)\)。
知道 \(P\) 求 \(C\),可以多项式 exp,\(O(n\log n)\)。
对于这题,构造一个多项式 \(\prod(x-a_i)\)。\(a_i\) 就是这个多项式的根。带个牛顿恒等式两个 \(\log\)。(会不会被上面那吊打啊……)
某集训队互测题
\(n\) 个点 \(m\) 条带权无向边,权值是 \(0\) 到 \(16\)。问多少种方案选择一些边(不选重边),使得图联通,且边权和模 \(17\) 正好为 \(x\)。对每个 \(0\le x\le 16\) 都求答案。
\(n\le 17,m\le 10^5\)。
其实就是个循环卷积,且 \(998244353-1\) 是 \(17\) 的倍数,所以就要先 DFT,最后 IDFT 回去。
考虑总数减掉不连通的方案数。随便选的方案直接背包就行了。后面的枚举 \(1\) 所在的连通块。复杂度 \(O(3^n\times 17)\)。
设 \(f_S\) 表示 \(S\) 中随便选的方案数,\(g_S\) 表示 \(S\) 联通的方案数。
那么有 \(f=e^g,g=\ln f\)。乘法是子集卷积。
求 \(\ln\),脑补一下,莫比乌斯变换后,像对普通多项式暴力 \(\ln\) 一样做,然后反演回去就行了。
\(O(2^nn^2\times 17)\)。
SRM 702
\(n\) 个数 \(a_i\),定义一个区间是 \(k\) 快乐的当且仅当对于区间内每个数都能找到区间内另一个数和它差不超过 \(k\)。给出 \(m\) 求最小的一个 \(k\) 使得存在一个长度 \(\ge m\) 的 \(k\) 快乐区间。
\(n,m\le 10^5\)
二分。用一个数据结构搞出每个数左右第一个和它差不超过 \(k\) 且距离不小于 \(m\) 的位置 \(l_i,r_i\)。
考虑分治,问 \([L,R]\) 里面有没有子区间满足条件。
如果区间中存在一个数 \(i\) 使得 \(l_i<L,r_i>R\),那么这个数就没用了。分治 \([L,i-1]\) 和 \([i+1,R]\)。
否则一定有。
找 \(i\),从一边扫复杂度是错的,但是从两边同时扫就能保证复杂度了。
SRM 713
\(n\) 种物品,单个重量 \(w_i\),价值 \(v_i\),每种物品都有无限个。有 \(q\) 个询问:在所有拼出重量恰好为 \(m\) 的方案中,价值最大的是多少,达到最大价值的方案有多少种。注意的是 \((A,A,B)\) 和 \((A,B,A)\) 视为两种不同方案。
\(n,q,w_i\le 100,v_i,m\le 10^9\)。
注意到重量不超过 \(100\),那么矩阵优化一下转移就好了。
朴素是 \(O(qn^3\log m)\)。
如果我们二进制拆分,每次都保证是向量乘矩阵,复杂度是 \(O(n^3\log m+qn^2\log m)\)。
VK Cup 2017 Round 3 F
给定 \(A,N,p\),要对于所有 \(u\),求从 \(1\) 到 \(\lfloor\frac{A}{2^u}\rfloor\) 选出 \(n\) 个数,\(1\le n\le N\) 且 \(n\) 是奇数,且要满足最大数是奇数,的方案数。求和。模 \(p\)。
\(A\le 10^9,N\le 30000,10^4\le p\le 10^5+129\)。
枚举最大的数,
咕了。
SRM 715
……………………
什么鬼题面,不写了。
考虑 DP,\(f[i][x][j][y][l]\) 表示第一棵树的 \([i,i+l-1]\) 目前到根的遍历方式是 \(x\),第二棵树的 \([j,j+l-1]\) 目前到根的遍历方式是 \(y\) 可不可行。
转移就按题意模拟。
\(O(n^3)\)。
Codechef SNCKEL17
\(n\) 点 \(m\) 边无向图,每条边有编号。
\(q\) 次操作,每次交换两条边的编号,然后回答:按边从小到大加入,加到整张图连通时编号是多少。
\(n,m,q\le 10^5\)
这应该……动态维护最小生成树?
离线下来线段树分治 + LCT 就行了。
还有神奇分治,但是没听懂。
THUPC2017D
\(n\) 点 \(m\) 边无向简单图。每个点度数 \(\le 7\)。给点四染色,要求每个点最多有一个邻居和它颜色相同。输出方案或者无解。
\(n\le 25000,m\le 10^5\)。
先随便搞一个初始解,然后调整。
找一个萎掉的点,把它换成一种合法的颜色。
用队列模拟。
由于每次调整都能把两端颜色相同的边减少,所以复杂度是 \(O(m)\)。
ZROI 暑期高端峰会 A班 Day5 杂题选讲的更多相关文章
- ZROI 暑期高端峰会 A班 Day5 计算几何
内积(点积) 很普及组,不讲了. \[(a,b)^2\le(a,a)(b,b)\] 外积(叉积) 也很普及组,不讲了. 旋转 对于矩阵 \(\begin{bmatrix}\cos\theta\\\si ...
- ZROI 暑期高端峰会 A班 Day2 线性代数
高斯消元 很普及组,不讲了 当主元没有逆的时候可以辗转相除. 如果也没有带余数除法--没救了 逆矩阵 我们定义矩阵 \(A\) 的逆矩阵为 \(A^{-1}\),满足 \(AA^{-1}=A^{-1} ...
- ZROI 暑期高端峰会 A班 Day3 图论
最短路 NOI2019 D2T1 弹跳 KD 树 线段树套set -> 线段树套并查集? POI2014/2015 ??? \(n\) 个点 \(m\) 条边 DAG.求删掉每个点后 \(1\) ...
- ZROI 暑期高端峰会 A班 Day4 生成函数
一般生成函数 很普及组,不讲了 生成函数是一种形式幂级数,也就是我们只关心系数,不关心未知数具体的值. 比如 \(\sum\limits_{i\ge 0}x^i=\frac{1}{1-x}\).虽然只 ...
- ZROI 暑期高端峰会 A班 Day4 树上数据结构
FBI Warning:本文含有大量人类的本质之一. 你经历过绝望吗? [ZJOI2007]捉迷藏 询问树上最远黑点对. 动态边分治可以比点分治少一个 \(\log\). bzoj3730 咕了. [ ...
- ZROI 暑期高端峰会 A班 Day1 组合计数
AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...
- ZROI 暑期高端峰会 A班 Day1 序列数据结构
FBI Warning:本文包含大量人类的本质之一 CF643G 维护一个序列,可以区间赋值,求区间中出现超过 \(p\%\) 的数. 允许输出不对的数,允许重复输出,但是所有对的数都一定要输出.而且 ...
- ZROI 暑期高端峰会 A班 Day3 字符串
FBI Warning:本文含有大量人类的本质之一 后缀树 反正后缀树就是反串的后缀自动机的 Parent 树,就不管了. 然而 SAM 也忘了 好的假装自己会吧--dls 后缀自动机 大概记得,不管 ...
- ZROI 暑期高端峰会 A班 Day6 离线问题
FBI Warning:本文含有大量人类本质之一. 动态联通问题 允许离线. 模板,不讲了. 归并排序 %@)(#&%)++%($@)%!#(&%)(&@))) 主定理 U^( ...
随机推荐
- Redmine添加插件
注意:插件的安装必须到Plugins对应的文件目录执行命令! Plugins Plugin list A full list of available Redmine plugins can be f ...
- Centos6 No CMAKE_CXX_COMPILER could be found
[1]问题现象 cmake发生异常:如下图所示 [2]问题分析 Centos6 上使用Cmake出现错误 "No CMAKE_CXX_COMPILER could be found.&quo ...
- Android Studio中的非项目文件及项目目录下的全局搜索
一.背景 项目开发中,AS(Android Studio)经常会用到通过关键字在项目空间下搜索对应结果.最经常用到的Find in Path.例如打开Find in Path后,可以选中Scope t ...
- JS中Map的用法
声明 var map = new Map(); 设值 map.set("key","value"); 取值 map.get("key"); ...
- Portainer容器可视化管理工具使用文档
本文内容 主要介绍下Portainer的Docker使用方式,基于当前最新版v1.22.1,使用Docker的本地部署,并连接另一台服务器进行测试,更多请参考官网https://www.portain ...
- C#操作XML文档
Note: '=> ' 表示返回值 参考资料:请点击这里! 1:创建Xml文档 2:写Xml文档(必须保证有根元素) XmlDocument Xd (实例化一个对象) CreateXmlDecl ...
- python高级编程——入门语法(二)
闭包 概念:外函数outer定义一个变量a,又定义一个内函数inner,而这个内函数inner访问了外函数outer的变量a,如果需要改变外函数outer的变量a的值,则需要声明 nonlocal a ...
- MySQL语言分类——DDL
DDL的全称Data Definition Language,即数据定义语言 DDL的语法有:create.alter.drop.rename.truncate.对此做一个详细的解释: create ...
- sql server 大数据, 统计分组查询,数据量比较大计算每秒钟执行数据执行次数
-- 数据量比较大的情况,统计十分钟内每秒钟执行次数 ); -- 开始时间 ); -- 结束时间 declare @num int; -- 结束时间 set @begintime = '2019-08 ...
- iOS批量添加SDK自动打包GUI工具
背景 1.之前在给游戏开发商做SDK接入技术支持的时候,很多cp对iOS开发技术并不是很了解,对接SDK和打包都很迷糊,虽然我们根据他们的开发环境输出了不同的插件解决方案,这一步已经把接入SDK的复杂 ...