abc368 题解

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

A - Cut

题意:

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

思路:

按题意模拟即可。

代码:

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

B - Decrease 2 max elements

题意:

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

思路:

按题意模拟即可。

代码:

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

C - Triple Attack

题意:

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

  • TT+1
  • 将序列中的第一个正整数减去 c
    • T0(mod3),则 c=3
    • 否则 c=1

请问几次操作过后,序列中没有正整数。

思路:

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

代码:

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

D - Minimum Steiner Tree

题意:

给定一颗 n 个节点的树,再给定树上的 k 个点 x1,x2,xk,求包含这 k 个点的最小生成树大小。(1kn2×105

思路:

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

代码:

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

E - Train Delay

不会……

F - Dividing Game

题意:

Anna 和 Bruno 在玩一个游戏。给定一个长度为 n 的序列 a1,a2,,an,每次操作 Anna 或 Bruno 可以选择序列中的一个数,将其变成其因数(但不能不变),请问若 Anna 先手,双方都已最佳方式玩游戏,谁会取胜。(1n105,2ai105

思路:

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

代码:

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

G - Add and Multiply Queries

题意:

你有两个长度为 n 的序列 a,b,你要处理如下 q 次操作(1n105,1q105):

  1. axy
  2. bxy
  3. 有一个变量 T 初始值为 0,依次遍历 i=l,l+1,,r 每次将 vv+aivv×bi。输出 T 最后可能的最大值。

保证第 3 种操作的答案最大为 1018

思路:

最后的条件非常重要,如果 bi1 那么肯定选择将 vv+ai,否则将 vmax(v+ai,v×bi)。后者情况的 bi2,由于 264>1018,我们可以知道最多只有 64bi 大于 1,所以我们可以用 setvector 维护这些 bi 的下标 i,然后在每次查询的时候遍历 setvector 中在 lr 以内的数,对于 bi1 我们需要区间查询 a 数组中某一段区间的和,对于 bi>1 我们可以暴力处理。由于需要单点修改某个数的值,第 1 种操作可以用树状数组维护,第 2 种操作可以用用 setvector 暴力处理。

代码:

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

posted @   liruixiong0101  阅读(241)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示