首页 > 其他分享 >abc368 题解

abc368 题解

时间:2024-08-24 23:17:18浏览次数:7  
标签:atcoder le 题意 题解 jp abc368 contests

切了 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\) 大于 \(1\),所以我们可以用 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 写的,常数巨大)

标签:atcoder,le,题意,题解,jp,abc368,contests
From: https://www.cnblogs.com/lrx-blogs/p/18378453

相关文章

  • CF241B Friends 题解
    是异或粽子的超级加强版,但是本题因为\(m\)很大,不能套用那一题的解法。换一种思路:考虑把\(a_i\)从高位到低位插入0-1Trie之后,二分第\(m\)大,通过第\(m\)大求答案。对于二分的一个值\(x\),枚举每个位置\(i\),在0-1Trie上找与\(a_i\)异或值大于等于\(x\)的值的......
  • qoj8546题解补充
    题解中第二种解法并没有具体解释是如何归纳的(害笔者想了两天两夜),这里给一个证明。考虑答案为(n,n)时,只需要全取max即可,接下来我们从n往n-1归纳,接下来所有位置初始都是取max的情况1:a中的n和b中的n在同一个位置上,我们只需在这个位置上取min即可归纳到n-1,那么接下来我们钦定不会......
  • P7515 [省选联考 2021 A 卷] 矩阵游戏 题解
    DescriptionAlice有一个\(n\timesm\)的矩阵\(a_{i,j}\)(\(1\lei\len\),\(1\lej\lem\)),其每个元素为大小不超过\({10}^6\)的非负整数。Bob根据该矩阵生成了一个\((n-1)\times(m-1)\)的矩阵\(b_{i,j}\)(\(1\lei\len-1\),\(1\lej\lem-1\)),每个......
  • VS2022 Visual Studio Installer 一直卡在0%,或者下载速度慢的问题解决办法
    C:\Users\Administrator\AppData\Local\Temp到c盘查看日志,发现是下载一个叫vs_installer.opc的东西失败了, 直接复制日志里的https://aka.ms/vs/17/release/installer,下载,发现成功下载,然后放到installer安装器同级目录,重新打开setup安装,就成功了打开了,然后会一直正在准备中,......
  • P10933 创世纪 题解
    题目传送门前置知识树形DP解法将\(a_{i}\)向\(i\)连一条有向边,这样就形成了基环外向树森林。设\(f_{x,0/1}\)表示\(x\)不选/选时,以\(x\)为根的子树的最多选择个数,状态转移方程为\(\begin{cases}f_{x,0}=\sum\limits_{y\inSon(x)}\max(f_{y,0},f_{y,1})\\f_......
  • P10957 环路运输 题解
    题目传送门前置知识单调队列/单调栈优化解法在仓库\(1\)和\(n\)之间把环断开,然后复制一倍接在末尾,形成长度为\(2n\)的直线公路,即有\(a_{i}=a_{i+n}(1\lei\len)\)。对于原来环形公路上的任意两座仓库\(i,j(1\lej<i\len)\),代价为\(\begin{cases}a_{i}+a_{j}......
  • Chain Contestant 题解
    前言题目链接:洛谷;AtCoder。最慢的点才跑\(2\)ms的题解确定不看一看?题意简述给定长度为\(n\)的字符串\(s\),其中\(s_i\in\Omega\),求有多少子序列\(T\)满足任意\(x\in\Omega\),其在\(T\)出现的位置为连续一段,当然,对\(998244353\)取模。\(n\leq10^5\),\(|\Omeg......
  • P3547 [POI2013] CEN-Price List 题解
    Description给定一个\(n\)个点\(m\)条边的无向图,边权均为\(a\)。现在将原来图中满足最短路等于\(2a\)所有的点对\((x,y)\)之间加一条长度为\(b\)的无向边。给定\(k\),求点\(k\)到所有点的最短路是多少。\(1\leqn,m\leq10^5\)。Solution首先有个显然的结论是......
  • 洛谷P2440 木材加工 题解
    这是我找到的一篇很久之前为了让我更好理解二分写的详细题解题目链接code:#include<bits/stdc++.h>#defineintlonglong#defineMAXN0x3f3f3f3f3f3f3f3f#defineMINN-0x3f3f3f3f3f3f3f3f#defineMiraiios::sync_with_stdio(0),cin.tie(0),cout.tie(0);usingnamespa......
  • CF939F Cutlet题解
    前置单调队列(没学过或忘了点这里)简化题意有一块牛排,要求对它烹饪\(2n\)秒,可在给定的\(k\)个时间段中将它翻转任意次,使得牛排两面都受到了\(n\)秒的烹饪。状态设计可以发现当总共煮了\(i\)秒,其中一面如果煮了\(j\)秒,自然可以求出另一面为\(i-j\)秒,所以我们可以......