专栏文章
Atcoder ABC 400
题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mippa7ij
- 此快照首次捕获于
- 2025/12/03 15:43 3 个月前
- 此快照最后确认于
- 2025/12/03 15:43 3 个月前
400C
方法一:找规律
b的平方有1,4 , 9, 16, 25, 36, 49, 64, 81, 100
枚举,只有 和的数字不会重复,其他情况都重复:
...
所以我们要计算个数 只需要枚举和就可以了,直接输出答案即可。
注意要靠long double
方法二:
考虑枚举,然后求有多少个满足条件的.
-
当确定时, , 所以的取值范围。
-
但是注意一个情况,,此时数字被记录了两次,所以需要去重。
-
重复的原因,若的形式,则可以移到中的里。
-
所以防止重复的计数方法就是只能为奇数,把都归到里,即只取内的奇数。
400D
题意:
高桥打算去鱼店买鳗鱼。
他居住的城镇被划分为一个 行 列的网格。每个单元格要么是道路,要么是墙壁。
我们将从上往下数第 行、从左往右数第 列的单元格记为单元格 。
关于每个单元格的信息由 个长度为 的字符串给出。具体来说,如果的第 个字符,是
.,则单元格 是道路;如果是 #,则单元格 是墙壁。他可以按任意顺序重复执行以下两种操作:
- 移动到城镇内且为道路的相邻单元格(上、下、左或右)。
- 选择四个方向(上、下、左或右)中的一个方向并在该方向上进行一次前踢。
- 当他进行一次前踢时,在他当前所在单元格的该方向上至多
2步距离内的每个单元格,如果该单元格是墙壁,就会变成道路。 - 如果至多
2步距离内的某些单元格在城镇范围外,仍然可以进行前踢,但城镇范围外的部分不会发生变化。
- 当他进行一次前踢时,在他当前所在单元格的该方向上至多
他从单元格 出发,想要前往位于单元格 的鱼店。
保证他的起始单元格和鱼店所在单元格都是道路。
求他到达鱼店所需的最少前踢次数。
方法一:双端队列代替普通队列:
-
当边权为 0 时,将对应的节点插入到双端队列的头部。因为边权为 0 意味着走这条边不会增加路径长度,所以优先考虑扩展这些节点。
-
当边权为 1 时,将对应的节点插入到双端队列的尾部。因为边权为 1 会增加路径长度,所以相对靠后处理。
方法二: 最短路算法
400E
题意:
一个正整数 被称为 “400 数”,当且仅当它同时满足以下两个条件:
- 恰好有两个不同的质因数。
- 对于 的每个质因数 , 整除 的次数为偶数次。更正式地说,使得 能整除 的最大非负整数 是偶数。
处理 次查询。每次查询会给你一个整数 ,请找出不超过 的最大 “400 数”。在本题的数据范围限制下,不超过 A 的 “400 数” 总是存在的。
思路:
埃氏筛法筛质数的时候,记录一下合数是多少个质数的倍数,如果这个合数是个质数的倍数,那么这个合数一定是两个质数相乘得到的(可能多次相乘)。那么我们可以把这个数的平方放入vector,然后二分求答案;
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...