首页 > 其他分享 >CF1886

CF1886

时间:2023-10-16 19:23:47浏览次数:35  
标签:满足条件 le CF1886 覆盖 字符 odot 字符串

A

给你一个正整数 \(n\),问是否存在 \(3\) 个正整数 \(a,b,c\) 满足 \(a+b+c=n\) 且 \(a,b,c\not\equiv 0 \pmod{3}\)。

分类讨论:

如果 \(n \not\equiv 0 \pmod{3}\) :若 \(n\le 5\) 则无解,否则可以拆分成 \(1,2,n-3\)。

否则:若 \(n\le 9\) 则误解,否则拆分成 \(1,4,n-5\)。

思路是尽量先取两个满足条件的最小的数。

Code

B

在一个二位平面内,你要从 \(O\) 点走到 \(P\) 点,给出两点 \(A,B\),你可以以 \(A,B\) 为圆心覆盖半径为 \(w\) 的圆形区域。从 \(O\) 点 \(P\) 点过程中必须在被两圆覆盖的区域内。给出四点坐标,问满足条件的 \(w\) 的最小值。

分类讨论即可:

\(1.\odot A\) 覆盖 \(O,P\) 两点。

\(2.\odot B\) 覆盖 \(O,P\) 两点。

\(3.\odot A,\odot B\) 相切(或相交),\(\odot A\) 覆盖 \(O\) , \(\odot B\) 覆盖 \(P\)。

\(4.\odot A,\odot B\) 相切(或相交),\(\odot A\) 覆盖 \(P\) , \(\odot B\) 覆盖 \(O\)。

注意: float 用 %f ,double 用%lf,long double 用 %Lf

Code

C

比赛的时候楞是没想到是单调栈QWQ。

给定一个字符串 \(s\),每次操作删除其中一个字符,且得到的新字符串 \(s'\)满足字典序在所有可能得到的结果中最小。依次进行 \(n-1\) 次操作,设第 \(i\) 次操作得到的字符串为 \(s_i\),定义字符串 \(t=s+s_1+s_2+...+s_{n-1}\)。给定一个整数 \(p\),输出\(t[pos]\)这一字符。\(|s|\le 10^6\)。

可以发现规律:设 \(s_i\) 满足条件为当前字符串 \(s\) 中字符 \(s_i>s_{i+1}\),则位置最左的满足这一条件的字符 \(s_i\)就会被删去。特别地,如果没有满足条件的 \(s_1\) ,则删除当前字符串的最后一个字符。(不用分类讨论,一开始在 \(s\) 之后插一个比 \(z\) 字典序大的字符即可。)

每次插入一个字符 \(a\) 入栈,若栈顶元素字典序比 \(a\) 大,则弹出栈顶元素,弹到栈为空或满足条件为止,注意每次弹栈都是一次删除操作,需要判断一下,弹栈操作 \(k\) 次之后就不弹了。

Code

D

给定 \(n\) 个整数 \(1\) ~ \(n\)和字符串 \(s\),以一定顺序一次插入到一个集合中,若第 \(i\) 次操作 $(i\ge 2) $插入的数是大于当前集合中的所有数,则 \(s_{i-1}='>'\)
,若小于当前集合中的所有数,则 \(s_{i-1}='<'\),否则 \(s_{i-1}='?'\)。

现在告诉你字符串 \(s\) ,\(m\) 个询问,每次询问修改 \(s\) 中的一个字符使其变为 \(s'\) ,每次回答有多少中操作可以获得 \(s'\) 。

其中 \(2\le n\le 3\times 10^5\) , \(1 \le m \le 3\times 10^5\) 。

orz思维题。

如果将操作倒过来,问题难度就大大减小。即将操作转换为从集合中一次删除数字。可以发现,每次删除当前集合最大值得到 \(>\) , 删除最小值得到 \(<\) ,否则得到 \(?\) 。这跟当前集合中具体由哪些数没有关系。

问题迎刃而解:我们遍历 \(s_i\) ,如果是 \(?\) 则将答案 $\times(i-2) $ 即可。\(O(1)\)修改即可。可以发现如果 \(s_2 = '?'\) 则答案一定为 \(0\) ,特判一下就可以了。

Code

E

给定 \(n\) 个正整数 \(a_1,a_2,...a_n\) ,将其分到 \(m\) 组中,第 \(i\) 组有一个值 \(b_i\),设该组集合大小为 \(k\) ,对于每一个该组的 \(a_i\) 满足 \(a_i\le \lfloor \frac{b_i}{k}\rfloor\) 。

考虑现将 \(a\) 数组排序。对于每一组 \(b_i\) ,可以证明得到在它组内的元素在排序后的数组中一定是连续的。因为我们观察到影响每个组合法性的是这个组 \(a_i\) 的最小值以及元素数量。因此对于不连续的方案,我们都可以改为从最小值依次递增的一段连续区间,这样不会影响该组合法性,也会使其它方案更优。并且我们可以确定最终方案一定是排序后 \(a\) 数组的一个后缀。

因此可以设计状态: $dp_{i} : $ 用 \(i\) 表示选择的组的方案。并且预处理出 \(mn_{i,j}\) ,即第 \(j\) 组从第 \(i\) 位开始可以选择的连续区间的最小值。具体转移见代码。

标签:满足条件,le,CF1886,覆盖,字符,odot,字符串
From: https://www.cnblogs.com/lzaqwq/p/17768155.html

相关文章

  • CF1886A Sum of Three 题解
    Question给定一个正整数N,我们需要找三个不同的整数x,y,z,使得N=x+y+z,其中下x,y,z不能被三整除solution我们把N%3会有一些余数,我们针对余数来讨论,其中我们只关注xyz的余数如果余数为0那么也就可能是1+1+1,或者2+2+2,但是考虑到xyz不同,所以如果\(xyz\%3\)相同的话,\(xyz/3\)......
  • CF1886D Monocarp and the Set
    QuestionsMonocarp有\(n\)个整数和一个集合,他需要把这\(n\)个数添加到集合中,每次添加一次除了第一次,每次添加元素都会输出一个字符如果当前添加的元素比原有的元素都要小,那么输出\(>\)如果当前添加的元素比原有的元素都要大,那么输出\(<\)否则输出\(?\)你给......
  • CF1886C Decreasing String 题解
    题面\(S_n\)由\(S_{n-1}\)去掉一个字母得到,\(S=S_1+S_2+...+S_n\)给定\(S_1\)求\(S\)的第\(N\)位solution我们先考虑怎样去字母能保持字典序最小显然,我们发现如果一个字母比前面那个字母小,那么我们就要删除前面那个字母也就是我们要删除一些字母,保持剩余的字母单调......
  • CF1886B Fear of the Dark 题解
    QuestionMonocarp在一个二维平面上,他的初始点在\(O=(0,0)\),他需要到\(P(P_x,P_y)\)不幸的是,他能走的范围在两个圆内,我们给出了两个圆的坐标\(A=(A_x,A_y)\),\(B=(B_x,B_y)\)两个圆的半径相同,我们需要找到最小的半径让Monocarp能同\(O\)走到\(P\)Solution这题可以......
  • CF1886E I Wanna be the Team Leader
    贪心#动态规划QuestionMonocarp是一家大型IT公司的负责人他有\(m\)个项目个项目需要完成,第\(i\)个项目的难度为\(b_i\)他的团队离有\(n\)个程序员,第\(j\)个程序员的耐受能力为\(a_j\)Monocarp需要分配这些项目,需要满足每个程序员最多分配\(1\)个项目每......