BZOJ 2139 road(构造,最小生成树)【BZOJ 修复工程】
整理的算法模板合集: ACM模板
点我看算法全家桶系列!!!
实际上是一个全新的精炼模板整合计划
题目链接
https://hydro.ac/d/bzoj/p/2139
是 hydro 的 BZOJ 修复工程 !(我也去领了一点题慢慢修着玩,这题就是我修的嘿嘿嘿)
题目描述
很久很久以前,中原地区分成了 NNN 个国家,编号为 1∼N1\sim N1∼N,任意两个国家都可互达。每个国家有一个攻击值 AiA_iAi 和防御值 BiB_iBi 。定义一个人从 iii 国去 jjj 国的危险值为:假如 Ai>BjA_i>B_jAi>Bj ,则危险值为 Ai2−Bj2A_i^2-B_j^2Ai2−Bj2,否则危险值为 000 。现在,Nan从国家 111 出发,经过每一个国家有且仅有一次,最后回到国家 111 ,要求找出一种方案,使得其中危险值的最大值最小。
输入格式
第一行正整数 NNN ,表示有 NNN 个国家;
第二行正整数 A1,A2,x,y,zA_1,A_2,x,y,zA1,A2,x,y,z,有等式 Ai=(x×Ai−1+y×Ai−2+z)mod32767A_i=(x\times A_{i-1}+y\times A_{i-2}+z)\mod 32767Ai=(x×Ai−1+y×Ai−2+z)mod32767;
第三行正整数 B1,B2,x,y,zB_1,B_2,x,y,zB1,B2,x,y,z,有等式 Bi=(x×Bi−1+y×Bi−2+z)mod32767B_i=(x\times B_{i-1}+y\times B_{i-2}+z)\mod 32767Bi=(x×Bi−1+y×Bi−2+z)mod32767。
输出格式
输出一个数,表示危险值的最大值最小是多少。
5
2 4 1231 4432 123
123 45 3245 555 6676
9171832
数据规模与约定
对于 100%100\%100% 的数据, N≤106N\le 10^6N≤106
提示
样例说明:
A数组为 2,4,13911,5151,30312,4,13911,5151,30312,4,13911,5151,3031 。
B数据为 123,45,24364,26060,21765123,45,24364,26060,21765123,45,24364,26060,21765。
其中一种最优方案为 1−2−4−3−5−11- 2- 4- 3- 5-11−2−4−3−5−1,危险值分别为 0,0,0,0,91718320,0,0,0,91718320,0,0,0,9171832。
Solution
解题思路来源:https://www.cnblogs.com/Apocrypha/p/9574196.html
但这个思路总感觉不太对劲()至少我太不会证明
根据题目中权值的特殊要求,我们显然在连边的时候,一定是尽量减少两点间 aaa 和 bbb 之间的差距,每个点有 aaa ,bbb 两个信息,而题目中要求的是 最大值最小,并求出这个最小值。
所以我们只需要把这个图建出来,取图中所有边的最小值即可。考虑最大值最小,显然我们将 aaa,bbb 之间的差值均衡分配一下即可。即 aaa 和 bbb 按照从小到大的顺序排序,然后 aia_iai 与 bib_ibi 相连。
这样整张图就变成了一个最大值最小的,由若干个环组成的图。
将这些环连通即可。边取最小值使得图连通,显然就是最小生成树。我们考虑构图,继续均衡差值,将 aia_iai 与 bi−1b_i-1bi−1 再次相连,求最小生成树,途中使用的边中取最大值即可。
Code
#include <bits/stdc++.h>using namespace std;
using ll = long long;
const int maxn = 1e6 + 7;
const int p = 32767;struct node
{ll v;int id;bool operator < (const node &t) const {return v < t.v;}
}a[maxn], b[maxn], c[maxn];int n, m, s, t, x, y, z;
int fa[maxn];
ll ans;int Find(int x)
{if(fa[x] == x) return x;return fa[x] = Find(fa[x]);
}int main()
{scanf("%d%lld%lld%d%d%d", &n, &a[1].v, &a[2].v, &x, &y, &z);for (int i = 3; i <= n; ++ i) a[i].v = (1ll * x * a[i - 1].v % p + 1ll * y * a[i - 2].v % p + z) % p;scanf("%lld%lld%d%d%d", &b[1].v, &b[2].v, &x, &y, &z);for (int i = 3; i <= n; ++ i)b[i].v = (1ll * x * b[i - 1].v % p + 1ll * y * b[i - 2].v % p + z) % p;for (int i = 1; i <= n; ++ i)a[i].id = b[i].id = i;sort(a + 1, a + 1 + n);sort(b + 1, b + 1 + n);for (int i = 1; i <= n; ++ i)fa[i] = i;for (int i = 1; i <= n; ++ i) {int fx = Find(a[i].id);int fy = Find(b[i].id);if(a[i].id == b[i].id) continue;fa[fx] = fy;ans = max(ans, a[i].v * a[i].v - b[i].v * b[i].v);}for (int i = 2; i <= n; ++ i)c[i - 1] = (node){a[i].v * a[i].v - b[i - 1].v * b[i - 1].v, i};sort(c + 1, c + n);for (int i = 1; i < n; ++ i) {int fx = Find(a[c[i].id].id);int fy = Find(b[c[i].id - 1].id); if(fx != fy) { fa[fx] = fy;ans = max(ans, c[i].v);}}cout << ans << endl;return 0;
}
BZOJ 2139 road(构造,最小生成树)【BZOJ 修复工程】相关推荐
- BZOJ 2144 跳跳棋(神仙建模题,倍增 LCA,二分)【BZOJ修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2144 是 hydro 的 BZOJ ...
- BZOJ 2143 飞飞侠(线段树优化建边 / 并查集优化最短路)【BZOJ修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2143 是 hydro 的 BZOJ ...
- BZOJ 2142 礼物(拓展Lucas,中国剩余定理)【BZOJ修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2142 是 hydro 的 BZOJ ...
- BZOJ 2141 排队(块套树,分块,树状数组)【BZOJ修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2141 是 hydro 的 BZOJ ...
- BZOJ 2140 稳定婚姻(强联通分量判环)【BZOJ修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2140 是 hydro 的 BZOJ ...
- BZOJ 2138 stone(霍尔定理推论,线段树)【BZOJ 修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2138 是 hydro 的 BZOJ ...
- BZOJ 2137 submultiple(约数,拉格朗日插值求自然数k次幂和)【BZOJ 修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2137 是 hydro 的 BZOJ ...
- BZOJ 2135 刷题计划(贪心,求导,二分)【BZOJ 修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2135 是 hydro 的 BZOJ ...
- BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2134 是 hydro 的 BZOJ ...
最新文章
- Entity Framework简介
- Java多线程之线程并发库阻塞队列的应用
- VTK:小部件之CompassWidget
- 在Android工程中,添加ICON资源
- Linux下设置python脚本文件为服务
- Asp.net MVC Linq to SQL Model verification
- 在python中打开文件显示没有权限PermissionError: [Errno 13] Permission denied:
- 北京自贸区国际商务服务片区挂牌 总面积48平方公里
- 怎么做SWOT分析模型PPT呢?
- 神经网络加速器的兴起
- 此计算机怎样连接未识别的网络连接,电脑无法连接无线网络显示未识别如何解决...
- 中奖记录html页面,HTML5 canvas实现中奖转盘的实例代码
- 计算机应用与基础教学计划,计算机应用基础教学计划完整版.docx
- Axure下载安装汉化
- 实测超轻量中文OCR开源项目,总模型仅17M
- unity地形模块学习
- 关于 android 平台上的 usb 投屏
- 根据一堆数字判定下一个数字_坐在一堆数字黄金
- 2022张宇考研基础30讲 第十五讲 数一数二专题
- mac与windows下各自的md5、sha1、sha256命令行校验工具