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 部分题目题解的更多相关文章

  1. ZROI WC Round1 题解

    ZROI WC Round1 题解 Problem A 题意 一个 \(n \times m\) 格子图,一个人从左上角出发,每次向右或者向下走一格,方法如下: 如果他在最下面一排,那么他会往右行走. ...

  2. ZROI WC Round5 题解

    ZROI WC Round5 题解 Problem A 题意 给定一个长度为 \(n\) 的序列,操作是交换两个相邻的数,要求将序列变成先单调不降再单调不升,求最小操作数,注意可以完全单调不降或者完全 ...

  3. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  4. chd校内选拔赛题目+题解

    题目链接   A. Currency System in Geraldion 有1时,所有大于等于1的数都可由1组成.没有1时,最小不幸的数就是1. #include<iostream> ...

  5. Tarjan & LCA 套题题目题解

    刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <se ...

  6. LuoguB2001 入门测试题目 题解

    Update \(\texttt{2021.7.3}\) 经测试,本题 \(a,b\) 范围在 long long,对代码进行了修改,并修改一些笔误,更新了数据范围. \(\texttt{2021.7 ...

  7. cogs 自己出的题目 题解报告

    第一题很简单嘛,就是裸的动态树分治嘛 对于每一层的重心维护子树路径的信息和子树到上一层重心的点的信息 空间复杂度O(nlogn) 对于每一层我们按dis排序,之后记录军队数量的前缀和 查询的时候我们只 ...

  8. Gym - 101480 CERC 15:部分题目题解(队内第N次训练)

    -------------------题目难度较难,但挺有营养的.慢慢补. A .ASCII Addition pro:用一定的形式表示1到9,让你计算加法. sol:模拟. solved by fz ...

  9. 【qboi冲刺NOIP2017复赛试题4】 全套题目+题解+程序

    作为一个好人(验题人),我给大家奉上下这套题的题解,并且预祝大家这套题能够AK: T1题面:Alice现在有n根木棍,他们长度为1,2,3....n,Bob想把某一些木棍去掉,使得Alice剩下的木棍 ...

随机推荐

  1. CSS3学习笔记(5)—页面遮罩效果

    今天把页面遮罩的效果发一下,之前遮罩都是用JS实现的,忽然发现CSS3里面的box-shadow属性除了做立体阴影外,还可以做页面的遮罩. 下面来看一下完成的动态效果: 从上图可以看出,就是当鼠标悬浮 ...

  2. Good Bye 2015 B. New Year and Old Property —— dfs 数学

    题目链接:http://codeforces.com/problemset/problem/611/B B. New Year and Old Property time limit per test ...

  3. Nginx配置故障转移

    当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用. 如果上游服务器的某一台宕机了,直接轮训到下一个~ 8080 8081 8082 关 ...

  4. js里=、== 和===有什么区别?

    说明:该文章是转载后进行修改完善的,望大家有收获. =是赋值运算符,==是关系运算符; ===是全等运算符. ”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等.第一个 ...

  5. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  6. P2759 奇怪的函数

    题目描述 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 x^x 达到 n 位数字的最小正整数 x 输入输出样例 输入样例# ...

  7. 如何判断一个for循环执行完毕

    在外面一个变量a=arr.leng; 然后就是进行for循环, 在for循环下面进行判断,因为如果结束那么i的值就会>=a;if条件成立的话,可以在里面进行循环完毕要做的操作.

  8. Batch Normalization层

    Batch Normalization的加速作用体现在两个方面:一是归一化了每层和每维度的scale,所以可以整体使用一个较高的学习率,而不必像以前那样迁就小scale的维度:二是归一化后使得更多的权 ...

  9. Snmp在Windows下的实现----WinSNMP编程原理

    在Windows 下实现SNMP协议的编程,可以采用Winsock接口,在161,162端口通过udp传送信息.在Windows 2000中,Microsoft已经封装了SNMP协议的实现,提供了一套 ...

  10. VS2008中使用JSONCPP方法小结

    Introduction JSON (JavaScript Object Notation) is a lightweight data-interchange format. It can repr ...