这里记录的是这个账号的比赛情况。

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的更多相关文章

  1. 【赛时总结】 ◇赛时·II◇ AtCoder ABC-100

    ◆赛时·II◆ ABC-100 ■唠叨■ ABC终于超过百场比赛啦(毫不犹豫地参加).然后莫名其妙的好像是人很多,评测慢得不可理喻.然后我就--交了一大发--错误程序--然后B题就没了.最后的D题居然 ...

  2. AtCoder Beginner Contest 104

    A - Rated for Me Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement A ...

  3. HDU2639Bone Collector II[01背包第k优值]

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  4. HDU 3639 Bone Collector II(01背包第K优解)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  5. Bone Collector II

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...

  6. hdu 2639 Bone Collector II

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  7. Bone Collector II(HDU 2639 DP)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  8. HDU 2639 Bone Collector II(01背包变形【第K大最优解】)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. AtCoder Beginner Contest 073

    D - joisino's travel Time Limit: 2 sec / Memory Limit: 256 MB Score : 400400 points Problem Statemen ...

  10. 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 ...

随机推荐

  1. linux 安装mysql8.0.11

    1.使用系统的root账户 2.切换到/use/local 目录下 3.下载mysql ?wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysq ...

  2. C#第一个helloworld程序

    1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 usin ...

  3. 取消掉远程桌面mstsc顶部(侧面)连接栏

    在进行mstsc远程桌面连接电脑或者虚拟机的时候,总是会出现一个连接栏.虽然点左边的图钉可以自动隐藏,但是每次鼠标滑到上面的时候,还是会冒出来,这个就有点闹心了. 查了下相关资料,解决了,特写下相关教 ...

  4. 【直播回顾】OpenHarmony知识赋能六期第一课—OpenHarmony智能家居项目介绍

    6月16日晚上19点,知识赋能第六期第一节课 <OpenHarmony智能家居项目介绍> ,在OpenHarmony开发者成长计划社群内成功举行. 本次直播是"OpenHarmo ...

  5. [一本通1700]PFS集合

    题目描述 有一种特殊的集合叫做PFS(Prefix Free Set)集合. 一个PFS集合由若干字符串构成,且不存在一个字符串是另一个字符串的前缀.空集也被看作是PFS集合. 例如 {\(" ...

  6. 掌握 Spring IoC 容器与 Bean 作用域:详解 singleton 与 prototype 的使用与配置

    在您的应用程序中,由 Spring IoC 容器管理的形成其核心的对象被称为 "bean".一个 bean 是由 Spring IoC 容器实例化.组装和管理的对象 这些 bean ...

  7. 华为Push用户增长服务:精准触达,加速增长

    速戳了解华为Push用户增长服务:通过精细化运营,助力开发者高效实现用户增长,提升用户活跃度和粘性! 合作咨询请点此链接 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移 ...

  8. 生成 MFC ActiveX (OCX)时,报错:MSB801:未能注册输出

    我们在生成 ocx 控件时,报错:MSB801:未能注册输出,如下图: 解决方法: 1.打开 项目属性 -> 链接器 -> 常规  :  逐用户重定向 改为  是 2. 重新生成 如果此时 ...

  9. 【VMware vCenter】使用Reduced Downtime Update (RDU)升级更新vCenter Server。

    Reduced Downtime Upgrade (RDU) 减少停机时间更新是用于vCenter Server更新升级的一种新的方式,顾名思义,主要目的就是为了减少在vCenter Server更新 ...

  10. How Python Handles Big Files

     The Python programming language has become more and more popular in handling data analysis and proc ...