当前位置:网站首页>2022.8.2 模拟赛
2022.8.2 模拟赛
2022-08-05 06:42:00 【aWty_】
T1 取石子
我们就让甲先行动一步,则会产生先拿 a a a 和先拿 b b b 两种结果。这样问题就转化成了总数为 n − a n - a n−a 或者 n − b n - b n−b,乙先手问后手是否必败。我们令 f i f_i fi 表示石子数位 i i i 时先手是否必胜,则有:
f i = 1 − ( f i − a ∨ f i − b ) f_i = 1 - (f_{i - a} \lor f_{i - b}) fi=1−(fi−a∨fi−b)
这样直接递推显然不行,所以我们考虑找找规律。打表发现 f f f 时循环的,所以我们考虑证明 f f f 循环的性质(循环节时 a + b a + b a+b)。
这个循环其实也挺显然的,要证循环那么就是证明 f a + b + i = f i f_{a + b + i} = f_i fa+b+i=fi,那么分两种情况,如果 f i = 0 f_i = 0 fi=0,那么后手必胜,那么在局面为 a + b + i a + b + i a+b+i 的时候只要乙和甲拿相反的东西就能让局面回到 f i f_i fi,于是还是后手必胜: f a + b + i = f i = 0 f_{a + b + i} = f_i = 0 fa+b+i=fi=0。 f i = 1 f_i = 1 fi=1 的情况同理。
于是我们可以在最开始把 n n n 模上 a + b a + b a+b,然后再进行处理(下文的 n n n 都是进行过取模操作之后的 n n n)。
我们不妨设 a > b a > b a>b,在我们会发现,先手必胜的条件首先一个先显然的就是 n > max ( a , b ) = a n > \max(a, b) = a n>max(a,b)=a,因为先手可以拿走 a a a,又因为 n ∈ [ a , a + b ) n \in [a, a + b) n∈[a,a+b),所以剩下的数等于 n − a ∈ [ 0 , b ) n - a \in [0, b) n−a∈[0,b),所以乙就不可能拿走任何东西了。
所以,条件一: n ∈ [ a , a + b ) n \in [a, a + b) n∈[a,a+b)。
还有一个条件是 n ∈ [ b , 2 b ) ∪ [ 3 b , 4 b ) ∪ [ 5 b , 6 b ) ∪ ⋯ n \in [b, 2b) \cup [3b, 4b) \cup [5b, 6b) \cup \cdots n∈[b,2b)∪[3b,4b)∪[5b,6b)∪⋯,也就是 n ∈ [ ( 2 k − 1 ) b , 2 k b ) , k ∈ N ∗ n \in [(2k-1)b, 2kb), k \in N^* n∈[(2k−1)b,2kb),k∈N∗,因为此时 n < a n < a n<a,所以双方都只能拿 b b b,所以只要是奇数个 b b b 就一定是先手赢。
所以第二个条件 ⌊ n b ⌋ m o d 2 = 1 \lfloor\frac n b\rfloor \mod 2 = 1 ⌊bn⌋mod2=1
这样就是 O ( 1 ) O(1) O(1) 判断,然后我们就可以 O ( T ) O(T) O(T) 解决问题了。
T2
考试的时候写的二分答案,结果 W A WA WA 了,二分答案的正确性不能保证:
h a c k hack hack: 100 , 90 , 84 , 55 , 47 , 44 , 41 , 41 , 30 , 30 , 5 100, 90, 84, 55, 47, 44, 41, 41, 30, 30, 5 100,90,84,55,47,44,41,41,30,30,5
w = 189 w = 189 w=189 的时候第一次 100 + 84 + 5 = 189 100 + 84 + 5 = 189 100+84+5=189,第二次 90 + 55 + 44 = 189 90 + 55 + 44 = 189 90+55+44=189,第三次 47 + 41 + 41 + 30 + 30 = 189 47 + 41 + 41 + 30 + 30 = 189 47+41+41+30+30=189。
w = 190 w = 190 w=190 的时候第一次 100 + 90 = 190 100 + 90 = 190 100+90=190,第二次 84 + 55 + 47 = 186 84 + 55 + 47 = 186 84+55+47=186,第三次 44 + 41 + 41 + 30 + 30 = 186 44 + 41 + 41 + 30 + 30 = 186 44+41+41+30+30=186,第四次 5 5 5。
这样就不是单增的了,所以二分答案的正确性无法保证。但是为什么是错的呢,是因为每次装是贪心的装而不是 d p dp dp(背包)的装法,所以会首先把大的放进去,导致下一次有小的放不进去,会浪费空间。
虽然不能直接二分答案,但是我们可以找到替代方案,我们可以证明对于 A = max i = 1 n a i A = \max\limits_{i = 1}^n a_i A=i=1maxnai, w + A w + A w+A 一定比 w w w 更优。因为在这种情况下,每一条船所装的袋数均不会下降。
所以我们可以在二分答案过后再暴力验证答案周围的 A A A 个位置来确保是正确的。
T3
不知道为什么今天有两道循环的题。
看这个数据范围 k ≤ 1 e 9 k \leq 1e9 k≤1e9,似乎也没有什么算法能 hold 的注这个数据范围(除了一些 O ( log n ) O(\log n) O(logn) 的小算法),所以我们还是打表找规律。
我们发现其中有 20 p t s 20pts 20pts 是 n = 1 n = 1 n=1 的时候,所以我们稍微手算几个自己造的样例就会发现 n = 1 n = 1 n=1 的时候是会循环的,就比如:
4 → 3 , 1 → 2 , 2 → 2 , 1 , 1 → 3 , 1 → ⋯ 4 \to 3, 1 \to 2, 2 \to 2, 1, 1 \to 3, 1 \to \cdots 4→3,1→2,2→2,1,1→3,1→⋯
所以我们考虑证明循环的正确性:
因为石子个数有限,并且产生的所有情况下石子数量和都是固定的数字。又因为显然任意一个数字 m m m 的拆分数是有限的,所以情况数是有限的。所以只要 k k k 足够大,我们就必定会回到以前出现过的情况,也就会产生循环。
现在的问题就在于循环节,如果循环节不是很长的话就可以直接打表了。
然后就要证明循环节长度,但是 T J TJ TJ 的证明是势能分析,然后我也没看懂,所以就不证了吧qwq。具体来说就是先要操作 S = ∑ i = 1 n a i S = \sum\limits_{i = 1}^n a_i S=i=1∑nai 次进入循环节,然后循环节是 m x = max i = 1 n ( i + a i ) − 1 mx = \max\limits_{i = 1}^n (i + a_i) - 1 mx=i=1maxn(i+ai)−1。
T4
考场上暴力都不会打…
边栏推荐
- golang-条件语句
- h5页面回退到微信小程序并携带参数
- [instancetype type Objective-C]
- RK3568 environment installation
- 软件测试必问面试题(附答案和解析)
- AH8669-AC380/VAC220V转降5V12V24V500MA内电源芯片IC方案
- Put Cloudflare on the website (take Tencent Cloud as an example)
- 蓝牙gap协议
- 怎么样避免线上内存泄漏
- It turns out that Maya Arnold can also render high-quality works!Awesome Tips
猜你喜欢

RNote108---Display the running progress of the R program

【2022 DSCTF决赛wp】

DNSlog外带数据注入

typescript61-泛型工具类型(pick)

typescript60-泛型工具类型(readonly)

MySQL: JDBC programming

2022杭电多校六 1007-Shinobu loves trip(同余方程)

(2022杭电多校六)1010-Planar graph(最小生成树)

Shiny04---Application of DT and progress bar in shiny

Shiny04---DT和进度条在shiny中的应用
随机推荐
Technical Analysis Patterns (11) How to Trade Head and Shoulders Patterns
Database table insert data
腾讯业务安全岗 IDP 谈话总结
MySQL:基础部分
日本卫生设备行业协会:日本温水喷淋马桶座出货量达1亿套
[instancetype type Objective-C]
利用将网页项目部署到阿里云上(ngnix)
【动态类型检测 Objective-C】
【LeetCode】235.二叉搜索树的最近公共祖先
[上海]招聘.Net高级软件工程师&BI数据仓库工程师(急)
17-VMware Horizon 2203 虚拟桌面-Win10 手动桌面池浮动(十七)
After the firewall iptable rule is enabled, the system network becomes slow
2022 Fusion Welding and Thermal Cutting Operation Certificate Exam Questions and Mock Exams
2022起重机司机(限桥式起重机)考试题库及模拟考试
在anaconda Promat界面import torch通过,在jupyter notebook中报错的问题(仅提供思路理解!)
《PyTorch深度学习实践》第十课(卷积神经网络CNN)
今天虚竹哥又发现了一款好用的国产化API工具
AI+视频技术助力保障校园安全,校园智能安防平台该如何建设?
(2022杭电多校六)1010-Planar graph(最小生成树)
golang-条件语句