AtCoder Beginner Contest 397

news/2025/3/17 12:32:08/文章来源:https://www.cnblogs.com/definieren/p/18776634

ABC397D Cubes

我们有 \(N = (x-y)(x^2+xy+y^2) = ab\),由于 \((x-y)^2 \le (x^2+xy+y^2)\),那么 \(a\)\(O(N^{1/3})\) 级别的数,可以直接枚举,check 就是个解二次方程。

void slv() {i128 n; Read(n);constexpr i128 lim = 5e6;auto chk = [&](i128 x) -> i128 {i128 l = 0, r = 1e18;while (l < r) {i128 mid = (l + r + 1) / 2;if (mid * mid <= x) {l = mid;} else {r = mid - 1;}}return l;};for (i128 a = 1; a < lim; a ++) {if (n % a) continue;i128 b = n / a, xy = b - a * a;if (xy % 3) continue;xy /= 3;i128 c = a * a + 2 * b;if (c % 3) continue;c /= 3, c += 2 * xy;i128 d = chk(c);if (d * d != c) continue;i128 x = a + d, y = d - a;if (x & 1) continue;if (y & 1) continue;x /= 2, y /= 2;if (x <= 0 || y <= 0) continue;Write(x, ' ', y, '\n');return;}Puts("-1");return;
}

ABC397E Path Decomposition of a Tree

子树 \(u\) 内划分完之后一定是剩一条根链,且长度恰好为 \(len_u = size_u \bmod k\)

进行 DP,记 \(f_u\) 表示 \(u\) 子树内是否能成功划分。

首先要求所有儿子的子树内都能成功划分,记 \(\displaystyle cnt = \sum_{v \in \mathbf{son}(u)} [len_v \neq 0]\)

\(len_u = 1\) 时,要求 \(cnt = 0\),否则要求 \(cnt \neq 0\)

\(len_u \neq 0\) 时,要求 \(cnt = 1\),此时恰好形成一个根链。

\(len_u = 0\) 时,如果 \(cnt = 1\),那么是拼出一个根链,否则是两个子树中的根链和 \(u\) 拼成一条链。

constexpr int N = 2e5 + 5;
int n, k, sz[N], len[N];
vector<int> G[N];
bool f[N];void DFS(int u, int fa) {sz[u] = 1, f[u] = true;int cnt = 0;for (auto v : G[u]) if (v != fa) {DFS(v, u), sz[u] += sz[v], f[u] &= f[v];cnt += !!len[v];}len[u] = sz[u] % k;if (!f[u]) {return;}if (len[u] == 1) {f[u] = !cnt;return;}if (len[u] != 0) {f[u] = (cnt == 1);return;}if (len[u] == 0) {f[u] = (1 <= cnt && cnt <= 2);}return;
}void slv() {Read(n, k);if (k == 1) {Yes();return;}const int nk = n * k;for (int i = 1; i < nk; i ++) {int u, v; Read(u, v);G[u].emplace_back(v);G[v].emplace_back(u);}DFS(1, 0);Yes(f[1]);return;
}

ABC397F Variety Split Hard

按照套路,求出每个位置的颜色上一次出现的位置记为 \(lst_i\),并把每个位置看成点 \((i, lst_i)\),那么题目中要的就是将平面划分成 \(3\) 个对角线为 \(y = x\) 的正方形,使得正方形外的点最多。

考虑扫描 \(r\),同时维护 \(f_i\) 表示 \(l = i\) 时的前 \(r\) 个位置的贡献,\((r + 1, n]\) 这部分的答案 \(g_r\) 可以通过 C 题相同的方式维护,那么我们每次要做的就是 \(\displaystyle ans \leftarrow f_i + g_r\)

每次 \(r\) 移动时,首先将 \(f_r\) 加到 \(f\) 中,这个可以用和 C 题相同的方式维护,然后需要用 \(r\) 位置更新 \(f\),发现只会使 \([lst_i +1, i]\) 这段的 \(f\) 增加 1,最后计算答案。

发现需要做的是 push_back,后缀加,查询全局最大,可以并查集做到线性,不过没必要。

struct Info {int mx;Info(): mx(0) { return; }Info(int x): mx(x) {}friend Info operator + (Info x, Info y) {return Info(max(x.mx, y.mx));}
};
struct Tag {int tg;Tag(): tg(0) { return; }Tag(int t): tg(t) { return; }operator bool() {return tg;}friend Tag operator * (Tag x, Tag y) {return Tag(x.tg + y.tg);}Info Apply(Info x) {return x.mx += tg, x;}
};constexpr int N = 3e5 + 5;
int n, a[N], bin[N], lst[N];
Segment_Tree<Info, Tag, N> sgt;struct Counter {int cnt[N], res;Counter(): res(0) {memset(cnt, 0, sizeof cnt);}void add(int x) {res += !cnt[x] ++;return;}void del(int x) {res -= !-- cnt[x];return;}int qry() {return res;}
};void slv() {Read(n);for (int i = 1; i <= n; i ++) {Read(a[i]);}sgt.Build(n + 1);Counter suf, pre;for (int i = 1; i <= n; i ++) {lst[i] = bin[a[i]], bin[a[i]] = i;suf.add(a[i]);}int ans = 0;for (int i = 1; i < n; i ++) {suf.del(a[i]), pre.add(a[i]);if (max(lst[i], 1) < i) {sgt.Update(max(lst[i], 1), i - 1, 1);}if (i > 1) {cmax(ans, sgt.Query().mx + suf.qry());}sgt.Change(i, pre.qry());}Write(ans, '\n');return;
}

ABC397G Maximize Distance

没写完,唉唉。

考虑去计算 \(F(x)\) 表示使得 \(1 \rightsquigarrow n\) 的最短距离为 \(x\) 至少改多少条边。

将问题看成给每个点标号,经过转化就是最小割的形式了。

然后二分即可。

constexpr int inf = 1E5;void slv() {int n, m, k;Read(n, m, k);vector<pair<int, int>> edge(m);for (int i = 0; i < m; i ++) {int u, v; Read(u, v);edge[i] = {-- u, -- v};}auto calc = [&](int x) {MaxFlow_Graph<int> G(n * x + 2);int S = n * x, T = S + 1;auto id = [&](int i, int d) {return i * x + d;};for (int i = 0; i < n; i ++) {G.Add_Edge(id(i, 0), S, inf);G.Add_Edge(T, id(i, x - 1), inf);for (int j = 0; j < x - 1; j ++) {G.Add_Edge(id(i, j + 1), id(i, j), inf);}}G.Add_Edge(id(0, 0), T, inf);G.Add_Edge(S, id(n - 1, x - 1), inf);for (auto [u, v] : edge) {for (int j = 0; j < x; j ++) {if (j + 1 < x) {G.Add_Edge(id(v, j + 1), id(u, j), inf);}G.Add_Edge(id(v, j), id(u, j), 1);}}return G.Max_Flow(S, T);};int l = 0, r = n - 1;while (l < r) {int mid = (l + r + 1) / 2;if (calc(mid) <= k) {l = mid;} else {r = mid - 1;}}Write(l, '\n');return;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/900328.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AMBA总线学习(二)---AHB-Lite

AHB-Lite的硬件架构可以分为四部分,分别是Master、Slave、Decoder、MUX。 Maeter信号:Name Destination DescriptionHADDR[31:0] slave和decoder 32bit的地址总线(不是严格限制为32bit)HBURST[2:0] slave 突发传输类型HMASTERLOCK slave 用来实现原子操作的HPROT[3:0] slav…

可视化图解算法:判断链表中是否有环(环形链表)

判断链表是否存在环有个**小技巧**:**快慢指针法**。定义2个指针变量(即快慢指针),初始化时快慢指针都指向头节点,每次快指针每次移动 2 个节点,慢指针每次移动 1 个节点。如果 快指针指向的节点为null或者快指针指向节点的下一个节点为空,则链表没有环;如果快慢指针相…

新书上线 |《零门槛AIGC应用实战——Serverless+AI 轻松玩转高频AIGC场景》免费下载

《零门槛AIGC应用实战——Serverless+AI 轻松玩转高频AIGC场景》电子书正式上线!多种精选 AI 部署方案带你深入了解 Serverless+AI 最新趋势、AI 应用的架构设计与详细的部署教程等。函数计算 AI 技术解决方案助您一键上云,高效部署。《零门槛AIGC应用实战——Serverless+AI …

linux中安装intel wifi ax101驱动

目录前奏安装在Ubuntu中FAQ 资料参考 获取帮助 前奏 rambo@ub24-1:~$ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.1 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.1 LTS (Noble Numbat)" ........rambo@ub24-1:~$ cat…

桌面级CPU、显卡天梯图

手动更新,收藏所有(来源:秋刀鱼半藏)《史上最全桌面级CPU天梯图》专用更新帖(公测版) 版本:V6.077,时间:2024.11 《史上最全桌面级显卡天梯图》专用更新帖(公测版) 更新时间:2025.03.06

Qwen2-VL华为卡300i duo环境搭建推理测试

引子 前面也写过华为300i duo DeepSeek的环境搭建&推理测试,感兴趣的同事请移步(https://blog.csdn.net/zzq1989_/article/details/146149684?spm=1001.2014.3001.5501)。多模态华为卡的适配倒是一直没有出过相关的博客。刚好遇到需要Qwen2-VL的配置,安装。OK, 那就让…

EWM528-2G4NW20SX系列LORA MESH无线组网模块深度测评

1.LORA MESH模块产品简介 EWM528-2G4NW20SX、EWM528-2G4NW27SX系列LORA MESH无线组网模块基于先进的无线通信技术打造。在输出功率方面,LORA MESH模块能提供稳定且适配多种场景的功率支持,保障信号的有效传输范围。空中速率表现出色,可满足大量数据快速传输的需求,提升工作…

SQLService 导入excel数据生成一个数据表

SQLService 导入excel数据生成一个数据表 1、先选择导入的数据库右键任务=》选择导入数据 2、选择导入的数据源excel 3、选择excel的的地址和格式。 如果不知道格式的可以excel、另存改格式。 4、选择选择OLE DB Provider ,点击 下一步(Next) 5、选择默认下一步。 6、勾选 源…

20242935 2024-2025-2 《网络攻防实践》第三周作业

20242935 2024-2025-2 《网络攻防实践》第三周作业 网络嗅探与协议分析 一、实验要求 (1)动手实践tcpdump 使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什…

ASE40N30-ASEMI电源管理专用ASE40N30

ASE40N30-ASEMI电源管理专用ASE40N30编辑:LL ASE40N30-ASEMI电源管理专用ASE40N30 型号:ASE40N30 品牌:ASEMI 封装:TO-220F 最大漏源电流:40A 漏源击穿电压:300V 批号:最新 RDS(ON)Max:12mΩ 引脚数量:3 沟道类型:N沟道MOS管 封装尺寸:如图 特性:MOS管、N沟道MO…

FANUC机器人维修SRVO-050报警代码诠析

仔细查阅发那科机器人所提供的故障原因及其相应的FANUC机器人维修处理措施,并逐条进行深入剖析。机器人发出碰撞报警,通常可以归结为以下六种情形。即机器人确实发生了碰撞,因此触发了报警机制。这一问题多发生在机器人的初期调试阶段,往往是由于调试人员对于空间概念的把…

京准电钟:高精度北斗卫星对时装置电力系统改造方案

京准电钟:高精度北斗卫星对时装置电力系统改造方案京准电钟:高精度北斗卫星对时装置电力系统改造方案 京准电钟:高精度北斗卫星对时装置电力系统改造方案 京准电钟官微——ahjzsz随着电力系统对时间同步精度、安全性和自主可控需求的提升,北斗卫星授时技术逐渐替代GPS成为主…