首页 > 其他分享 >随机跳题记录簿 - 1

随机跳题记录簿 - 1

时间:2024-04-05 11:55:50浏览次数:9  
标签:跳题 gcd min cdot sum 打字 记录簿 随机 字典

记符号 \(\circledast\) 表示自己做出来的,\(\circleddash\) 表示贺的。

紫色表示紫色,黑色表示黑色。

P5176 公约数 \(\circledast\)

Description

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{k=1}^p\gcd(ij,ik,jk)\cdot\gcd(i,j,k)\cdot\dfrac{\gcd(i,j)^2+\gcd(j,k)^2+\gcd(i,k)^2}{\gcd(i,j)\cdot\gcd(j,k)\cdot\gcd(i,k)}\\ n,m,p\leq2\cdot10^7 \]

Solution

不知道怎么评上黑的。

发现 \(\gcd(ij,ik,jk)\) 很丑陋。我们知道 \(\gcd\) 的本质是质因数的指数取 \(\min\),那么这个就是

\[\newcommand\I{c_i} \newcommand\J{c_j} \newcommand\K{c_k} \begin{aligned} &\min(\I+\J,\I+\K,\J+\K)\\ =~&\I+\J+\K-\max(\I,\J,\K)\\ =~&\I+\J+\K-(\min(\I,\J,\K)-\min(\I,\J)-\min(\I,\K)-\min(\J,\K)+\I+\J+\K)\\ =~&\min(\I,\J)+\min(\I,\K)+\min(\J,\K)-\min(\I,\J,\K)\\ \to&\gcd(i,j)\cdot\gcd(i,k)\cdot\gcd(j,k)/\gcd(i,j,k) \end{aligned} \]

。一通约分,原式变为

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{k=1}^p\gcd(i,j)^2+\gcd(j,k)^2+\gcd(i,k)^2\\ F(n,m):=\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^2\\ \to p\cdot F(n,m)+m\cdot F(n,p)+n\cdot F(m,p) \]

求 \(F\) 就是机械的 Möbius 反演。直接跳到结果是

\[\sum_{x=1}^n\left\lfloor\frac nx\right\rfloor\left\lfloor\frac mx\right\rfloor\sum_{d\mid x}d^2\mu(x/d)\\ f(x):=\sum_{d\mid x}d^2\mu(x/d)\\ f(p^k)=p^{2k}-p^{2k-2} \]

于是线性筛,然后数论分块。

P4965 薇尔莉特的打字机 \(\purple\circledast\)

Description

有个字符串,接下来要往后打字或退格若干次,但是每次操作都可能失灵,求有多少可能的最终字符串。

串长、操作数 \(5\cdot10^6\)。

Solution

先考虑没有删除。那么这个时候原串没用。

建一个字典树,一开始只有根。一次打字如果不失灵就相当于把当前串往字典树对应字母儿子跳,否则就是留在原地。

那么一次打字就会让所有可能当前串节点往该字母方向复制一份,并均成为可能当前串。(说不明白,语文太差。)

可以发现只这么扩展的话整棵树上每个节点都是可能当前串

我们只关心每次打字之后字典树大小的变化量。考虑记 \(dp_c\) 表示有 \(c\) 这个儿子的节点有多少个。它们不会在打字 \(c\) 时产生贡献。再记录一个字典树总大小就能很好地状态转移了。

然后删除怎么做?发现删除就是向父亲复制一份。那么只有根节点有影响。状态转移一样很简单。注意原串删空了就没法接着删了。

标签:跳题,gcd,min,cdot,sum,打字,记录簿,随机,字典
From: https://www.cnblogs.com/hagasei/p/18115607

相关文章

  • 【leetcode面试经典150题】12.O(1) 时间插入、删除和获取随机元素(C++)
    【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C++语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致)【题目描述】实现RandomizedSet 类:......
  • 随机生成及对拍(未完成 别看 啥也没有)
    点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineinf0x3f#defineINF0x3f3f3f3f#definemst(a,b)memset(a,b,sizeof(a))#defineElaina0constintN=100000000;intrandom(intn){ returnrand()*rand()%n;}intn,m......
  • 【RF分类】基于随机森林进行等级评价,包括20几个评价指标附matlab代码
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • Math类产生随机数后保留一位小数
    需求:将学生成绩保留一位小数问题:如何使用Math.random()产生随机数后,将随机数保留一位小数,同时赋值给double类型的变量实现:Stringscore=newDecimalFormat("#.0").format(Math.random()*101);DecimalFormat的使用_51CTO博客_decimalformatdoublescore=Double.valueOf(......
  • 2024年新算法-冠豪猪优化算法(CPO),CPO-RF-Adaboost,CPO优化随机森林RF-Adaboost回归预
    冠豪猪优化算法(CPO)是一种基于自然界中猪群觅食行为启发的优化算法。该算法模拟了猪群在寻找食物时的集群行为,通过一系列的迭代过程来优化目标函数,以寻找最优解。在这个算法中,猪被分为几个群体,每个群体内的猪会根据当前的最佳解以及群体内部的协作信息来更新自身位置,以期望获得......
  • C语言实现随机游走算法(Random Walks)
    目录前言A.建议B.简介一代码实现二时空复杂度A.时间复杂度:B.空间复杂度:C.总结:三优缺点A.优点:B.缺点:C.总结:四现实中的应用前言A.建议1.学习算法最重要的是理解算法的每一步,而不是记住算法。2.建议读者学习算法的时候,自己手动一步一步地运行算法。B.......
  • maya给模型以及子节点随机染色
    maya给模型以及子节点随机染色 importrandomimportmaya.cmdsaspydefmaterial1():sel=py.ls(sl=True)ifsel!=[]:forobjinsel:myShade=py.shadingNode('lambert',asShader=True)#printmyShademyShad......
  • C语言rand、srand库函数生成随机数(附时间戳)
    前言:当我们想要用C语言写程序来获取一个随机数时,该如何获取呢?这里我们上百度搜索一下这里就有提到使用rand、srand、time库函数搭配来获取随机数,也许根据其所说我们已经可以获得随机数解决问题,但想问题不能只浮于表面,下面我们来深入认识一下rand、srand、time库函数。一、ra......
  • CAXA2023随机改块色(VS2019 ObjectArx)
    1//改色2voidcmdChangeColorX(boolbRand=true,CAXA::UInt16color_Index=10)3{4CDraft::ErrorStatuses;5CRxDbObjectIdobjID;6CRxDbEntity*pEntity=NULL;7crx_nameen;8crx_pointpt;9//拾取要改色的图元10......
  • PHP关于随机打乱字符串函数str_shuffle会出现重复的问题
        某次在线上排查问题时发现,代码中使用的一个使用str_shuffle随机打乱字符串函数生成的唯一字符出现了重复,导致插入数据库失败。觉得很奇怪,生成随机字符串的方法如下:functionmakeString($len){$char='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS......