首页 > 其他分享 >【题解】ABC300 F,G

【题解】ABC300 F,G

时间:2023-05-03 18:01:02浏览次数:53  
标签:前缀 后缀 题解 ABC300 选择 枚举 直接 其实

F.More Holidays

题目分析:

考虑刻画一下我们选择是什么样子的。
考虑我们最后选择的 \(T\) 中的一段一定是形如:一个完整的 S 选择一个后缀 \(+\) 若干个完整的 S \(+\) 一个完整的 S 的前缀。
这样的话就启示我们直接枚举这个前后缀选择的是什么,然后就可以很快算出来了,但是枚举前后缀是 \(O(n^2)\) 的。
考虑优化,其实枚举两个实在是太亏了,考虑只枚举一个可不可以。
假设我们只枚举第一个 S 的删去哪一个前缀,其实就是选择哪一个后缀,假设这个必须要删去的前缀里有 \(t\) 个 x,那么其实也就是说我们从 T 的前缀里最多选择 \(t + k\) 个 x,询问最多使得多少个 o 联通,这个就是直接二分就可以完成了。

G.P-smooth number

题目分析:

看到 \(P\) 那么小,显然可以想到直接搜出来有哪些素数,然后就是枚举这些素数各自选了多少个。
这样看上去复杂度并不是很劣,因为我们选择的总个数不会超过 \(\log_{2} n\)。
但是其实看一下样例就知道,直接爆搜是不行的,因为最劣有 \(2\times 10^9\) 个答案。
但是看到答案数其实不是很多,所以就其实我们直接记忆化,也就是说对于 \(n\) 比较小的情况的方案数记下来,以后直接用。
大概记到 \(10^6\) 就可以通过这个题了。

标签:前缀,后缀,题解,ABC300,选择,枚举,直接,其实
From: https://www.cnblogs.com/linyihdfj/p/17369457.html

相关文章

  • [POI2005]SAM-Toy Cars 题解(贪心+堆)
    题面首先考虑一个贪心策略:当地板已经放满需要取出一个时,取下一次使用时间\(nxt\)最晚的那个。所以我们只需要一个可以快速求出一个集合中\(nxt\)最小的点并删除,插入新点的数据结构,这里很容易想到堆。代码很简洁,注意数组的下标是位置还是颜色(考场100pts到0pts)。code:......
  • Valhalla Siege 题解
    题目传送门一道二分题。先观察数据范围,\(1\len,q\le200,000\),显然需要\(O(n\logn)\)的复杂度。且\(1\lek_i\le10^{14}\),需要开longlong。我们需要二分到第一个血量大于伤害值的武士的位置,前面的武士都死了。而在C++算法库中,有一个函数upper_bound(底层原理是二分)正......
  • [蓝桥杯 2017 国 C] 合根植物 题解
    题目传送门一道并查集模板题。没什么好说的,先给个并查集模板,神犇可以直接跳过。查找根:intfind_root(intn){if(fa[n]==n)returnn;returnfa[n]=find_root(fa[n]);}合并:voidmerge(intx,inty){intsx=find_root(x),sy=find_root(y);......
  • Cashier 题解
    题目传送门一道贪心题。我们可以记录每一位客人离开的时间,当下一位客人来临时,他们之间空闲的时间就是我们休息的时间。for(inti=1;i<=n;i++){intt,l;cin>>t>>l;ans+=(t-endt)/a;endt=t+l;}最后再加上所有客人都走后的空闲时间......
  • [ABC213D] Takahashi Tour 题解
    题目传送门一道dfs序题。题目中高桥每次只会去最小的那个点,所以要先对整张图进行排序。for(inti=1;i<=n;i++)sort(g[i].begin(),g[i].end());然后考虑dfs。高桥不会走重复的点,所以我们可以开一个vis数组进行标记。然后我们需要处理高桥君如果无路可走会返回上......
  • ABC300E Dice Product 3
    题意初始一个整数为\(1\),你有一个可以等概率地掷出\(1\)至\(6\)这六个数值的骰子,再给定一个整数\(N\),当初始给出的整数严格小于\(N\)时,重复以下操作:掷一次骰子,将初始给出的整数乘上你掷出来的数字。求出最终得到\(N\)的概率模上\(998244353\)的值。思路先判无......
  • Codeforces Round 869 (Div. 2) A-D题解
    比赛地址A.Politics题意:有n个人对m个决案进行投票,对于每一个决案如果票数相同则所有人都离场,反之票数少的一方离场,现在提前知道了每个人的意见,让一些人参与投票,在保证第一个人不离场的情况下最终剩余人数最多是多少Solution把和第一个意见不同的给去掉就行了voidsolve(){......
  • AT_abc106_d [ABC106D] AtCoder Express 2 题解
    题目传送门解题思路区间\(dp\)。划分阶段:以左右城市之间的列车数量为阶段。状态表达:设\(f_{i,j}\)为城市\(i\)与城市\(j\)之间的列车数量。状态转移:由图可知,城市\(l\)与城市\(r\)之间的列车数量,就是城市\(l\)与城市\(r-1\)之间的列车数量与城市\(l+1\)与......
  • CF1817C Similar Polynomials 题解
    可能更好的阅读体验题目传送门Div.1C拉格朗日差值,赛时开香槟。题目大意给定\(d\)次两个多项式\(A(x),B(x)\)。求\(s\),使得\(B(x)\equivA(x+s)\pmod{10^9+7}\),保证\(s\)存在。给出多项式的形式为给出\(x=0,1,\cdots,d\)模\(10^9+7\)的值。\(d\le2.5\times......
  • CF三月D题题解
    cf1798d题意:重排序列,使得其中连续子序列和的绝对值最大的最大值小于序列最大值减最小值,序列和为0考虑这样一种构造方案:正负数分类,0直接不管然后记录当前和sum,当sum非负时,加上一个负数,当sum是负数时,加上一个正数即可正确性证明:显然前缀和都是合法的。考虑计算前缀和数组,满足......