首页 > 其他分享 >Codeforces Round 868 (Div. 2)

Codeforces Round 868 (Div. 2)

时间:2023-05-01 19:56:06浏览次数:55  
标签:868 需要 题目 Codeforces 贡献 长度 Div 我们 就是

题目链接

C

核心思路

一定要看清楚题目,题目是要我们最小哦。

首先看可不可抽像为数学表达式,答案肯定是可以的。

x=p1^d1*p2^d2*..*pn^dn;
D=\sum{(d1+1)*(d2+1)*(d3+1)*...(*(dn+1))};
这个D表示的x的约数的个数,这个公式还是很好理解的,需要牢记。
ans=D-n-1;
为什么需要减一呢,因为需要排除约数是1的情况。
这个ans表示的是符合要求的强复合数。
然后我们可以根据不等式放缩可以得到D>=2^n.
所以总的就是2^n-n-1>=0
解得n>=3.
所以只要n大于等于3就肯定会存在强复合数。


接下来就只需要讨论n=1,2的情况了:

  1. n=1的时候肯定是不会成立的,因为只有一个质数。
  2. n=2这个时候发现只有\(p_i^2\)的时候是会成立的。

而题目是要我们分的组最小,所以我们刚开始直接22分组,然后就是33分组就肯定是最优的。

D

核心思路

这个题目属于是回文字符串的构造好题,首先我们需要去想怎么样可以构造出来p=n的答案,我们发现这样子的字符串是符合要求的:aaaaa...。然后想p=3怎么构造(注意这是在长度为n的要求下):其实就是abcabcabc....。我们发现这样子构造出来肯定就是3.

所以我们把最大值和最小值的情况分析出来了,这个题目就简单了。

一定注意观察k的取值范围,这个有很大的用处。

整个构造方法就是拿一段连续的相同的字母凑齐我们需要的贡献,再就是拿abc来补全凑足了贡献之后剩余的长度。
因为我们的k是最多是20,这就给了我们很大的好处。因为这就意味着我们凑贡献每次都可以使用不同的字母就好了。
举一个例子。
aaaabcabc
我们就是拿a来凑足贡献,剩下的就是来补长度的。
aaabcdddbc.
这也是一样的。

但是需要注意的就是我们刚开始处理的时候虽然bc接在a的后面时使用来凑长度的,但是这也有一个很重要的地方那就是当bc第一次出现的时候也会带来2的贡献。所以我们在处理第一段的时候还是需要注意下的。

标签:868,需要,题目,Codeforces,贡献,长度,Div,我们,就是
From: https://www.cnblogs.com/xyh-hnust666/p/17366895.html

相关文章

  • Codeforces 1229B Kamil and Making a Stream
    \(\gcd\)一个性质:对于正整数\(x\),重复\(x\leftarrow\gcd(x,i)\)(\(i\ge0\))直到\(x=1\),\(x\)出现的值个数上限为\(\log_2(x)+1\)证明:考虑到\(x\)是逐渐变小,则在\(x\)变小的情况下,对于\(x=\prod_{i=1}^kp_i^{c_i}\)(\(p_i\\operatorname{为质数}\))中的\(c_i\)......
  • Codeforces Round 869 (Div. 1)
    C根据初中数学知识,恒成立问题考虑未知数x每一项的系数,然后得到(d+1)个等式,根据前两个就可以推出\(s=\frac{b_{d-1}-a_{d-1}}{da_d}\)且\(a_d=b_d\)但是一直不会用题目给的n个点值求出最高的两项系数(或它们的比值),并且怀疑是否把(d+1)个等式全部用到会更好做,然后两个方向分别搞了......
  • Codeforces Gym 103439D - LIS Counting(猜结论+状压)
    一道需要一些猜结论技巧的中档题。首先突破口在于排列长度恰好等于不是额外输入的某个数\(k\)而是LDS与LIS的乘积,这显然启示我们去找一些性质。根据dilworth定理,最长反链等于最小链覆盖,故LIS的长度,就是最少需要的递减数列的个数使得每个元素被覆盖至少一次,而每个递减数......
  • Codeforces Round 869 (Div. 2) A-C
    目录A.Politics思路代码B.Indivisible题意思路代码C.AlmostIncreasingSubsequence题意思路代码A.Politics思路与第\(1\)个人的意见不同的人都要删除代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ intT; cin>>T; while(T--) { intn,m; ci......
  • Codeforces Round 869 (Div. 2)
    Preface一把回到紫名还是很舒服的,D题手比较稳猜了点性质水过主要还是C脑抽了想了挺久才看出来是个丁真题,不然最后过了D之后30min可以看看E的由于要写学校的图论专题所以接下来一段时间的CF补题计划就要先停一停了A.Politics傻逼题,当某个人的串和第一个人有任意一个位置不同......
  • Codeforces Round 823 (Div. 2)C
    C.MinimumNotation思路:我们可以进行的操作时将一个位置的数删除然后在任意位置处添加一个比当前数大1并且小于9的数,所以我们的操作只会让一个数变大,我们统计一个最大值的后缀,贪心的考虑如果当前数的后面有比他小的数的话,我们就需要让这个小的数往前走才能使字典序变小,如果当前......
  • Codeforces Round 867 (Div. 3)
    题目链接E核心思路首先我们先考虑什么情况下是肯定不可以交换成功的:aaabc.比如像这种a的个数超过了我们整个字符串一半的长度就肯定是不可以的。然后剩下的情况肯定都是可以的。然后考虑怎么样可以使得交换次数最小呢:aaaabbccddff。我们发现这组的话我们只需要交换两......
  • codeforces div1A
    A.CircularLocalMiniMax题目翻译:给我们一个数组(循环的也就是1和n是相邻的),我们可以对数组进行任意调序,对于每个数b[i]要求满足b[i]<b[i-1]&&b[i]<b[i+1]或者满足b[i]>b[i-1]&&b[i]>b[i+1]。如果存在就输出yes并且输出构造的序列,否则输出no。思路:我们考虑......
  • Codeforces Round 869 (Div.1 & Div.2) 题解
    2A.Politics因为编号为\(1\)的人一定不会离开,那么最后留下的人一定要和编号为\(1\)的人的所有参数都一致,所以计数即可。#include<bits/stdc++.h>#include<ext/pb_ds/assoc_container.hpp>#include<ext/pb_ds/tree_policy.hpp>#include<ext/pb_ds/hash_policy.hpp>u......
  • Codeforces Round 825 (Div. 2)——B
      #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;#defineendl"\n"inlineintgcd(inta,intb){returnb>0?gcd(b,a%b):a;}inlineintlcm(inta,intb){returna/gcd(a,b)*b;}constint......