abc368 题解

news/2024/9/13 11:28:56/文章来源:https://www.cnblogs.com/lrx-blogs/p/18378453

切了 ABCDF,G 赛后 1min 切了(恼
比赛链接:https://atcoder.jp/contests/abc368

A - Cut

题意:

给定一个长度为 \(n\) 的序列,先输出后 \(k\) 个数,在输出前 \(n-k\) 个数。

思路:

按题意模拟即可。

代码:

https://atcoder.jp/contests/abc368/submissions/57030066

B - Decrease 2 max elements

题意:

给定一个长度为 \(n\) 的序列,定义一次操作为将序列中的最大值和次大值减去一,请问几次操作过后,序列中有至多 \(1\) 个正整数。(\(2\le n\le 100,1\le a_i\le 100\)

思路:

按题意模拟即可。

代码:

https://atcoder.jp/contests/abc368/submissions/57041828

C - Triple Attack

题意:

给定一个长度为 \(n\) 的序列,\(T\) 初始为 \(0\),定义一次操作为:

  • \(T\gets T-1\)
  • 将序列中的第一个正整数减去 \(c\)
    • \(T\equiv 0\pmod 3\),则 \(c=3\)
    • 否则 \(c=1\)
      请问几次操作过后,序列中没有正整数。

思路:

可以发现每 \(3\) 次操作一定会减去 \(5\),所以考虑先将第一个数花 \(3\) 次操作减 \(5\) 的整体操作,之后暴力做小部分操作即可。

代码:

https://atcoder.jp/contests/abc368/submissions/57052296

D - Minimum Steiner Tree

题意:

给定一颗 \(n\) 个节点的树,再给定树上的 \(k\) 个点 \(x_1,x_2,\cdots x_k\),求包含这 \(k\) 个点的最小生成树大小。(\(1\le k\le n\le 2\times 10^5\)

思路:

考虑以 \(x_1\) 为根,容易发现若节点 \(u\) 一定要被包含,那么其父亲也一定要被包含,考虑设 \(vis_i\) 表示节点 \(i\) 是否被包含,然后 dfs 遍历每一个节点并回溯转移即可。

代码:

https://atcoder.jp/contests/abc368/submissions/57055501

E - Train Delay

不会……

F - Dividing Game

题意:

Anna 和 Bruno 在玩一个游戏。给定一个长度为 \(n\) 的序列 \(a_1,a_2,\cdots,a_n\),每次操作 Anna 或 Bruno 可以选择序列中的一个数,将其变成其因数(但不能不变),请问若 Anna 先手,双方都已最佳方式玩游戏,谁会取胜。(\(1\le n\le 10^5,2\le a_i\le 10^5\)

思路:

先将每个 \(a_i\) 分解质因数,发现操作就相当于在 \(a_i\) 的质因数中去掉几个(但不能不去),质因数全去掉就不能继续对 \(a_i\) 操作。设 \(c_i\)\(a_i\) 的质因数个数(可以用筛法求出),那么题目就转化成了 Nim 游戏。

代码:

https://atcoder.jp/contests/abc368/submissions/57065741

G - Add and Multiply Queries

题意:

你有两个长度为 \(n\) 的序列 \(a,b\),你要处理如下 \(q\) 次操作(\(1\le n\le 10^5,1\le q\le 10^5\)):

  1. \(a_x\gets y\)
  2. \(b_x\gets y\)
  3. 有一个变量 \(T\) 初始值为 \(0\),依次遍历 \(i=l,l+1,\cdots,r\) 每次将 \(v\gets v+a_i\)\(v\gets v\times b_i\)。输出 \(T\) 最后可能的最大值。

保证第 3 种操作的答案最大为 \(10^{18}\)

思路:

最后的条件非常重要,如果 \(b_i\le 1\) 那么肯定选择将 \(v\gets v+a_i\),否则将 \(v\gets \max(v+a_i,v\times b_i)\)。后者情况的 \(b_i\ge 2\),由于 \(2^64>10^18\),我们可以知道最多只有 \(64\)\(b_i\) 大于 \(2\),所以我们可以用 setvectorvector 常数可能会小很多)维护这些 \(b_i\) 的下标 \(i\),然后在每次查询的时候遍历 setvector 中在 \(l\)\(r\) 以内的数,对于 \(b_i\le 1\) 我们需要区间查询 \(a\) 数组中某一段区间的和,对于 \(b_i\lt 1\) 我们可以暴力处理。由于需要单点修改某个数的值,第 1 种操作可以用树状数组维护,第 2 种操作可以用用 setvector 暴力处理。

代码:

https://atcoder.jp/contests/abc368/submissions/57092335(用 set 写的,常数巨大)

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

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

相关文章

别样的ABC大战

前言:BYD ABC 大战。此事发生于2024年3月,为保护隐私(有的人应该能看出来哈哈),人物名字均使用字母代替。故事虽根据真实事件改编,但较为夸张。 一天,W老师给我发来微信。她说:“你敢不敢和其他人举行ABC大战?”我豪爽的答应了:“我当然敢!”周六下午在花园路XX号举…

【NextJS】中间件实战介绍

原创 洞窝技术使用 Next.js 中间件实现高性能个性化 在当今的数字时代,用户期望获得量身定制的在线体验。个性化已经从一个奢侈品变成了必需品,尤其是对于希望在竞争激烈的市场中脱颖而出的企业来说。然而,实现高性能的个性化往往是一个挑战,需要在用户体验和系统性能之间取得…

排列组合问题

排列公式 从 \(n\) 个数中选出 \(m\) 个数并且排序。 公式推导: \[ A^2_3 = 3 \times 2 = 6\\3_6 = 6 \times 5 \times 4 = 120\\ A^2_6 = 6 \times 5 = 30\\ \therefore A^m_n = n(n-1)(n-2)\dots (n-m+1)\\ 又\because n!=n\times (n-1)\times (n-2) \dots \times 2\times…

Docker简介及安装

本系列将会与大家分享 Docker 的相关知识。本章主要简要介绍 Docker,并指导大家如何在 CentOS 7 上进行 Docker 的安装。本系列将会与大家分享 Docker 的相关知识。本章主要简要介绍 Docker,并指导大家如何在 CentOS 7 上进行 Docker 的安装。废话不多说,下面我们直接进入主…

C程序设计语言(第2版新版)练习题1-9

练习1-9 编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。#include <stdio.h>int main(int argc, char *argv[]) {(void)argc;(void)argv;int c;int c_last = \0;while((c = getchar()) != EOF) {if (( != c) || ( != c_last)) {putchar(c);}c…

C# .NET CORE 知识点总结【基础篇】

心之所向,勇往直前!记录面试中的那些小事。面试题只是一道门,最好还是走进屋里看看。正文 结语本篇到此结束,如果有任何疑问或者指正,请发表在评论区。

相遇(容斥+最短路+分类,水紫)

第5题 相遇 查看测评数据信息给定一个有n个节点m条边的无向图,在某一时刻节点st上有一个动点a, 节点end上有一个动点b, 动点a向节点end方向移动,要求是尽快到达end点,与此同时,动点b向节点st方向移动,要求是尽快到达st点, 但是整个过程中a和b不能相遇,问两点不相遇一…

NYX靶机笔记

NYX靶机笔记 概述 VulnHub里的简单靶机 靶机地址:https://download.vulnhub.com/nyx/nyxvm.zip 1、nmap扫描 1)主机发现 # -sn 只做ping扫描,不做端口扫描 nmap -sn 192.168.84.1/24 # 发现靶机ip为 MAC Address: 00:50:56:E0:D5:D4 (VMware) Nmap scan report for 192.168.…

VS2022 Visual Studio Installer 一直卡在0%,或者下载速度慢的问题解决办法

vs2022 installer,安装失败的问题C:\Users\Administrator\AppData\Local\Temp到c盘查看日志,发现是下载一个叫 vs_installer.opc的东西失败了,直接复制日志里的https://aka.ms/vs/17/release/installer,下载,发现成功下载,然后放到installer安装器同级目录,重新打开setu…