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

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

「杂题乱刷」AT_abc008_3

题目传送门(at) 题目传送门(luogu) 简单期望。 算法一: 枚举全排列,时间复杂度 \(O(n!)\)。 算法二: 分别求出每一个硬币的期望。为 \((sum/2+1)/(sum+1)\),\(sum\) 为已经翻面的硬币个数,时间复杂度 \(O(n^2)\),可以通过此题。 参考代码: 点 ......
AT_abc 008 abc AT
共860篇  :1/29页 首页上一页1下一页尾页