专栏文章

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
枚举2a2^a,只有a==1a == 1a==2a == 2的数字不会重复,其他情况都重复:
21×b2:2,8,18,32,50,72,98,128,162,200...2^1 \times b^2: 2, 8, 18,32,50,72,98,128,162,200...
22×b2:4,16,36,100,144,1962^2 \times b^2: 4, 16, 36,100,144,196...
23×b2:8,32,72...2^3 \times b^2: 8, 32,72...
所以我们要计算个数 只需要枚举212^1222^2就可以了,直接输出答案即可。
注意要靠long double
方法二:
考虑枚举2a2^a,然后求有多少个满足条件的bb.
  • aa确定时,N=2a×b2bN/2aN = 2^a \times b^2 \rightarrow b \leq \sqrt {N/2^a} , 所以bb的取值范围[1,N/2a][1, \sqrt {N/2^a}]
  • 但是注意一个情况,21×22=8,23×12=82^1 \times 2^2 = 8, 2^3 \times 1^2 = 8,此时数字88被记录了两次,所以需要去重。
  • 重复的原因,若b=2×xb = 2 \times x的形式,则×2\times 2可以移到2a2 ^ a中的aa里。
  • 所以防止重复的计数方法就是bb只能为奇数,把22都归到2a2^a里,即只取[1,N/2a][1, \sqrt{N / 2^a}]内的奇数。

400D

题意:
高桥打算去鱼店买鳗鱼。
他居住的城镇被划分为一个 HHWW 列的网格。每个单元格要么是道路,要么是墙壁。
我们将从上往下数第 ii(1iH)(1 \leq i \leq H)、从左往右数第 jj(1jW)(1 \leq j \leq W)的单元格记为单元格 (i,j)(i, j)
关于每个单元格的信息由 HH 个长度为 WW 的字符串(S1,S2,,SH)(S_1, S_2, \dots, S_H)给出。具体来说,如果SiS_i的第 jj 个字符(1iH)(1 \leq i \leq H)(1jW)(1 \leq j \leq W).,则单元格 (i,j)(i, j)是道路;如果是 #,则单元格 (i,j)(i, j) 是墙壁。
他可以按任意顺序重复执行以下两种操作:
  • 移动到城镇内且为道路的相邻单元格(上、下、左或右)。
  • 选择四个方向(上、下、左或右)中的一个方向并在该方向上进行一次前踢。
    • 当他进行一次前踢时,在他当前所在单元格的该方向上至多 2 步距离内的每个单元格,如果该单元格是墙壁,就会变成道路。
    • 如果至多 2 步距离内的某些单元格在城镇范围外,仍然可以进行前踢,但城镇范围外的部分不会发生变化。
他从单元格 (A,B)(A, B) 出发,想要前往位于单元格 (C,D)(C, D) 的鱼店。
保证他的起始单元格和鱼店所在单元格都是道路。
求他到达鱼店所需的最少前踢次数。
方法一:双端队列代替普通队列:
  • 当边权为 0 时,将对应的节点插入到双端队列的头部。因为边权为 0 意味着走这条边不会增加路径长度,所以优先考虑扩展这些节点。
  • 当边权为 1 时,将对应的节点插入到双端队列的尾部。因为边权为 1 会增加路径长度,所以相对靠后处理。
方法二: 最短路算法

400E

题意:
一个正整数 NN 被称为 “400 数”,当且仅当它同时满足以下两个条件:
  • NN 恰好有两个不同的质因数。
  • 对于 NN 的每个质因数 pppp 整除 NN 的次数为偶数次。更正式地说,使得 (pk)(p^k) 能整除 NN 的最大非负整数 kk 是偶数。
处理 QQ 次查询。每次查询会给你一个整数 AA,请找出不超过 AA 的最大 “400 数”。在本题的数据范围限制下,不超过 A 的 “400 数” 总是存在的。
思路:
埃氏筛法筛质数的时候,记录一下合数是多少个质数的倍数,如果这个合数是22个质数的倍数,那么这个合数一定是两个质数相乘得到的(可能多次相乘)。那么我们可以把这个数的平方放入vector,然后二分求答案;

评论

0 条评论,欢迎与作者交流。

正在加载评论...