首页 > 其他分享 >Atcoder试题乱做 Part3

Atcoder试题乱做 Part3

时间:2022-09-26 21:33:26浏览次数:101  
标签:Atcoder 试题 color text sum Part3 mathcal 复杂度 leqslant

最后一年了, 一年不到, 为了可爱的学长们, 为了自己, 要拼命了啊.


\(\text{[AGC048D]Pocky Game}\)

\(\color{green}{\text{[EASY]}}\)

怎么这都做不出来, 废物啊.

显然石子越多赢面越大, 看到这个范围就想到区间 \(dp\) .

那么可以设 \(f_{i,j}\) 表示剩下 \([i,j]\) 时, 左边先手, \(a_i\) 至少要为多少才能获胜, 类似的定义 \(g_{i,j}\) .

考虑怎么转移, 以 \(f_{i,j}\) 为例, 如果拿完这样一堆就赢, 即 \(g_{i+1,j}>a_j\) , 那么 \(f_{i,j}=1\) ; 否则就是要两个人一个一个取, 慢慢耗, 如果先手的石子数量小于 \(f_{i,j-1}\) 时, 后手全拿完就赢了, 同理如果后手的石子数量小于 \(g_{i+1,j}\) 时先手全拿完就赢了. 先手一共会拿 \(a_j-g_{i+1,j}+1\) 轮, 也就是至少需要这么多的石子, 同时还要保证后手无法胜利, 所以 \(f_{i,j}=f_{i,j-1}+a_j-g_{i+1,j}+1\) .

时间复杂度 \(\mathcal{O}(Tn^2)\) .


\(\text{[ARC141D]Non-divisible Set}\)

\(\color{blue}{\text{[NORMAL]}}\)

很套路, 小奥套路, 被爆杀了.

\(1\) 到 \(2m\) 之间, 有 \(m\) 个奇数, 所有的数都可以以这些奇数为底乘上 \(2\) 的幂次构成一个等价类, 显然一个等价类里要选一个.

接下来就更套路了, 一个等价类能选的一定是一个连续的段, 考虑一个冲突, \(a=kb\) , 其中 \(a\) 和 \(b\) 为等价类的奇数基底代表, \(k\) 为一个正整数, 那么 \(b\) 等价类中选的数一定大于 \(a\) 等价类中选的数.

那么我们可以贪心的取得每个等价类的上界和下界, 时间复杂度 \(\mathcal{O}(n\log{n})\) .


\(\text{[ARC124E]Pass to Next}\)

\(\color{blue}{\text{[NORMAL]}}\)

\(too\; hard\; for\; me\) , 人均会就我不会.

我学会了, \(\prod\limits_{i=1}^{n}{x_i}\) 也有组合意义, 每个人拿一个球出来.

考虑拿出的球是自己的还是上一个人给的, 设 \(f_{i,0}\) 表示第 \(i\) 个人的球是自己的, 考虑前 \(i-1\) 个人的方案数, \(f_{i,1}\) 表示第 \(i\) 个人的球是别人给的, 考虑前 \(i\) 个人的方案数.

\[f_{i+1,0}=f_{i,0}\sum_{j=mi}^{a_i}{(a_i-j)}+f_{i,1}\sum_{j=mi}^{a_i}{1}\\ f_{i+1,1}=f_{i,0}\sum_{j=mi}^{a_i}{j(a_i-j)}+f_{i,1}\sum_{j=mi}^{a_i}{j} \]

\(mi\) 是为了保证 \(\min\{c_i\}=0\) , \(c_i\) 是第 \(i\) 个人给后面人的数量, 注意他是个环所以要处理初始值是 \(f_{1,0}\) 还是 \(f_{1,1}\) .

时间复杂度 \(\mathcal{O}(n)\) .


\(\text{[ARC117F]Gateau}\)

\(\color{red}{\text{[HARD]}}\)

显然可以二分答案, 变成可行性问题, 区间是个半圆, 那限制就相当于对于 \([1,n]\) 的每个位置有个 \([l_i,r_i]\) 的做法.

那我们考虑确定一个位置, 然后贪心放, 假设我们确定了 \(sum_n\) , 贪心策略为,

  1. 如果 \(l_i\leqslant sum_{i-1+n}-sum_{i-1}\leqslant r_i\) , 那么 \((sum_{i},sum_{i+n})=(sum_{i-1},sum_{i-1+n})\) .
  2. 如果 \(sum_{i-1+n}-sum_{i-1}<l_i\) , 那么 \((sum_{i},sum_{i+n})=(sum_{i-1},sum_{i-1}+l_i)\) .
  3. 如果 \(sum_{i-1+n}-sum_{i-1}>r_i\) , 那么 \((sum_i,sum_{i+n})=(sum_{i-1+n}-r_i,sum_{i-1+n})\) .

由贪心策略可知, 只要 \(sum_{n-1}\leqslant sum_n\) , 并且 \(sum_{2n-1}\leqslant x\) , 则合法, 并且如果令 \(sum_1=a,sum_n=b\) , 那么如果 \(a\leqslant a',b\leqslant b'\) , 则 \(sum_{n-1}\leqslant sum'_{n-1},sum_{2n-1}\leqslant sum'_{2n-1}\) .

所以, 当 \(sum_{n}\) 足够大的时候一定能满足 \(sum_{2n-1}\leqslant x\) , 当 \(sum_{n}\) 足够小时 \(sum_{n-1}\leqslant sum_n\) .

再二分即可 \(sum_n\) 即可, 时间复杂度 \(\mathcal{O}(n\log^2{A})\) .


\(\text{[ARC117E]Zero-Sum Ranges 2}\)

\(\color{blue}{\text{[NORMAL]}}\)

如果一层有 \(x\) 个点, 那么该层就有 \(\frac{x(x-1)}{2}\) 的合法方案.

从上层往下 \(dp\) , 并不关注前缀值是多少, 注意到前缀和相等的位置不相邻, 两个位置之间一定是峰或者洞, 洞则下一层一定要填.

记 \(f_{i,j,k}\) 表示从上往下有 \(i\) 个, 形成了 \(j\) 对, 有 \(k\) 个洞, 不算两侧的, 转移考虑枚举下一层加多少数, \(f_{i,j,k}\rightarrow f_{i+x,j+\frac{x(x-1)}{2},x-(k+2)}\) , 转移系数为 \(\binom{x-1}{k+1}\) , 插板法.

答案除了 \(f_{2n,k,0}\) 还有上下两种合并的, \(f_{i,j,l}f_{2n+1-i,k-j,l-1}\) , 时间复杂度 \(\mathcal{O}(n^5)\) .


\(\text{[ARC100C]Or Plus Max}\)

\(\color{green}{\text{[EASY]}}\)

高维前缀和, 记录最大和次大值即可, 时间复杂度 \(\mathcal{O}(n2^n)\) .


\(\text{[ARC078F]Mole and Abandoned Mine}\)

\(\color{green}{\text{[EASY]}}\)

删的边权和最小等于保留边权和最大, 并且 \(1\) 到 \(n\) 的路径上一定都是桥, 路径上的点可以连接一个连通块, 注意到 \(n\) 的范围, 考虑状压.

设 \(f_{S,x}\) 表示目前和 \(1\) 连通的点集为 \(S\) , 并且 \(1\) 到 \(n\) 的路径上最后的点为 \(x\) , 转移考虑练个连通块或者往后延伸路径.

时间复杂度 \(\mathcal{O}(n3^n)\) .


\(\text{[ARC068F]Solitaire}\)

\(\color{green}{\text{[EASY]}}\)

发现序列是 \(V\) 形的, 那删除序列就可以拆成两个可以为空的单调下降序列, 且后面 \(n-k\) 个数的最大值小于两个序列结尾的最大值.

设 \(f_{i,j}\) 表示前 \(i\) 个数较小的结尾的数是 \(j\) 的方案数, 转移考虑下一个数与 \(j\) 的大小关系, 若 \(x < j\) , 则 \(f_{i,j}\rightarrow f_{i+1,x}\) , 若 \(x > j\) , 则 \(f_{i,j}\rightarrow f_{i+1,j}\) .

最后没删的 \(n-k\) 个数有 \(2^{n-k-1}\) 种, 时间复杂度 \(\mathcal{O}(n^2)\) .


\(\text{[ARC088E]Papple Sort}\)

\(\color{green}{\text{[EASY]}}\)

不难知道出现次数为奇数的大于 \(1\) 无解, 不难发现最左和最右配对, 不难想到只移动一个端点.

时间复杂度 \(\mathcal{O}(n\log{n})\) .


\(\text{[ARC101E]Ribbons on Tree}\)

\(\color{green}{\text{EASY}}\)

看到计数和数据范围, 大概猜到是个平方复杂度的 \(dp\) .

先考虑直接容斥 \(\sum\limits_{S\sube E}{(-1)^{|S|}f(S)}\) , 其中 \(f(S)\) 表示去掉 \(S\) 的边集之后匹配的方案数, 一个连通块大小是奇数显然方案数是 \(0\) , 偶数即为 \((siz-1)(siz-2)\cdots3\cdot1\) .

那大概就可以猜出 \(dp\) 状态了, 设 \(f_{i,j}\) 表示以 \(i\) 为根的子树内连通块大小为 \(j\) 的方案数, 带着容斥系数转移, 转移即为背包转移, 特别的, \(f_{i,0}\) 表示断掉 \(i\) 与 \(fa_{i}\) 的父亲边, 有 \(f_{x,0}=-\sum\limits_{i=1}^{siz_i}{f_{x,i}\times g_i}\) .

时间复杂度 \(\mathcal{O}(n^2)\) .


倒计时开始~

标签:Atcoder,试题,color,text,sum,Part3,mathcal,复杂度,leqslant
From: https://www.cnblogs.com/Lonely923/p/16732581.html

相关文章

  • Redis面试题
    为啥快?1.基于内存2.优秀的数据结构,大多数O(1)时间复杂度的命令3.自定义redis协议4.多路I/O复用模型5.单线程,避免线程切换影响持久化方式区别?AOF(保存的是命令)......
  • Python菱形继承(网易面试题)
    菱形继承顾名思义,是一个菱形继承(好像是废话),直接上图  菱形继承就是多继承,例上图所有,A是父类,B和C是A的子类,B和C是D的父类。classParent(object):def__init__(......
  • 你需要知道的webpack高频面试题
    谈谈你对webpack的看法webpack是一个模块打包工具,可以使用它管理项目中的模块依赖,并编译输出模块所需的静态文件。它可以很好地管理、打包开发中所用到的HTML,CSS,JavaScr......
  • 2022新鲜的阿里外包产品经理面试题
    虎哥寄语面试,就是一场博弈,你要在一定的时间内高效的证明你的能力,符合这个岗位需求、符合这个薪资需求、符合面试官个人需求。深度思考一下,对应问题要如何答复,才能既符合自......
  • Vue面试题22:说一说Vue实例在挂载过程中发生了什么 (总结自B站up主‘前端杨村长’视频,仅
    挂载过程中完成了两件最重要的事:初始化(App实例的创建、数据状态的初始化、选项的处理、建立响应式数据等)建立更新机制,把这两件事说清除即可回答范例1.挂载过程指的是ap......
  • golang面试题3
    go基础1、redis部署多节点模式,异步队列2、go-redis和redis-go//go-redis的连接模式,直连哨兵3、go异常处理,异常捕获方式,go里面替代try-catch如何操作4、gomaxprocs的默认......
  • 面试题1
    #第一题(列举了解的编程语言及语言的区别)编译型语言:一次性把代码都编译成二进制,然后运行解释型语言:实时性一行一行,编译一句,运行一句1.python解释型简洁高效,......
  • AtCoder Beginner Contest 270
    AtCoder五十连练第一练AtCoderBeginnerContest270A-1-2-4Test考试有三道题,分别是\(1\)分、\(2\)分、\(4\)分。高桥、青木和Snuke参加了这次考试。高桥得......
  • AtCoder Beginner Contest 270
    A.1-2-4Test水题。B.Hammer分裂讨论。codeC.Simplepath一遍dfs就完了,怎么还有这种搜索题!codeD.Stones观察数据范围,\(O(NK)\)可过。\(dp_i\)表示\(i\)......
  • 2022-09-25-近60道MySQL经典面试题
    近60道MySQL经典面试题mysql面试常见问题学习整理2.3.17.18.19.20.44未看。1.B树和B+树之间的区别是?为什么mysql使用B+树?一个节点有多个元素;B+树也是排序了的;B+树非叶......