首页 > 其他分享 >ABC 305

ABC 305

时间:2024-02-08 18:45:10浏览次数:33  
标签:结点 ABC 305 遍历 字符串 保安 节点 dp

题目列表

前三题过水,第四题分类讨论两个端点之间的距离和所在位置是清醒或睡眠 即可。


E

题意:一张图上有一些结点有保安,每个保安有不同的警戒度 \(h_i\),定义 一个结点是安全的 为这个结点可以到达一个保安 \(x\),且距离 \(\leq x\)。

问有多少个安全的结点。

痛失第五题

很简单的思路:从每个保安开始广搜,每多走一个点可以视作警戒度减一。同时在每个点记录到这个点时最大的警戒度。

先把保安按警戒度大小排个序。

然后依次广搜即可。


F

交互题。

初始在一号节点,要通过至多 \(2n\) 次移动到达 \(n\) 号结点,每到一个节点,就会告诉你该节点的相邻节点。

考虑图的深度优先遍历。完整遍历一张图时,一定进入了每个节点恰好一次。同时,除了每次遍历的第一个节点外,一定会从每个节点返回上一个节点一次。所以模拟深度优先遍历,在 \(2n\) 次移动之内必然可以遍历整张图,到达节点 \(n\)。

每次优先向未访问过的节点移动,如果某个节点的相邻节点都被访问过则返回上一个节点,记录每个节点的上一节点模拟即可。


G

题意:给出 \(m\) 个由 ab 组成的长度 \(\leq 6\) 的字符串,求出字符串 \(T\) 的个数,满足:

  1. \(T\) 的长度为 \(n\);

  2. \(T\) 的所有子串都不包含给出的 \(m\) 个字符串。

答案取模。

注意到 \(N\leq 10^{18}\)。


矩阵快速幂。

定义 \(dp[i]\) 为长度 \(i\) 的不包含给定字符串的个数。

考虑 \((dp[i-5],\cdots,dp[i])\) 转移到 \((dp[i-4],\cdots,dp[i+1])\)。
(六个是因为长度 \(6\))

如果不存在任何限制,转移矩阵应该长这样:

\[\begin{pmatrix} 0&1&0&0&0&0\\ 0&0&1&0&0&0\\ 0&0&0&1&0&0\\ 0&0&0&0&1&0\\ 0&0&0&0&0&1\\ 64&0&0&0&0&0\\ \end{pmatrix} \]

左下角的 \(64\) 是因为从 \(i-4\sim i+1\) 共 \(6\) 个位置,一共有 \(2^6=64\) 种字符串,除去最后 \(6\) 长度的,还有前面 \(i-5\) 个。

考虑每一个给出的字符串。对于每一个给出的字符串,

标签:结点,ABC,305,遍历,字符串,保安,节点,dp
From: https://www.cnblogs.com/FLY-lai/p/18012017

相关文章

  • ABC 310
    E\(dp[i][j]\)表示前\(i\)个里有多少个后缀答案为\(j\)。\(if(c[i]=='0')\{\)\(dp[i][0]=1;\)\(dp[i][1]=dp[i-1][0]+dp[i-1][1];\)\(\}\)\(else\{\)\(dp[i][0]=dp[i-1][1];\)\(dp[i][1]=1+dp[i-1][0];\)\(\}\)F......
  • ABC 309
    直接从F开。F三维偏序。把盒子按\(h_i\)排序,离散化,正常跑三维偏序(注意不能相等)。还要处理\(h_i\)相等的情况,可以再把\(h_i\)从大到小排序,然后\(w_i,d_i\)都要求严格大于,如果发现有一种情况是无论\(h_i\)咋排序都可以的,就删掉这种情况。G错排问题的推广。tjtj2......
  • ABC 312
    前三题氵D给定一个由(,?,)组成的字符串。每个?可以设定为任意括号。求有几种设定方法使得整个是合法括号序列。套路,dpE给定\(n\)个两两不相交的长方体,对每个长方体,求有多少个长方体与其有公共面。有一个可以大幅度优化代码麻烦程度的小技巧:因为坐标范围很小,我们直接把......
  • ABC 311
    前四题过水E枚举正方形的上边界所在行。对于第\(i\)行一个没洞的位置\((i,j)\),我们尝试求出以它为右上角的无洞正方形个数。结论:设以\((i,j-1)\)为右上角的无洞正方形边长最大为\(len\),那以\((i,j)\)为右上角的无洞正方形边长最大为\(len+1\)。以\((i,j)\)为右上......
  • [ABC327G] Many Good Tuple Problems 题解
    Description对于一对长度均为\(M\)且元素值在\(\left[1,N\right]\)之间的序列\((S,T)\),定义其为好的当且仅当:存在一个长度为\(N\)的\(01\)序列\(X\),使得其满足如下条件:对于任意\(i\in\left[1,M\right]\),有\(X_{S_i}\neqX_{T_i}\)。给定\(N,M\),求在......
  • AT_abc270_g [ABC270G] Sequence in mod P 题解
    题目传送门前置知识大步小步算法解法递推式为\(x_{n}=(ax_{n-1}+b)\bmodp\),发现可以统一消去\(\bmodp\),只在最后参与计算。以下过程省去模运算。当\(x_{0}=t\)时,则\(n=0\)即为所求。当\(a=0,x_{0}\net\)时,递推式转化为\(x_{n}=b\bmodp\)。若\(b=t\),则......
  • AtCoder-ABC-Ex乱写
    ABC233ExManhattanChristmasTree先将\((x,y)\)变成\((x+y,x-y)\),也就是曼哈顿转切比雪夫,之后曼哈顿距离\(\lek\)的在切比雪夫坐标系下就是一个正方形。用主席树做矩形和,外层套一个二分即可,时间复杂度\(\mathcal{O}(n\log^2n)\)。ABC233Ex#include<bits/stdc++.h......
  • 【多线程例题】使用三个线程,分别可以打印A,B,C。要求实现三个线程协同打印,顺序打印出ABC
    顺序打印-进阶版方法一:三个线程竞争同一个锁,通过count判断是否打印三个线程分别打印A,B,C方法一:通过count计数打印(三个线程上同样的锁,打印一个,召唤所有锁,如果不满足条件,则wait等待,锁自动解锁)方法二:/***有三个线程,分别只能打印A,B和C*要求按顺序打印ABC,打印10次*输出示......
  • ABC335 A~E 题解
    A题目大意输入一个字符串,把这个字符串的最后一位改成4后输出这个字符串。解题思路直接模拟即可AC代码#include<iostream>#include<math.h>#include<time.h>#include<stdio.h>#include<algorithm>#definelllonglonginlinevoidwork(){std::strings;s......
  • ABC240Ex Sequence of Substrings
    题意简述有长度为\(n\)的01串,你现在要选出\(k\)个两两无交子串,使得将\(k\)个子串按照出现位置排序后,后者的字典序严格比前者大。最大化\(k\)。\(\bm{n\le2\times10^4}\)。分析首先的首先观察数据范围可知此题应该是个线性根号对数的时间复杂度首先有个显然的\(O(n......