题面
另外一组样例
样例来自题面中的汇编教程附带示例, 删去了空行, 懒得编数据了, 所以就没有写读入数据部分.
播放列表从任意位置开始循环播放一次, 给定音高, 求最少歌曲数.
每首歌曲有两个(含)以上音符组成, 均遵循某种大调音阶(major scale).
下面给出题目中的12种大调音阶:
major scale | Root +0 | Root +2 | Root +4 | Root +5 | Root +7 | Root +9 | Root +11 | Root +12 |
---|---|---|---|---|---|---|---|---|
Do | Do | Re | Mi | Fa | Sol | La | Si | Do |
Do# | Do# | Re# | Fa | Fa# | Sol# | La# | Do | Do# |
Re | Re | Mi | Fa# | Sol | La | Si | Do# | Re |
Re# | Re# | Fa | Sol | Sol# | La# | Do | Re | Re# |
Mi | Mi | Fa# | Sol# | La | Si | Do# | Re# | Mi |
Fa | Fa | Sol | La | La# | Do | Re | Mi | Fa |
Fa# | Fa# | Sol# | La# | Si | Do# | Re# | Fa | Fa# |
Sol | Sol | La | Si | Do | Re | Mi | Fa# | Sol |
Sol# | Sol# | La# | Do | Do# | Re# | Fa | Sol | Sol# |
La | La | Si | Do# | Re | Mi | Fa# | Sol# | La |
La# | La# | Do | Re | Re# | Fa | Sol | La | La# |
Si | Si | Do# | Re# | Mi | Fa# | Sol# | La# | Si |
重构一时爽, 构错火葬场
重构的原因很简单: 最近在学Java, 刚好Selenium有Java版本, 所以就有了这个项目.
之前的版本中, 信息采用硬编码, 于是就出现了发出来没删干净的情况, 这次重构把配置文件分离出来了.
代码风格可能不太好, 轻喷
一开始用的是EasyExcel, 但是一直读不到数据, 于是换成了POI
约定: + 我们将生成的两个序列分别称为s和t, 也就是a(0)和a(1) + 我们将s和t的最后一个元素分别称为x和y + 我们将扫描ai过程中的当前元素称为z + 我们将x在z后首次出现的位置称为next(x)
贪心策略I: + z 等于 x 或 y 中某一个, 将 z 分配给相反的子序列, 比如 z == x 时, 将 z 分配给 t 附加在 y 后. 特别的, 如果 z == x == y 时, 任意分配即可
贪心策略II: + 如果 z, x, y 互不相等, 将 z 分配给具有最近的下一个相同值的值后. 说人话就是: 如果 next(x) < next(y), 则 z 附加在 x 后, 否则, z 附加在 y 后
证明: 见官方题解
https://www.luogu.com.cn/problem/P5091
(根据题解可知)这题用欧拉降幂+快速幂解决.
下面开始介绍 温馨提示: 为了您的阅读体验, 请坐和放宽, 等待图片加载完成
公式如下, 证明请自行查阅资料:
公式在膜m意义下成立(才不会说是我打LaTeX的时候忘记加了
已经加上了)
套用上面的公式, 我们现在只需要求出欧拉函数的值即可
判断两段 "程序" 是否等价. 细节参见题面(懒得翻译)
很简单, 递归模拟即可. 你问结果?
当然是喜闻乐见的TLE了.
我们可以发现如下性质: + shuffle中如果是一个常数列, 那么这个shuffle只有唯一确定的排列, 也就是说这个shuffle没有意义 + 遇到contract直接读过去就行, 它也是没有意义的 + sorted和shuffle是相互覆盖的关系, 也就是说, 如果它们相互嵌套, 只要读最外面的就可以了 + 等价的条件是: 两段 "程序" 中所有有意义的shuffle区间相等(不管是位置还是其中的数列)
https://ac.nowcoder.com/acm/contest/9981/E
很显然, 这是一道计算几何题, 我们可以运用高中知识求解.
现在我们来分类讨论, 很显然有以下情况: + r小于等于正三棱锥的内切球半径时, s等0 + r大于等于正三棱锥的外接球半径时, s等于正三棱锥的表面积 > 当r介于二者之间时, 我们设球体被三棱锥的一个面所截得到的圆为O, 又有两种情况: > + O内含于三角形中, 此时根据几何知识求得O的半径再计算面积即可 > + O相交于三角形, 此时要求的面积就是O的面积减去三个弓形的面积, 下面做公式推导
根据某位大佬的反馈, 本题完全暴力也是能过的, 但是我就是想打表. 当然, 只需要打一部分的表就可以了, 我们可以证明当ai >= 10 * d时ai必然可以分解成lucky number的和. 所以我们只需要打到 10 * d 就可以了.
我们设ai = 10 * d + k, 那么显然我们只需要考虑k能否分解了, 令k = x * 10 + y. 当10 * d <= ai < 11 * d时, 十位上就是d, 显然成立. 当ai >= 11 * d时, 我们可以将ai分解成10 * d + y和x * 10 + d, 显然成立.
重构一时爽, 构错火葬场
重构的起因是因为有一天任务计划程序显示0X1但并没有收到邮件,
很显然,
由于忽忽悠的采用了比肩国际一流游戏厂商的极为先进的生物(土豆)供电服务器,
导致经常出现难以预料的情况(喂,
明明是你的脚本鲁棒性不够好嘛).
首先分析需求.
之前的脚本发送的邮件中并没有最后打卡时间, 又由于鲁棒性的不足, 导致并不能完全通过收到邮件来判断是否成功打卡.
同样, 之前的脚本并没有对异常情况的处理机制(没错, 我就是能卡你半个小时), 导致出现异常时不能收到邮件反馈.
历史填报会打开新的标签页, 所以就需要切换标签页.
1 | # 获取当前浏览器的所有标签页 |
接下来就是老套路, 定位元素, 获取值, Xpath走起. 1
table = WebDriverWait(driver, 180).until(EC.presence_of_element_located((By.XPATH, '//*[@id="countTableBody"]/tr[1]/td[1]')))
那么如何获取当前时间呢? 我们可以使用datetime库. 1
today = datetime.datetime.now()