整理的算法模板合集: 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 修复工程】相关推荐

  1. BZOJ 2144 跳跳棋(神仙建模题,倍增 LCA,二分)【BZOJ修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2144 是 hydro 的 BZOJ ...

  2. BZOJ 2143 飞飞侠(线段树优化建边 / 并查集优化最短路)【BZOJ修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2143 是 hydro 的 BZOJ ...

  3. BZOJ 2142 礼物(拓展Lucas,中国剩余定理)【BZOJ修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2142 是 hydro 的 BZOJ ...

  4. BZOJ 2141 排队(块套树,分块,树状数组)【BZOJ修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2141 是 hydro 的 BZOJ ...

  5. BZOJ 2140 稳定婚姻(强联通分量判环)【BZOJ修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2140 是 hydro 的 BZOJ ...

  6. BZOJ 2138 stone(霍尔定理推论,线段树)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2138 是 hydro 的 BZOJ ...

  7. BZOJ 2137 submultiple(约数,拉格朗日插值求自然数k次幂和)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2137 是 hydro 的 BZOJ ...

  8. BZOJ 2135 刷题计划(贪心,求导,二分)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2135 是 hydro 的 BZOJ ...

  9. BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2134 是 hydro 的 BZOJ ...

最新文章

  1. Entity Framework简介
  2. Java多线程之线程并发库阻塞队列的应用
  3. VTK:小部件之CompassWidget
  4. 在Android工程中,添加ICON资源
  5. Linux下设置python脚本文件为服务
  6. Asp.net MVC Linq to SQL Model verification
  7. 在python中打开文件显示没有权限PermissionError: [Errno 13] Permission denied:
  8. 北京自贸区国际商务服务片区挂牌 总面积48平方公里
  9. 怎么做SWOT分析模型PPT呢?
  10. 神经网络加速器的兴起
  11. 此计算机怎样连接未识别的网络连接,电脑无法连接无线网络显示未识别如何解决...
  12. 中奖记录html页面,HTML5 canvas实现中奖转盘的实例代码
  13. 计算机应用与基础教学计划,计算机应用基础教学计划完整版.docx
  14. Axure下载安装汉化
  15. 实测超轻量中文OCR开源项目,总模型仅17M
  16. unity地形模块学习
  17. 关于 android 平台上的 usb 投屏
  18. 根据一堆数字判定下一个数字_坐在一堆数字黄金
  19. 2022张宇考研基础30讲 第十五讲 数一数二专题
  20. mac与windows下各自的md5、sha1、sha256命令行校验工具

热门文章

  1. 基于OpenCV的区域分割、轮廓检测和阈值处理
  2. SpringBoot基于AOP实现自定义非空验证的注解
  3. Java学习提升体系结构
  4. java 闭包与回调
  5. 开机自动挂载与autofs触发挂载
  6. sqlmap 常用操作
  7. 分布式团队面临的五大问题及解决办法
  8. Python学习笔记(八)
  9. vs code 列编辑模式
  10. Python算法题----求出和为S的所有连续正整数数列