首页 > 其他分享 >AtCoder 比赛记录

AtCoder 比赛记录

时间:2022-08-17 22:13:39浏览次数:97  
标签:dots AtCoder 连通 比赛 记录 复杂度 Rank ge Performance

ARC 140

打得很烂。Rank 590,Performance 1696。

D - One to One

每个点都有恰好一个出边,所以这是一个外向基环森林。因此连通块数就等于环的个数,我们只需要求出所有方案中环的个数的总和。直接算比较难办,考虑算每个环对答案的贡献。

首先,假如忽略掉 \(A_i=-1\) 的连通块,剩下的环是一定存在的,可以预先加到答案里。然后,观察到任意一个点数为 \(k\) 的、由 \(A_i=-1\) 的连通块组成的环,都会出现在 \(n^{c-k}\) 种方案里,其中 \(c\) 是 \(A_i=-1\) 的 \(i\) 的个数。接下来就是要计算出,对于所有 \(k=1,2,\dots,c\),点数为 \(k\) 的环有多少个。

假如我们任取 \(k\) 个 \(A_i=-1\) 的 \(i\),并设它们所在的连通块大小为 \(s_1,s_2,\dots,s_k\),那么这 \(k\) 个连通块可以组成 \((k-1)!\prod_{i=1}^k s_i\) 种不同的环,且这些环上都恰好有 \(k\) 个 \(A_i=-1\) 的位置。所以,可以直接 dp(或者分治 fft)算出环的个数,并求出答案。

时间复杂度 \(\mathcal{O}(n^2)\)(dp)或者 \(\mathcal{O}(n\log^2 n)\)(分治 fft)。

ARC 141

Rank 164,Performance 2313。

A - Periodic Number

我做麻烦了。首先,假如 \(N\ge 99\),一个显然的答案是 \(99\dots 9\)。枚举 \(N\) 的每个前缀 \(N'\),只需要检查 \(N'\) 循环拼接和 \(N'-1\) 循环拼接是否合法即可。

ABC 260

Rank 167,Performance 2305。

G - Scalene Triangle Area

在 \((1,1)\) 处执行一次区域加,会形成如下图形:

++++++
++++00
++0000
000000

二维差分后,得到:

+00000-0
0000-0+0
00-0+000
-0+00000

相当于在 \((u,v)\) 处单点加一,并在两条斜率为 \(\frac{1}{2}\) 的线段上 \(\pm 1\)。线段加减可以再进行一次差分:先将线段的开始位置 \(\pm 1\),并将线段的结束位置后面 \(\mp 1\)。所有操作执行完后,设 \(S_{i,j}\) 表示当前 \((i,j)\) 位置的值,我们从小到大枚举 \(j\),令 \(S_{i,j}\gets S_{i,j}+S_{i+1,j-2}\),也就是斜着做一次前缀和。

最终再做一次二维前缀和即可。时间复杂度 \(O(N^2+Q)\)。

AGC 058

Rank 106,Performance 2722。

A - Make it Zigzag

喜报:我的做法被我自己叉了!

以下是正确做法:

考虑第一个不合法的奇数位置 \(i\),那么有 \(P_i>P_{i+1}\)。

  • 若 \(P_i>P_{i+2}\),则交换 \(P_i,P_{i+1}\);
  • 否则,交换 \(P_{i+1},P_{i+2}\)。

偶数位置同理。每次操作会使得第一个不合法的位置至少后移两位,因此操作次数 \(\le N\)。

B - Adjacent Chmax

对于每个位置 \(i\),设

\[l_i=\max_{j<i\land P_j>P_i} \{j\},\\ r_i=\min_{j>i\land P_j>P_i} \{j\}. \]

现在,问题转化成了:对于每个 \(i\),你可以用 \(P_i\) 覆盖 \((l_i,r_i)\) 中的一段子区间 \([L_i,R_i]\),且你需要保证 \(\forall i>1,L_i=R_{i-1}+1\)。问最终能得到多少种不同的序列。

设 \(f_{i,j}\) 表示用 \(P_{1\dots i}\) 覆盖长度为 \(j\) 的满足上述条件的序列,能得到多少种不同的序列。直接转移即可,时间复杂度 \(O(N^2)\)。

D - Yet Another ABC String

考虑容斥。将 \(S\) 划分为极长的 ABCABC... 的子串,设其中有 \(k\) 个长度 \(\ge 3\) 的段,令其容斥系数为 \((-1)^k\)。

枚举 \(k\),我们要计算满足上述条件的字符串个数。若 \(S\) 开头的段长度 \(\ge 3\),那么 \(S\) 开头填 ABCBCACAB 均可。对于在中间的一段,因为我们需要保证每段都是极长的,所以这个段的开头三个字符只有两种填法。若开头的长度 \(\ge 3\),方案数为 \(3\times 2^{k-1}\times \dbinom{a+b+c-2k}{\begin{matrix} a-k & b-k & c-k & k\end{matrix}}\);对于另一种情况,计算是类似的。

时间复杂度 \(O(a+b+c)\)。

标签:dots,AtCoder,连通,比赛,记录,复杂度,Rank,ge,Performance
From: https://www.cnblogs.com/alan-zhao-2007/p/atcoder-contest.html

相关文章

  • CF 做题记录
    CF1360DBuyingShovels*1300link:Problem-1360D-CodeforcesAC:Submission#167227323-CodeforcesCF1338A PoweredAddition*1500link:Problem-1338A-Codefo......
  • xxljob 注册器为空问题记录
        使用xxljob做定时任务,下午有同事说开发环境一直在报异常:        一直报某个url链接不上。   就想着先用本地也测试一下,结果发现本地启......
  • 白云项目SQL语句记录
    赋值语句相关成果输出相关一、封面无相关SQL语句,直接从【使用权宗地】读取。二、地上附着物清点汇总表1.与宗地关联关系SYQZDATTR.ZDYBH=白云区地上附着物测绘......
  • 记录vue3
    <template><div><divclass="content"><!--面包屑--><divclass="breadcrumbs"><span><span@click="goGoodsList">数字商......
  • 服务器部署 Vue 和 Django 项目的全记录
    本篇记录我在一个全新服务器上部署Vue和Django前后端项目的全过程,内容包括服务器初始配置、安装Django虚拟环境、pythonweb服务器uWSGI和反向代理Nginx的使用,......
  • unityprofiler各记录函数
    EarlyUpdate.UpdatePreloadingLoading.UpdatePreloading:在异步加载/卸载场景,异步加载AssetBundle,加载AssetBundle中的Asset,加载Resource文件夹中资源,调用UnloadUnusedAss......
  • 记录一个i变量引发的事故
    概述近期开发中遇到一个特别的问题,觉得很有必要与你下来。就是由于在开发中一个很小的疏忽,导致了很大的问题,是什么呢?现象我的程序突然引发了v8内部的错误,提示都是c++的,......
  • 记录:excel导入导出js-xlsx,处理合并
    效果前情提要后端传excel坐标数据,前端自己处理模板,找资料后,选择直接载入xlsx方式。准备工作npmixlsximport*asXLSXfrom'xlsx'导入提取数据letreader......
  • oracle相关记录
    基于11g安装,仅需注意在口令管理界面,修改sys和system的口令并放开scott账号并设置口令如果使用sqldevelop,需要指定oracle安装目录下的jdk路径plsql的使用:只有32位版......
  • http 请求 Cros 跨域问题记录(转)
    前言当发起请求前端所在的域名跟后端所在域名不在同一个Origin,或者前端请求了不在当前域名下的各种资源,都会有跨域问题。跨域问题主要是在资源提供方配置跨域,即后端服......