multiple small 077d abc

AT_abc243_g [ABC243G] Sqrt题解

题目大意 有一个数列,初始时只有一个数 \(X\)。你可以对它进行一种操作:设末尾的数为 \(Y\),从 \(1 \sim \sqrt{Y}\) 中选一个数加到数列的末尾。如此进行 \(10^{100}\) 次操作,问数列一共有多少种可能的状态。 解法 考虑 DP。 设 \(dp_i\) 表示以数字 ......
题解 243 AT_abc 243G Sqrt

AT_abc243_g [ABC243G] Sqrt题解

题目大意 有一个数列,初始时只有一个数 \(X\)。你可以对它进行一种操作:设末尾的数为 \(Y\),从 \(1 \sim \sqrt{Y}\) 中选一个数加到数列的末尾。如此进行 \(10^{100}\) 次操作,问数列一共有多少种可能的状态。 解法 考虑 DP。 设 \(dp_i\) 表示以数字 ......
题解 243 AT_abc 243G Sqrt

abc097d<并查集,排列>

题目 D - Equals 给出\(1\sim n\)的排列p,给出\(m\)种对换\((p_i, p_j)\),在这\(m\)种对换中任选操作,对原排列对换任意多次。求能够实现的\(p_i = i\)的最大个数为多少? 思路 将m中对换中能够相互关联的位置归为一组,这组位置之间可通过对换操作实现任 ......
abc 097 lt gt

abc096d<素数筛,整除>

题目 D - Five, Five Everywhere 寻找n个素数,使得这n个素数中任意5个数之和都是合数。 思路 如果一个数除5余1,那么5个这样的数之和一定能被5整除; 筛出范围内所有满足上述条件,且为素数的数即可。 总结 如何想到除五余一这一点呢? 首先应思考如何构造合数,想到如果是5个数 ......
素数 abc 096 lt gt

abc095d<思维>

题目 Static Sushi 一个圆桌上摆着n个食物,吃掉每个食物得到一定能量,沿着圆桌任意顺时针逆时针走,每走一米消耗1点能量,求能够得到的最大能量。 思路 一共4种走法: 顺时针走到某位置离开; 逆时针走到某位置离开; 顺时针走,而后走回原点,在逆时针走到某位置,离开; 逆时针走,而后走回原点 ......
思维 abc 095 lt gt

abc094d<组合数>

题目 Binomial Coefficients \(n\)个数中选择两个数作为组合数\(C(m,r)\)的\(m\)和\(r\),使得组合数的值最大。 思路 首先选择最大的数作为\(m\); 其次,对于确定的\(m\),要使得组合数最大,使得\(r\)接近\(\left \lceil \frac{ ......
abc 094 lt gt

abc333F - Bomb Game 2

abc333F - Bomb Game 2 设\(f_{i,j}\)表示在有i个人的队列中,第j个人成为第一个的概率。 \(f_{n,1}=\frac{1}{2}f_{n,n}\) \(f_{n,2}=\frac{1}{2}f_{n-1,1}+\frac{1}{2}f_{n,1}\) ... \(f ......
333F Bomb Game abc 333

abc335F - Hop Sugoroku

abc335F - Hop Sugoroku 首先容易想到\(O(n^2)\)的dp 考虑优化,对于一个i,只会对满足\(i+a[i]*x=j\)的j有贡献。 也就是j%a[i]=i%a[i] 那么我们可以延迟转移,用cnt[a[i]][i%a[i]],来记录贡献, 然后我们数组不可能开那么大,所以 ......
Sugoroku 335F abc 335 Hop

ABC 等多个系统 每个系统下有多个附件

public class Main { public static void main(String[] args) { List<Map<String, String>> systems = new ArrayList<>(); // 系统A Map<String, String> systemA ......
多个 系统 下有 附件 ABC

abc314e<构造,思维>

题目 D - Grid Components 在不超过100×100的方格中染黑白色,使得白色联通块个数为a,黑色连通块个数为b。 思路 固定使用100×100的格子,首先将上半部分全涂白,下半部分全涂黑;此时黑白两色的连通块的个数均为1; 而后在白色区域,在不破坏白色区域白色块联通性的前提下,离散 ......
思维 abc 314 lt gt

ABC335

T1:2023 模拟 代码实现 s = input() print(s[:-1]+'4') T2:Tetrahedral Number 模拟 代码实现 #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n ......
ABC 335

[LeetCode] 1363. Largest Multiple of Three 形成三的最大倍数

Given an array of digits digits, return the largest multiple of three that can be formed by concatenating some of the given digits in any order. If th ......
倍数 LeetCode Multiple Largest Three

ABC332F

ABC332F Random Update Query 题解 AtCoder 在学校打的,切 ABCF 直接摆烂,D 题暴搜调不出来,很难蚌。 给你一个序列 \(a_i\),\(m\) 次操作,第 \(i\) 次将 \([l_i,r_i]\) 区间内等概率随机的一个数修改为 \(x_i\),最后求每 ......
332F ABC 332

ABC335E题解

洛谷题面 感觉有点毒瘤,不过还是有些 trick 在的。 题意翻译(复制于洛谷题面): 给定一个 \(N\) 个点 \(M\) 条无向边的图,图上每个点都有其颜色。求所有经过点权单调不降的路径中,出现的不同颜色的个数最多是多少。 由于是单调不降的路径,所以可以点权大的点到点权小的点的路径对结果没有影 ......
题解 335E ABC 335

[ABC335F] Hop Sugoroku

庆祝一下我第一次赛时 AC 了 F 题(鼓掌)。 这道题第 1 秒就可以看出是道 dp 的题,并且状态肯定是 \(dp[i]\) 表示最后一个黑色块在 \(i\) 的状态的个数。问题无非在于如何转移状态。 很容易想到两种转移方法: 暴力转移法:对于每一个 \(i\),我们直接暴力将每一个 \(i+a ......
Sugoroku 335F ABC 335 Hop

[ABC329E] Stamp 题解

正难则反。 直接往上覆盖不好做,那么可以考虑把字符从 \(S\) 上往下删。删的过程就是在 \(S\) 中找 \(T\) 并把他们变成 #。如果 \(S\) 中有字符为 #,那我们可以把它看成任意字符,因为向上贴的过程中有重复覆盖的情况,在删的时候我们并不知道他是否重复了,所以当成任意字符来看即可( ......
题解 Stamp 329E ABC 329

[ABC331F] Palindrome Query 题解

思路 判断一个字符串是否是回文串,可以从它的本质出发:正着读和倒着读是一样的。快速判断它正着和反着是否一样,用字符串哈希即可。又因为涉及单点修改,区间查询,那么使用线段树维护这两个值就行了。 这里讲一下如何 pushup。以正着的哈希值为例:我们要更新 \(p\) 这个点的 \(hash\) 值,已 ......
题解 Palindrome Query 331F ABC

[ABC178C] Ubiquity 题解

题意 有一个长为 \(n\) 的数列 \(a_1,a_2,...,a_n\) ,其中对于每个 \(a_i\) 都有 \(0 \le a_i \le 9\) ,并保证数列中至少有一个 \(a_i\) 为 \(0\) 且至少有一个 \(a_i\) 为 \(9\) 。输入 \(n\) ,输出满足条件的序列 ......
题解 Ubiquity 178C ABC 178

[ABC232E] Rook Path

题意 在象棋棋盘上有一个车,它的位置是 \((x1,y1)\),求车从此处到达 \((x2,y2)\) 有多少种情况。 思路 明显的组合数学与 DP 题。 最最最先,一定要明确一个概念,车可以横向或竖向移动到当前列或行的任意一个(除去它本身现在的位置),但不可以斜着移动。 如图所示,\((x1,y1 ......
232E Rook Path ABC 232

[ABC193E] Oversleeping

前置芝士 exgcd 或 excrt。 解法一:exgcd 这道题的说明异常明显,对题目中给出的式子进行计算推导,最终是可以化成 exgcd 中类似于 \(ax + by = \gcd(a, b)\) 的形式的。但是因为我太菜了,不会具体的推导过程与证明,所以可以看看这篇题解。 代码 需要注意的是, ......
Oversleeping 193E ABC 193

[ABC163E] Active Infants

思路 第一次看题很快就能想到贪心。一个大的值无非放到左边和右边,哪边增加的多放到哪边。但是有可能存在两边增加的一样的情况,同时不同的选择会影响以后的数值,所以贪心是错误的。 既然是对后面的数值有影响,那就是明显的 DP。先排个序,从大到小,然后每次先选未选过的最大的,枚举其在左右的两种情况。 DP ......
Infants Active 163E ABC 163

AtCoder_abc335

A、2023 跳转原题点击此:A题地址 1、题目大意 给你一个字符串,要你对该字符串的最后一个字符改为4。 2、题目解析 直接通过string的性质即可,直接更改string的最后一个字符即可。 3、具体代码 #include<bits/stdc++.h> using namespace std; ......
AtCoder_abc AtCoder 335 abc

[ABC335F] Hop Sugoroku 【根号分治】

[ABC335F] Hop Sugoroku 【根号分治】 \(\mathtt {TAGS}\): 根号分治 DP \(\mathtt {APPRAIS}\): 很优美的暴力 DP First. 朴素 DP 这里做一个转化:求不同集合的数量相当与求走到所有点的不同方案数之和。 设 \(dp_i\) ......
根号 Sugoroku 335F ABC 335

[ABC335*] 题解

A 末位改成 '4'。 B dfs。 C 记录每个时刻龙头的位置,查表。 D 将龙盘起来即可。 E 每个点记录 \(1\) 到她的答案 \(f_i\)。 每种值同时转移,每个值相同连通块的 \(f\) 全赋为块内 \(\max f\),然后枚举出边转移到值更大的点。 F 根号分治,典。 G 想到离散 ......
题解 ABC 335

ABC335E 题解

闲话: 赛时想了半天都没有想出来,赛后看了一下非递减才想出来 题意 我们要求一个从 \(1\) 到 \(n\) 的路径,这个路径上点的点权组合成一个数列,这个数列得是非递减的,求这个数列不同整数个数。 分析 很明显,我们要求出一个非递减的路径,那么舍弃掉 \(a_u > a_v\) 的边,因为这些边 ......
题解 335E ABC 335

ABC335

输 E 对于 \((u,v)\): 若 \(a_u = a_v\),则把 \(u\) 和 \(v\) 扔到同一个并查集里 否则连接两个点 然后跑一遍 dp 即可。 code ......
ABC 335

ABC335F根号分治做法

题意翻译: 有 \(N\) 个格子。 你初始在格子 \(1\)。 格子 \(1\) 是染黑的,其他的格子都是白的。 当你在格子 \(i\) 的时候,你可以到达 \(a_i\times x+i,x>0\) 或将该格子染黑。 求所有格子的状态有多少种情况。 首先我们来考虑一下不加优化的 dp。 对于任意 ......
根号 做法 335F ABC 335

ABC335 C - Loong Tracking

ABC335 C - Loong Tracking \(\mathtt{TAG}\): STL,模拟 \(\mathtt{APPRAIS}\):STL の 巧用 前置知识 deque 可以下表 \(O(1)\) 访问。 deque 可以删除队尾队首元素,在队尾队首插入元素。 First. 修改 设 ......
Tracking Loong ABC 335

AT_abc335_a 题解

直接对于输入的字符串进行操作就好了,需要注意的是 string 类型的最后一位是 a.size()-1 而不是 a.size()。 #include<bits/stdc++.h> using namespace std; int main(){ string a; cin>>a; a[a.size( ......
题解 AT_abc 335 abc AT

AT_abc335_b 题解

样是一道水题, \(N \le 21\)? 这么小的数据还在等什么,直接三重循环暴力枚举即可通过此题。 #include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; for(int i=0;i<=n;i++){ for ......
题解 AT_abc 335 abc AT
共957篇  :1/32页 首页上一页1下一页尾页