ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[噼昂!]探监心得

2021-11-08 23:01:14  阅读:109  来源: 互联网

标签:pmod 32 varphi 噼昂 探监 rm mathcal 心得 equiv


Problem A. 货币兑换 / \(\mathcal{Money}\)

  最贪心的思路显然是每次取当前花费最小的一边,但是暴力做显然会超时。考虑我们这样选造成的后果 —— 两种数字花费的价格一定是差不多的,于是我们可以二分这个“差不多”的价格 \(mid\),每次尽可能将两种货币能换的都换了,不过需要注意,可能最后还有一次兑换没有实现,这次兑换将可能出现在较便宜的那一边,注意特判。事件复杂度 \(\mathcal O(q\log x)\).

Problem B. 格雷码 / \(\mathcal{Matrix}\)

  我他妈直接把 \(\require{enclose}\enclose{horizontalstrike}{\rm BM}\) 拿去给你妈陪葬。 等我线性递推大成的时候,我就可以切这个题了。

Problem C. 优秀的拆分 / \(\mathcal{Number}\)

  当 \(n\) 比较小的时候,我们可以做数位 \(\rm DP\),不过我们会发现,当 \(n\) 变大,答案的位数将会呈几何倍速增长,这个时候再数位 \(\rm DP\) 显然是不合时宜的。

  真的无计可施了吗?我们拿 \(n = 6\) 举个例子,此时 \(n^3=216,n^4=1296\),但是我们注意到,即使填出来的数几乎全是 \(9\),也会有大概 \(\left\lfloor\frac{216}{9}\right\rfloor = 24\) 位,如果我们随意取出三个数位来让他们减去一,那么我们有 \({24\choose 3}=2024>n^4=1296\) 种。即,若 \(n\) 很大,那么最后的答案构造就十分简单了 —— 许多个 \(9\),某些位置是 \(8\),然后,我们就可以根据这个进行构造了。另,

Problem D. 编不出题目 / \(\mathcal{Decrypt}\)

  先搞清楚加密方法:\(t_i\gets k_{i\bmod m}^{s_i}\). 我们不妨任取一个 \(p=4324321\) 的原根 \(G\),那么,其他任意原根 \(g_i\) 都可以表示为 \(G^x\equiv g_i\pmod p\),设 \(k_i\equiv G^{l_i}\pmod p\),显然,有 \((l_i,\varphi(p))=1\),同时加密就变成了:

\[t[i]\equiv G^{l[i\bmod m]\times s[i]}\pmod p \]

  因为再使用下标,字母就小得几乎不可见了,所以这里用 \([\;]\) 表示下标。不妨设 \(t[i]\equiv G^{a[i]}\pmod p\),那么,我们实际上想要解决一系列 \(a[i]\equiv l[i]\times s[i]\pmod {\varphi(p)}|i\in [0,m - 1]\),然后检验 \([m,n]\) 解密之后是否在字母表中。注意到 \(s[i]\) 之间限制的位置都是独立的,我们可以对于每一个 \(s[i]\) 枚举它,然后检验它所管辖的位置反解出来的明文是否合法,由于我们最后的目标区间为 \([32,126]\),而模数限定的区间为 \([0,p)\),如果 \(s[i]\) 是假的,那么很有可能落在目标区间外面,因此,检测的时间复杂度期望为 \(\mathcal O(1)\). 因此精细实现的话,可能还是可以通过。

  不过有些比较有意思的东西,比如空格,其 \(\rm ASCII\) 码为 \(32\),并且 \((l[i],\varphi(p))=1\land 32\mid \varphi(p)\),因此 \(32\mid s[i]\),这就意味着 \(s[i]=32\)(其他 \(32\) 的倍数都不在字符集中),拥有类似性质的还有 \(\tt inh\) 等也有这个性质。我们用这些加快速度,复杂度得以通过。

标签:pmod,32,varphi,噼昂,探监,rm,mathcal,心得,equiv
来源: https://www.cnblogs.com/Arextre/p/15526707.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有