Competition Set - AtCoder II
这里记录的是这个账号的比赛情况。
ABC310
2023-7-15
Solved:6/8
1973->2053
七场ABC,两场打得蛮烂的,都因为AT炸掉Unrated了;另外五场全部满Perf(2400)。
后面没有Rated的ABC了。这个小号本来就是拿来干这个的,结果一下就没了。考虑一下强行下分?
E(Easy,1261)
定义运算 \(*\) 为: \(0*0=1,0*1=1,1*0=1,1*1=0\)。给定一个01序列,求它的所有子序列从左到右 \(*\) 的结果之和。
Solution:考虑递推,如果第 \(i\) 位是 \(0\),那么以它结尾的所有序列结果和为 \(i-1\);如果是 \(1\),则是 \(i\) 减去前一位的结果。
F(Easy+,1938)
已知 \(x_1,...,x_n\) 分别在 \([1,a_1],...,[1,a_n]\) 中等概率取整数值,求集合 \(\{ x_1,...,x_n\}\) 有一个子集和为 \(10\) 的概率。
Solution:状压DP。设当前考虑到第 \(i\) 位,记录当前是否可以得到 \(0,1,...,10\)。选择大于 \(10\) 的转移统一考虑。
G(Medium,2696)
\(n\) 个人,第 \(i\) 个人每回合把手上所有的球给第 \(a_i\) 个人。\(x\) 在 \(1,...,k\) 中等概率取,问 \(x\) 回合后每个人手上球数的期望。
Solution:显然构成内向树森林。找到环,对每个点,考虑 \(k\) 回合后能不能到环上。如果不能,那么在树上打差分标记;如果能,在环上打差分标记。求和即可。代码不好写,没调出来。
ABC305
2023-6-10
Solved:7/8
1855->1973
G(Easy+,1989)
给定若干长度不超过6的ab串,求有多少个长为n的ab串不以其中任何一个为子串。
Solution:矩阵乘法。没了。
ABC304
2023-6-3
Solved:6/8
Unrated
ABC303
2023-5-27
Solved:6/8
1655->1855
F(Medium,2381)
有一个血量为\(h\)的boss,有若干种攻击,一种攻击会持续若干回合,每回合造成相同的定量伤害。问至少要多少回合才能干掉boss。
Solution:二分答案,口算何时最优。记得用__int128。没了。
ABC302
2023-5-20
Solved:8/8
1200->1655
G(Medium,1891)
给定一个长度为\(n\),只包含\(1,2,3,4\)的数列。每次可以交换任意两个数。求将数列从小到大排序的最小交换次数。
Solution:贪心。将每个位置的初始值与其目标值构成的数对记录下来,总共12种(相同的不用记)。先处理\(cnt_{i,j}\)和\(cnt_{j,i}\),即取它们的\(\min\),加入答案,然后两个值都减去\(\min\)。再类似的处理三元和四元的情况,分别用\(\min\)的两倍和三倍更新答案。
H(Medium,2407)
给定一棵树,每个点上有一个数对。对每个\(v \le 2\),考虑从点\(1\)到点\(v\)的路径,在路径上每个数对中选出一个数,求能够选出不同数字个数的最大值。
Solution:先考虑确定的\(v\)如何求解。一个方法是建图,在每个数对的两个数之间连边。对每个连通块,如果是树,则贡献为点数\(-1\),否则贡献为点数。
因为只用考虑连通块,所以可以用并查集维护。记录下每个并查集内部是否有边即可。
对于原题,以\(1\)为根遍历这棵树,每进入一个点时在它的数对间连边,然后更新答案。回溯时撤销操作,这只需要用一个按秩合并的并查集实现即可。
ABC300
2023-4-29
Solved:7/8
0->1200
F(Medium-,1846)
给定由o和x组成的字符串\(S\)。将\(S\)复制\(m\)遍,然后将其中\(k\)个x改成o,求改完之后连续的o最多可能有多少个。
Solution:贪心。设最多能改完\(t\)个完整的\(S\),考虑三类情况:
最长连续o段包含了\(t\)个完整的\(S\)
最长连续o段包含了\(t-1\)个完整的\(S\)
最长连续o段不包含完整的\(S\)
三种情况都可以预处理前缀和,后缀和,然后用双指针处理。注意判断\(m\)能否使上述情况出现。
G(Medium-,2343)
求不超过\(n\)的数中所有质因子都不超过\(k\)的数的个数。\(k \le 100\)。
Solution:双向搜索。将小于\(k\)的(不超过25个)素数分成两组。先dfs第一组素数能拼出的所有数,记录在一个vector里。然后dfs第二组素数能拼出的所有数,在第一个vector中二分查找即可。
ABC299
2023-4-22
Solved:6/8
Unrated
F(Hard-,2366)
给定字符串 \(S\),求字符串 \(T\) 的数目,使字符串 \(TT\) 是 \(S\) 的字串。
Solution:首先可以想到要尽可能向左边取,才可以使 \(T\) 不重复。
枚举中间的分界点,然后 \(DP\):\(dp_{i,j}\) 表示两个 \(T\) 的结尾分别是 \(i,j\)。转移方程很好写。
这道题的难点在于状态定义。
G(Medium,2088)
给定一个数组,值域为 \(\{1,2,...,m\}\),求它的一个子序列,其是 \(1,2,...,m\) 的一个排列,且字典序最小。
Solution:重复两个步骤:
找到尽可能短的一段后缀,包含需要的所有数。
在上一个选的数到这段后缀的开头之间找到最小数,加入答案序列。
第二步可以直接暴力,能过但能卡。
Competition Set - AtCoder II的更多相关文章
- 【赛时总结】 ◇赛时·II◇ AtCoder ABC-100
◆赛时·II◆ ABC-100 ■唠叨■ ABC终于超过百场比赛啦(毫不犹豫地参加).然后莫名其妙的好像是人很多,评测慢得不可理喻.然后我就--交了一大发--错误程序--然后B题就没了.最后的D题居然 ...
- AtCoder Beginner Contest 104
A - Rated for Me Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement A ...
- HDU2639Bone Collector II[01背包第k优值]
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 3639 Bone Collector II(01背包第K优解)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Bone Collector II
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu 2639 Bone Collector II
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Bone Collector II(HDU 2639 DP)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 2639 Bone Collector II(01背包变形【第K大最优解】)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- AtCoder Beginner Contest 073
D - joisino's travel Time Limit: 2 sec / Memory Limit: 256 MB Score : 400400 points Problem Statemen ...
- AtCoder Beginner Contest 122 D - We Like AGC (DP)
D - We Like AGC Time Limit: 2 sec / Memory Limit: 1024 MB Score : 400400 points Problem Statement Yo ...
随机推荐
- vue2中安装vuex
2022年2月7日,vue3成为默认版本,npm i vue安装的直接就是vue3了 npm i -vuex 安装的是vuex4 vuex4只能在vue3中使用 vue2中,要用vuex3版本,安装 ...
- UE4 c++重构简单死亡之眼的效果
虚幻社区中有蓝图教学视频 使用C++重构,主要用到UGameplayStatics类中的SetGlobalTimerDilation方法,以及角色的相机管理器的调用,之后通过StartCameraFa ...
- #长链剖分#CF208E Blood Cousins
题目 给你一片森林,每次询问一个点与多少个点拥有共同的 \(K\) 级祖先 分析 设\(dp[x][d]\)表示以\(x\)为根节点时深度为\(d\)的个数, 那么\(dp[x][d]=\sum\{d ...
- HTTP协议安全头部的笔记
本文于2016年3月完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 近日项目组对当前开发.维护的Web系统做了AppScan扫描,扫描的结 ...
- OpenHarmony社区运营报告(2023年2月)
本月快讯 • 2023年2月25日,以"技术构筑万物智联"为主题的第一届开放原子开源基金会OpenAtom OpenHarmony(以下简称"OpenHarmony& ...
- DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
遍历是指通过或遍历节点树 遍历节点树 通常,您想要循环一个 XML 文档,例如:当您想要提取每个元素的值时. 这被称为"遍历节点树". 下面的示例循环遍历所有 <book&g ...
- 编译opencv: Linux编译opencv
opencv官网:https://opencv.org/releases/ github下载地址:https://github.com/opencv/opencv/releases mkdir ...
- MogDB-opengauss中的聚集与分组操作
MogDB/opengauss 中的聚集与分组操作 COUNT:对结果集中的元组数量进行计数,如果是 COUNT(*),那么会统计所有元组(包括 NULL 值)的数量,如果是 COUNT(colnam ...
- OOM异常类型总结
OOM是什么?英文全称为 OutOfMemoryError(内存溢出错误).当程序发生OOM时,如何去定位导致异常的代码还是挺麻烦的. 要检查OOM发生的原因,首先需要了解各种OOM情况下会报的异常信 ...
- c++ 中const 原理
前言 在c++ 中和别的语言不一样,高级语言是将const编译了,c又不同这里不介绍,而c++ 是实现了. 正文 const 原理 请看一个解析: const a=10; int*p=&a; ...