绝了,六道题都差一步想出来或者差一个细节就开始看题解。

CF906D

Link&Submission.

要求 \(a^b\bmod p\),那就要求 \(b\bmod \varphi(p)\)。从这个思路开始往后迭代即可。\(\varphi(p)\) 迭代到 \(1\) 的次数大概是 \(\log p\) 级别的,所以时间复杂度正确。注意扩展欧拉定理的正确运用。具体实现直接往后枚举即可,写成递归可能更简单。

CF1562F

Link&Submission.

发现询问次数和 \(n\) 很接近,那应该考虑找到一个比较特殊的数,对它和序列中所有数进行询问。这个数当然是大质数最好。

如果序列中没有大质数,则长度不会太长,最长大概在 \(90\) 左右。而 \(n\le 100\) 的时候都可以对所有数对做询问,询问之后每次找到还没确定的数中产生的最大 \(\text{lcm}\),它一定是最大的两个数产生的。

如果序列中有大质数,需要找到它。不好准确定位,那就考虑随机化。计算会发现找到的概率还是很大的。先进行 \(4999\) 次随机询问,然后找到回答的最大质因子最大的一次,就可以假设它的最大质因子是我们想要的大质数。再取一个数和这次询问的两个数询问一下,确定哪个是大质数。再做 \(n-1\) 次询问确定所有数即可。

CF1698G

Link&Submission.

会发现问题可以转化成模 \(2\) 意义下的多项式乘法。给定的 \(s\) 序列丢掉低位 \(0\) 就是一个多项式 \(f\),在无穷序列上异或的位置构成另一个多项式 \(g\)。最后要求 \(f\times g=x^n+1\),\(n\) 最小。那也可以写成 \(x^n\equiv 1\pmod f\),这里等号都在模 \(2\) 意义下。对后面这个式子BSGS即可。

CF516E

Link&Submission.

显然只用考虑 \(n,m\) 互质的情况。不互质时除掉最大公约数,注意会有一些 corner case。下面来考虑互质的情形。

假设有一个编号为 \(i\) 的男生开始就快乐,那第 \(i\) 天他让 \(i\bmod m\) 号女生变快乐,第 \(i+cn\) 天他让 \((i+cn)\bmod m\) 号女生变快乐。那么我们可以认为是第 \(i\bmod m\) 号女生用了 \(cn\) 天使得 \((i+cn)\bmod m\) 号女生变快乐。更简单一点,如果 \(j\) 号女生某一天变快乐了,\(j+n\) 天后她会让 \((j+n)\bmod m\) 号女生变快乐。

这时可以类似同余最短路的模型建图,从 \(j\) 向 \((j+n)\bmod m\) 连边权为 \(n\) 的边。这些边构成一个大环,剩下还有一些边:如果 \(i\) 号男生初始快乐,则第 \(i\) 天开始 \(i\bmod m\) 号女生快乐,所以从源点向 \(i\bmod m\) 号女生连边权为 \(i\) 的边;如果 \(i\) 号女生初始快乐,从源点向 \(i\) 连边权为 \(i\) 的边。然后要求源点到所有点的最短路中最长的一条的长度。注意到有一个大环,环上边权相同,剩下的边数目不多,所以按照环上顺序排序求解即可。

CF1225G

Link&Submission.

考虑每个数被除的次数,也就是对最终的 \(1\) 的贡献系数。假设 \(a_i\) 被除了 \(b_i\) 次,则 \(\sum\limits_{i=1}^{n}a_ik^{-b_i}=1\)。要求 \(b_i\in \N\)。

然后会发现如果这样一组 \(b_i\) 存在,就一定可以构造出合法的方式。具体方法是按照 \(b\) 从大到小排序,则最大的两个 \(b\) 值一定一样。取出最大的两个合并,除几次 \(k\) 就把 \(b\) 减掉几,然后插回堆中。重复即可。因为保证了 \(k\nmid a_i\),所以一定是可以的。

问题转化为判定。这时可以状压DP,定义 \(dp_{S,x}\) 表示存在一组 \(b_i\) 使得 \(\sum\limits_{i\in S}a_ik^{-b_i}=x\)。转移方程有两种:\(dp_{S,x}\rightarrow dp_{S+\{i\},x+a_i}\) 和 \(dp_{S,xk}\rightarrow dp_{S,x}\)。第一种可以用 bitset 优化,这样总时间复杂度是 \(O(\frac{n2^n\sum a_i}{w}+2^n\sum a_i)\)。最后输出方案只要倒着 DFS 就行。

CF765G

Link&Submission.

会发现幂次是没用的,只用考虑 \(N'=\prod_{i=1}^{n}p_i\),然后把答案乘上 \(\prod_{i=1}^{n}p_i^{\alpha_i-1}\)。

由中国剩余定理,\(0\) 到 \(N'-1\) 中的数 \(k\) 可以与 \((r_1,r_2,\cdots,r_n),r_i=k\bmod p_i\) 一一对应。这时 \(s_i=1\Leftrightarrow \gcd(k+i,N')=1\Leftrightarrow \forall j,p_j\nmid r_j+i\)。也就是说,确定 \(r_j\) 之后,我们可能可以确定一些 \(i\) 一定满足 \(\gcd(k+i,N')\neq 1\)。

那么就有一个暴力:枚举 \(r_1,r_2,\cdots,r_n\) 的值,维护一个“能否确定不互质”的序列,要求最后这个序列等于 \(s\) 的方案数。这个复杂度显然是逆天的,但是会发现每个大于等于 \(m\) 的质数都至多让字符串的一位确定为 \(0\),所以只用枚举 \(\lt m\) 的质数对应的余数。

但是还是很大,不超过 \(40\) 的质数也不少。好消息是,如果有 \(2\),那么确定模 \(2\) 的余数的时候就可以确定一半,有效状态数不超过 \(2^20\),这启发我们做一个记忆化搜索;坏消息是,如果没有 \(2,3\),状态数还是很逆天。

既然已经这么逆天了,那我们不妨再逆天一点,看看不超过 \(40\) 的质数能不能分开处理。枚举会发现从 \(5\) 搜到 \(23\) 的状态数都不会太大。而当考虑到 \(29\) 的时候,就有一些状态可以合并了——中间 \(18\) 位只用考虑 \(0\) 的个数,它们不会再影响了(以 \(m=40\) 为例)。同样的,考虑到 \(31\) 就可以只考虑中间 \(20\) 位的 \(0\) 的个数。做了这个优化之后状态数显著降低,可以通过。

具体而言,维护一个状态:开头 \(p_1\) 位的具体值,结尾 \(p_2\) 位的具体值,以及中间 \(1\) 的个数。转移是不难的。在考虑 \(29\) 之前,把 \(p_1,p_2\) 分别设为 \(m-29,29\),其它类似。需要一个哈希表来记录状态。

Solution Set - 数论相关的更多相关文章

  1. hdu 2582(数论相关定理+素数筛选+整数分解)

    f(n) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. hdu 2685(数论相关定理+欧几里德定理+快速取模)

    I won't tell you this is about number theory Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  3. <数论相关>逆元专题

    逆元专题推荐这个blog:https://www.cnblogs.com/zjp-shadow/p/7773566.html 逆元问题应用的范围:处理分数模问题.例如求 42/4 + 42/8 + 3 ...

  4. <数论相关>欧几里得与拓展欧几里得证明及应用

    欧几里得算法 欧几里得算法的复杂度为O(log(n)),是一个非常高效的求最大公约数算法. 在这里不证明欧几里得算法的复杂度,有兴趣的可以访问以下链接:http://blog.sina.com.cn/ ...

  5. 【原创】开源Math.NET基础数学类库使用(09)相关数论函数使用

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  6. 开源Math.NET基础数学类库使用(09)相关数论函数使用

    原文:[原创]开源Math.NET基础数学类库使用(09)相关数论函数使用               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...

  7. 【HDU】2866:Special Prime【数论】

    Special Prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  8. 数学相关【真·NOIP】

    数论相关 上来就不会的gcd相关.见SCB他威胁我去掉了一个后缀的blog好了:https://blog.csdn.net/suncongbo/article/details/82935140(已经过 ...

  9. JXOI 2018滚粗记

    --Update5.2 成绩出了,见后文 听说省选VAN写游记是传统,本蒟蒻也来发一篇吧. DAY 0 本来以为省选不在JKFZ举行的结果又是在JKFZ,本校作战感觉终究会是好一些吧,和jyh一起向教 ...

  10. HAOI2017前

    NOIP后想换一个看起来比较高端的博客,于是尝试用github+hexo建站,地址大概是这样的,搞了一周左右.. 最终以失败告终,一是代码高亮有bug,二是数学公式有bug,三是博文没法快速搬迁QAQ ...

随机推荐

  1. FCOSv2:原作的扩展版本,小修小改,性能高达50.4AP | IEEE T-PAMI 2020

    本文是对FCOS的小修小改,最终性能达到了50.4AP,可谓相当强劲了,大家在工程上可以参考其中的改进以及提升方法   来源:晓飞的算法工程笔记 公众号 论文: FCOS: A Simple and ...

  2. 如何使用Java代码混淆技术保护您的应用程序

    摘要 本文探讨了代码混淆在保护Java代码安全性和知识产权方面的重要意义.通过混淆技术,可以有效防止代码被反编译.逆向工程或恶意篡改,提高代码的安全性.常见的Java代码混淆工具如IPAGuard.A ...

  3. HUAWEI DevEco Testing注入攻击测试:以攻为守,守护OpenHarmony终端安全

    OpenAtom OpenHarmony(以下简称"OpenHarmony")作为面向全场景的开源分布式操作系统,可广泛应用于智能家居物联网终端.智能穿戴.智慧大屏.汽车智能座舱. ...

  4. 深入解析 Java 面向对象编程与类属性应用

    Java 面向对象编程 面向对象编程 (OOP) 是一种编程范式,它将程序组织成对象.对象包含数据和操作数据的方法. OOP 的优势: 更快.更易于执行 提供清晰的结构 代码更易于维护.修改和调试 提 ...

  5. 深度剖析 Spring 框架在 Java 应用开发中的优势与应用

    Spring 是用于企业 Java 应用程序开发的最流行的应用程序开发框架.全球数百万开发人员使用 Spring Framework 创建高性能.易于测试和可重用的代码.Spring Framewor ...

  6. java集合源码详解

    一 Collection接口 1.List 1.1ArrayList 特点 1.底层实现基于动态数组,数组特点根据下表查找元素速度所以查找速度较快.继承自接口  Collection ->Lis ...

  7. Tomcat启动闪退的10个解决小技巧

    引言 大家好!在我们日常开发中,使用Tomcat作为Web服务器是相当常见的. 然而,遇到Tomcat启动后立即闪退的问题也不是什么稀罕事. 这种情况可能会让人感到困惑和沮丧,特别是当你急需完成一个项 ...

  8. 抓包整理————tcp 三次握手[九]

    前言 简单抓包一下3次握手. 正文 握手的目标: 同步sequence 序列化 初始化序列化ISN(Initial Sequence Number) 交换tcp 通信参数 如MSS.窗口比例因子.选择 ...

  9. css 去除浮动布局

    前言 在清楚浮动的时候呢,网上有7种,这里只介绍3种,小声哔哔,其他4种都有坑. 正文 第一种: <div class="container"> <div> ...

  10. C# 冻结Excel窗口以锁定行列、或解除冻结

    在处理大型Excel工作簿时,有时候我们需要在工作表中冻结窗格,这样可以在滚动查看数据的同时保持某些行或列固定不动.冻结窗格可以帮助我们更容易地导航和理解复杂的数据集.相反,当你不需要冻结窗格时,你可 ...