ZROI 部分题目题解
ZROI 部分题目题解
335
首先发现一个性质:
对于最短的边而言,所有点的路径如果经过了这条边,那么路径的权值就是这条边的边权(废话)
那么我们把最短的边拎出来,可以发现,博物馆确定时,每个点按照路标所指方向走一定会经过最短的边或者一定被最短的边的某个端点经过
简单的说,令某一条最短的边的某个端点出发的某一条路径组成的集合为 \(S\),每个点出发的路径,要么包含某一条最短的边,要么被 \(S\) 中的某一条边包含
我们把每条边的权值减去 \(w\),其中 \(w\) 表示最短边的长度
那么题目转化为最小化一条链的权值和,这条链满足终点是博物馆,起点是某条最短边(也就是现在边权为零的某条边)的某个端点,并且这条链不经过零边
如何最小化一条链的权值和?我们考虑从某条最短边的某个端点开始在链上走,假如经过三条边 \(a,b,c\),满足权值 \(w_b \gt w_c\),那么可以发现,设 \(a=(u,v),b=(v,x)\) ,我们选取 \((u,x)\) 代替 \(a,b\) 一定不会更差,所以这条链上的边权基本是递增的
所以说这个链的权值基本上就是每条边的权值和
但是存在一个问题,就是 \(a\) 不存在的时候,也就是第一、二条边,这个并不能保证顺序,所以我们给每个点订一个初值,
(当时就写到上面那里,然后就忘了写了。。。)
503
首先把 \(\frac{(A_i - A_j) B_i B_j}{2A_iA_j}\) 化简,令 $C_i = \frac {B_i} {A_i} $,那么就有 \(\frac{(A_i - A_j) B_i B_j}{2A_iA_j} =\frac 1 2 (B_iC_j - B_jC_i)\)
发现右边那个东西是叉积,等价于把 \((B_i, C_i) ,(B_j, C_j)\) 放在平面直角坐标系里,这两个点与原点组成的三角形的有向面积
那么题目变成求一个上凸壳 + 一个下凸壳
单调队列维护一下即可
504
设最优解为 \((l_1, r_1, x_1), (l_2, r_2, x_2) \dots(l_k, r_k, x_k)\) 表示把 \(l_1\) 到 \(r_1\) 加上 \(x_1\),\(l_2\) 到 \(r_2\) 加上 \(x_2\),……
那么不难发现 \(l_i\) 互不相同,因为可以将 \((l,r_1,x_1)\) 和 \((l, r_2, x_2)\) 变成 \((l, r_1, x_1 + x_2)\) 和 \((r_1+1, r_2, x_2 - x_1)\) (这里假设 \(r_2 \geq r_1\))
首先发现区间不好做,我们通过差分把区间加变成单点加
首先令 \(a_i\) 表示第 \(i\) 个元素距离 \(7\) 的倍数差多少,然后把 \(a\) 差分一下
现在问题变成了求最少的操作数,每次操作是选一个位置 \(+x\),另一个位置 \(-x\) (可以不选)
注意这里没有顺序要求,完全可以在后面的一个位置上 \(+x\),在前面的一个位置上 \(-x\)
而且 \(-x\) 等价于 \(+(7-x)\)
所以可以先贪心地将 \(x\) 和 \(7 - x\) 进行匹配,因为一次操作只影响两个位置,最优的操作也只能消去两个位置,所以贪心没有问题
现在变成了一堆数,这堆数最多有三种,1和6中有一种,2和5中有一种,3和4中有一种,每次操作取出一个数,然后把任意另一个数减去这个数,直到所有数都为0为止,问最小操作次数
发现答案最劣为数的个数,那么和数的个数差多少呢?就是某些数可以被其他的数之和给消掉,也就是说,每一组数,这组数的和为 \(7\) 的倍数,就可以让答案减去1,所以我们变成了把这堆数分组,看最多能分出多少和为 \(7\) 的倍数的组
显然这种组里面每个数出现次数不会超过 \(6\),否则一定能拆成两个组(废话),而最多有三种数,所以可以 \(7^3\) 预处理所有组,然后令 \(f[i][j][k]\) 表示三种数分别有 \(i,j,k\) 个的时候的答案,\(dp\) 一下即可,复杂度看似 \(O(n^3 \times 组数)\) 过不去,实际上由于 \(i + j + k <= n\) 并且 \(i,j,k\) 的和是已经消去一些数之后的答案,而且因为每一组的和必须是 \(7\) 的倍数,所以组数和 \(7^3\) 差距甚远,一般只有几十,所以常数实际上非常小(极限数据大概跑0.6s)
505
分块暴力大法好!
因为修改对某一组的询问的影响显然可以 \(O(1)\) 计算,所以可以分块暴力
就是令块大小为 \(m\),然后每修改块大小次的时候就 \(O(20 n)\) 暴力重构,询问的时候就用答案加上每一次修改对其的影响,复杂度 \(O(\frac {20n^2} {m} + nm)\),由均值不等式,取 \(m = \sqrt {20n} = 1414\) 时,可以做到 \(1e8\),而且常数几乎为 \(1\)
正解是树状数组维护系数?没搞懂。。。
ZROI 部分题目题解的更多相关文章
- ZROI WC Round1 题解
ZROI WC Round1 题解 Problem A 题意 一个 \(n \times m\) 格子图,一个人从左上角出发,每次向右或者向下走一格,方法如下: 如果他在最下面一排,那么他会往右行走. ...
- ZROI WC Round5 题解
ZROI WC Round5 题解 Problem A 题意 给定一个长度为 \(n\) 的序列,操作是交换两个相邻的数,要求将序列变成先单调不降再单调不升,求最小操作数,注意可以完全单调不降或者完全 ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- chd校内选拔赛题目+题解
题目链接 A. Currency System in Geraldion 有1时,所有大于等于1的数都可由1组成.没有1时,最小不幸的数就是1. #include<iostream> ...
- Tarjan & LCA 套题题目题解
刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <se ...
- LuoguB2001 入门测试题目 题解
Update \(\texttt{2021.7.3}\) 经测试,本题 \(a,b\) 范围在 long long,对代码进行了修改,并修改一些笔误,更新了数据范围. \(\texttt{2021.7 ...
- cogs 自己出的题目 题解报告
第一题很简单嘛,就是裸的动态树分治嘛 对于每一层的重心维护子树路径的信息和子树到上一层重心的点的信息 空间复杂度O(nlogn) 对于每一层我们按dis排序,之后记录军队数量的前缀和 查询的时候我们只 ...
- Gym - 101480 CERC 15:部分题目题解(队内第N次训练)
-------------------题目难度较难,但挺有营养的.慢慢补. A .ASCII Addition pro:用一定的形式表示1到9,让你计算加法. sol:模拟. solved by fz ...
- 【qboi冲刺NOIP2017复赛试题4】 全套题目+题解+程序
作为一个好人(验题人),我给大家奉上下这套题的题解,并且预祝大家这套题能够AK: T1题面:Alice现在有n根木棍,他们长度为1,2,3....n,Bob想把某一些木棍去掉,使得Alice剩下的木棍 ...
随机推荐
- 很好的 DHCP协议与dhcpcd分析【转】
本文转载自:http://blog.csdn.net/gjsisi/article/details/18052369 第一部分 DHCP工作过程 DHCP的工作过程主要分为以下六个阶段: 发现 ...
- POJ 2506 Tiling (递推 + 大数加法模拟 )
Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7965 Accepted: 3866 Descriptio ...
- HDU5877 Weak Pair dfs + 线段树/树状数组 + 离散化
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5877 题意: weak pair的要求: 1.u是v的祖先(注意不一定是父亲) 2.val[u]*va ...
- avf_showspectrum.c:112: undefined reference to `av_rdft_end
下面还有一堆错,是由于ffmpeg库没编好,重新编好即可
- html5--3.10 input元素(9)
html5--3.10 input元素(9) 学习要点 input元素及其属性 input元素 用来设置表单中的内容项,比如输入内容的文本框,按钮等 不仅可以布置在表单中,也可以在表单之外的元素使用 ...
- 【概念】SVG(2)
Style <svg width="200" height="200" xmlns="http://www.w3.org/2000/svg&qu ...
- Python:元组
元组:只读,不能修改,使用小括号 创建元组: tup1 = ('physics', 'chemistry', 1997, 2000) tup2 = (1, 2, 3, 4, 5 ) tup3 = &q ...
- hdu 1028 & hdu 1398 —— 整数划分(生成函数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1028 整数划分,每个数可以用无限次: 所以构造 f(x) = (1+x+x2+x3+...)(1+x2+x ...
- 六、mysql语法
1.条件查询 条件查询需要用到where语句,where必须放到from语句表的后面 执行顺序:先from后where过滤后再检索出来 2.数据排序,asc(升序),desc(降序)默认情况下是asc ...
- 基于微信的SDK的学习与使用——实现产品支付
声明本篇博客为作者原创,本篇是继支付宝支付之后本人又学习的第二种支付实现,本篇着重于原理与注意事项的学习. 参考 参考 微信支付的开发文档相比支付宝的比较简单,但是使用功能丝毫也不含糊,我觉得简单易 ...