hdoj8
hdoj8
3,8,5 -> 6,7,9 -> 1,10,4,2
3. 疯狂的自我搜索者
Ques
题意
Aya 是修车专家,但是有很多彩黑批评她的修车技术还不如劈瓦大师 Amita, Aya 在网上自搜发现有非常多彩黑,她决定将彩黑统统屏蔽。
在接下来 n分钟内,每分钟会出现
Aya 想知道, n 分钟后还剩余多少条彩黑评论没有被屏蔽。
Input
第一行输入一个正整数
对于每一组数据:
第一行输入两个正整数
第二行输入 n 个正整数
数据保证
Output
对于每组数据输出一个整数表示答案。
sample
1 | 1 |
1 | 2 |
Hint
第1分钟出现1条彩黑评论,Aya屏蔽1条彩黑评论,累计剩余0条彩黑评论。
第2分钟出现1条彩黑评论,Aya屏蔽1条彩黑评论,累计剩余0条彩黑评论。
第3分钟出现4条彩黑评论,Aya屏蔽3条彩黑评论,累计剩余1条彩黑评论。
第4分钟出现5条彩黑评论,Aya屏蔽3条彩黑评论,累计剩余3条彩黑评论。
第5分钟出现1条彩黑评论,Aya屏蔽3条彩黑评论,累计剩余1条彩黑评论。
第6分钟出现4条彩黑评论,Aya屏蔽3条彩黑评论,累计剩余2条彩黑评论。
因此答案为2。
Ans
模拟
1 | void solve(){ |
8. 石头的领袖魅力
Ques
题意
有三只关系非常好的企鹅,她们的名字分别是Anon、Tomori、Taki。
Anon在和Tomori玩石子游戏,她们都极度聪明,Anon和Tomori轮流操作,Anon先手,初始时有 x 颗石子,每次操作必须恰好拿走 a 颗石子或者 b 颗石子,无法操作的企鹅将输掉这场游戏。
实际上,Taki正在帮Anon和Tomori的石子游戏准备初始石子,Taki喜欢Tomori,想帮助Tomori获得胜利,因此她想知道至少需要多少颗石子(不能为 0 )可以使得Tomori必定获得胜利?即已知 a,b 的情况下,最小化正整数 x 的值,使得第二位玩家必胜。
Input
第一行输入一个正整数
每组数据第一行输入两个正整数
Output
对于每组数据,在一行中输出一个整数表示答案。
sample
1 | 1 |
1 | 3 |
Ans
初始思路
1 | void solve(){ |
刚开始思维局限了,没意识到其实可以在一开始就卡Anon,并不是一定要过了一轮才开始卡Anon,于是……
题解
1 | void solve(){ |
5. 笑容波状攻击
Ques
题意
定义 0101 串的 mex 为:字符串所有字符中最小未出现的非负整数。例如, mex(”0”)=1,mex(”1”)=0,mex(”1010”)=2 。
定义一个 0101 串的快乐值为,这个 0101 串的所有子串的 mex 之和。
Kokoro 有一个 0101 串,不太聪明的她想知道这个 0101 串的快乐值是多少。
Input
第一行输入一个正整数
对于每一组数据:
第一行输入一个 01 串 s 。
数据保证
Output
对于每组数据输出一个整数表示答案。
sample
1 | 4 |
1 | 3 |
Ans
对于二进制串,字串的mex只有三种取值:
- mex = 0 :子串不含0,即全为1
- mex = 1 :子串不含1,即全为0
- mex = 2 :子串同时含0和1
相较于同时含0和1的子串,只含1和只含0的子串更加容易处理,故而我们令tot记录总子串数n(n+1)/2,s1记录全1的子串数 初始为0,s0记录全为0的子串数 初始为0。则
1 | void solve(){ |
看到第8行代码,于是有人就会说了,主播主播,你这不是字符串吗,为什么for循环的终止条件是i <= n,是不是敲错了
并非,这是竞赛中常见的”哨兵”技巧,让循环多跑一轮 i = n,这个目的是把最后一段给”冲”出来,避免在循环结束后再写一遍同样的处理逻辑。当然,i = n 时,它是直接进else分支里的。
6. 忠犬PARE公
Ques
题解
PAREO 和 CHU
有两个长度分别为 n,m 的数组 a,b ,求 $\sum{i=1}^n \sum{j=i}^m \frac{lcm(a_i,b_i)}{gcd(a_i,b_i)}$ 。
其中
Input
第一行输入一个整数
对于每组数据:
第一行输入两个正整数
第二行输入 n 个正整数
第三行输入 m 个正整数
数据保证
由于输入的数据量非常大,建议使用较快的输入方式,如在C++中关闭同步流。
Output
对于每组数据输出一个整数表示答案对
sample
1 | 2 |
1 | 15 |
Hint
对于第一组样例:
lcm(1, 1) / gcd(1, 1) = 1 / 1 = 1
lcm(1, 4) / gcd(1, 4) = 4 / 1 = 4
lcm(1, 5) / gcd(1, 5) = 5 / 1 = 5
lcm(1, 1) / gcd(1, 1) = 1 / 1 = 1
lcm(1, 4) / gcd(1, 4) = 4 / 1 = 4
1 + 4 + 5 + 1 + 4 = 15
Ans
所需芝士:
gcd/lcm/模运算基础
调和级数枚举
频率数组技巧
线性筛 + 积性函数
狄利克雷卷积/莫比乌斯入门
这边再沉淀沉淀

