Codeforces 1389 题解(A-E)
A. LCM Problem
若\(a < b\),则\(LCM(a,b)\)是\(a\)的整数倍且\(LCM(a,b) \ne a\),所以\(LCM(a,b) \ge 2a\),当且仅当\(b=2a\)时取等号。
根据这个性质,就可以让\(a=l, b = 2l\),如果符合条件就输出,否则无解。
B. Array Walk
这题暴力+贪心做。
根据贪心,答案必定取在在同一个位置左右横跳的情况下。
由于\(z\)的取值很小,所以直接枚举走到第\(i\)个位置之后左右横跳\(c\)次的收益,然后再加上走完剩余步数的收益,取最大值为答案。
注意,剩余步数为\(1\)且\(c<z\)时要考虑向左走的情况。
C. Good String
易得,字符串符合条件\(\Leftrightarrow\)字符串有长度为2的循环节。
然后就暴力枚举循环节,每次遍历一遍字符串计算代价,代价的最小值就是答案。
注意,仅当循环节的两个字符都一样时才可以不完全循环。
D. Segment Intersections
首先,如果\([l1,r1]\)和\([l2,r2]\)相交,那么就可以不耗费步数增加\(I\)。
然后,若两个线段不相交,则耗费一定的步数之后,可以到达两个线段相交的状态。
在两个线段相交但不完全相等的情况下,耗费1步可以使\(I\)增加1,直到两个线段完全相等。
最后,在两个线段完全相等之后,就只能耗费2步使\(I\)增加1。
然后,就是快乐的模拟过程了,优先使用耗费步数低的操作,直到\(I \ge k\)。
UPD: D题代码被叉了,有个地方可能会出现除零错误,现在已经更新成能过的版本了。
E. Calendar Ambiguity
\(y\)月\(x\)号为第\(yd+x\)天,对应星期\((yd+x) \text{ } mod \text{ } w\)。
题目转换成寻找满足\(yd+x = xd+y \text{ } (mod \text{ } w)\)的\((x, y)\)。
移项并化简后得到\((x - y)(d - 1) = 0 \text{ } (mod \text{ } w)\)。
由于\((d-1)\)是常数并且可能包含\(w\)的某些因子,所以可以将用\(w^{\prime}= \frac{w}{gcd(d-1,w)}\)来替代\(w\),从而消除上述公共因子的影响。
现在的式子为\((x - y)(d - 1) = 0 \text{ } (mod \text{ } w^{\prime})\),其中\((d-1)和w^{\prime}\)没有公共因子。由此,只需要找到满足\((x - y) = 0 \text{ } (mod \text { } w^{\prime})\)的\((x, y)\),即\((x-y)\)应为\(w^{\prime}\)的正整数倍。
根据题意,\(x < y\)且\(x,y\)都是符合要求的月份和日期,所以\((x-y) \in [1, min(m,d)]\)。所以,可以枚举\((x-y)\)的值,计算每个对应值对答案的贡献并累加,从而得到最终的答案。
又因为\((x-y)\)应为\(w^{\prime}\)的正整数倍,所以枚举\(i \times w^{\prime}\)即可。
易得,对于固定的\(k=x-y\),\(k\)对答案的贡献为\(min(m,d)-k\)。所以,最终答案为
\]
很明显,这个式子等差,可以用高斯求和公式在\(O(1)\)的时间内计算。
计算过程可能会炸精度,偷懒用了py写。
Codeforces 1389 题解(A-E)的更多相关文章
- codeforces#536题解
CodeForces#536 A. Lunar New Year and Cross Counting Description: Lunar New Year is approaching, and ...
- codeforces 1093 题解
12.18 update:补充了 $ F $ 题的题解 A 题: 题目保证一定有解,就可以考虑用 $ 2 $ 和 $ 3 $ 来凑出这个数 $ n $ 如果 $ n $ 是偶数,我们用 $ n / 2 ...
- Codeforces Numbers 题解
这题只需要会10转P进制就行了. PS:答案需要约分,可以直接用c++自带函数__gcd(x,y). 洛谷网址 Codeforces网址 Code(C++): #include<bits/std ...
- Codeforces 691E题解 DP+矩阵快速幂
题面 传送门:http://codeforces.com/problemset/problem/691/E E. Xor-sequences time limit per test3 seconds ...
- Codeforces 833B 题解(DP+线段树)
题面 传送门:http://codeforces.com/problemset/problem/833/B B. The Bakery time limit per test2.5 seconds m ...
- Codeforces 840C 题解(DP+组合数学)
题面 传送门:http://codeforces.com/problemset/problem/840/C C. On the Bench time limit per test2 seconds m ...
- Codeforces 515C 题解(贪心+数论)(思维题)
题面 传送门:http://codeforces.com/problemset/problem/515/C Drazil is playing a math game with Varda. Let’ ...
- Codeforces 475D 题解(二分查找+ST表)
题面: 传送门:http://codeforces.com/problemset/problem/475/D Given a sequence of integers a1, -, an and q ...
- CodeForces CF875C题解
题解 非常有意思的\(2-SAT\)的题. 听学长讲完之后感觉确实容易想到\(2-SAT\),顺理成章. 显然,对于两个串,对咱们来说有意义的显然是两个串中第一个不同的数字.那么,我们假设两个串分别是 ...
随机推荐
- 都2020年了,你还不知道怎么学习Python吗?
众所周知,Python应用广泛,涵盖后端开发.游戏开发.网络爬虫.网站开发.数据挖掘.科学运算.大数据分析.云计算.人工智能等领域,感觉像神一样的存在.Python这么火,那么从入门到精通学习Pyth ...
- Python turtle库的画笔控制说明
turtle.penup() 别名 turtle.pu() :抬起画笔海龟在飞行 turtle.pendown() 别名 turtle.pd():画笔落下,海龟在爬行 turtle.pensize(w ...
- MyBatisPlus分页查询,删除操作
分页查询 分页查询在网页使用十分之多 原始的limit进行分页 pageHelper第三方插件 3. MP内置的分页插件 导入配置 如何使用,官网的代码如下 //分页插件 @Bean public P ...
- ZooKeeper Watcher 机制
前言 在 ZooKeeper 中,客户端可以向服务端注册一个监听器,监听某个节点或者其子节点列表,当监听对象发生变化时,服务端就会向指定的客户端发送通知,这是 ZooKeeper 中的 Watcher ...
- css如何让子元素在父元素中水平垂直居中
方法一: display:flex <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- Python | 浅谈并发锁与死锁问题
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第24篇文章,我们一起来聊聊多线程场景当中不可或缺的另外一个部分--锁. 如果你学过操作系统,那么对于锁应该不陌生. ...
- 使用Axure设计基于中继器的左侧导航菜单
实现效果: 使用组件: 设计详解: 一.设计外层菜单 1.拖一个矩形,在属性栏中命名cd1,设置宽高为200*45,背景色#393D49,双击设置按钮名称为“默认展开”,字体大小16,字体颜色#C2C ...
- 【算法•日更•第五十七期】快速傅里叶变换(FFT):从入门到放弃
▎一些用的上的东西 小编太菜了,很多东西都不会证明(主要是三角函数还没有学啊~~~). 附上链接https://blog.csdn.net/enjoy_pascal/article/details/8 ...
- 你们要的MyCat实现MySQL分库分表来了
❝ 借助MyCat来实现MySQL的分库分表落地,没有实现过的,或者没了解过的可以看看 ❞ 前言 在之前写过一篇关于mysql分库分表的文章,那篇文章只是给大家提供了一个思路,但是回复下面有很多说是细 ...
- 《Head First 设计模式》:适配器模式
正文 一.定义 适配器模式将一个类的接口(被适配者),转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间. 要点: 适配器实现了目标接口,并持有被适配者的实例. 适配器使用被适配者的方 ...