AcWing第15场周赛题解
A. 3826. 青蛙跳
题目链接:https://www.acwing.com/problem/content/3829/
题目大意:略。
解题思路:简单数学题。
示例程序:
#include <bits/stdc++.h>
using namespace std;
int T;
long long a, b, k;
int main() {
cin >> T;
while (T--) {
cin >> a >> b >> k;
cout << (k+1)/2 * a - k/2*b << endl;
}
return 0;
}
B. 3827. 最小正整数
题目链接:https://www.acwing.com/problem/content/3830/
题目大意:略。
解题思路:设 为 整除去最多 个因子 ,同时整除去最多 个因子 的结果。则答案为 。
示例程序:
#include <bits/stdc++.h>
using namespace std;
int T, n, k;
int main() {
cin >> T;
while (T--) {
cin >> n >> k;
for (int i = 0; i < k && n%2==0; i++, n/=2);
for (int i = 0; i < k && n%5==0; i++, n/=5);
cout << n;
for (int i = 0; i < k; i++) cout << 0;
cout << endl;
}
return 0;
}
C. 3828. 行走路径
题目链接:https://www.acwing.com/problem/content/3831/
题目大意:搜索。第一轮搜索判环,第二轮搜索求最大轮次。
解题思路:判断+搜索。这题和第13场周赛的第3题非常相似。
示例程序:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
int _n, _m, n;
char s[maxn][maxn];
int dir[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};
bool in_map(int x, int y) {
return x >= 0 && x < _n && y >= 0 && y < _m;
}
int getid(int x, int y) {
return x * _m + y + 1;
}
bool cango(char a, char b) {
return a=='Q' && b=='W' || a=='W' && b=='E' || a=='E' && b=='R' || a=='R' && b=='Q';
}
vector<int> g[maxn*maxn], r[maxn*maxn];
int in[maxn*maxn], out[maxn*maxn], cnt, f[maxn*maxn];
bool vis[maxn*maxn];
queue<int> que;
void initg() {
scanf("%d%d", &_n, &_m);
for (int i = 0; i < _n; i++) scanf("%s", s[i]);
n = _n * _m;
for (int i = 0; i < _n; i++) {
for (int j = 0; j < _m; j++) {
int u = getid(i, j);
for (int k = 0; k < 4; k++) {
int x = i + dir[k][0], y = j + dir[k][1];
int v = getid(x, y);
if (in_map(x, y) && cango(s[i][j], s[x][y])) {
g[u].push_back(v);
r[v].push_back(u);
out[u]++;
in[v]++;
}
}
}
}
}
int dfs(int u) {
if (f[u]) return f[u];
f[u] = 1;
for (auto v : g[u])
f[u] = max(f[u], dfs(v)+1);
return f[u];
}
int main() {
initg();
// 判断是否存在环
for (int i = 1; i <= n; i++) {
if (!in[i] || !out[i]) {
vis[i] = true;
cnt++;
que.push(i);
}
}
while (!que.empty()) {
int u = que.front();
que.pop();
if (!in[u]) {
for (auto v : g[u]) {
in[v]--;
if (!in[v] && !vis[v]) {
vis[v] = true;
cnt++;
que.push(v);
}
}
}
else {
for (auto v : r[u]) {
out[v]--;
if (!out[v] && !vis[v]) {
vis[v] = true;
cnt++;
que.push(v);
}
}
}
}
if (cnt < n) { // 存在环
puts("infinity");
return 0;
}
int ans = 0;
for (int i = 1; i <= n; i++)
if (s[(i-1)/_m][(i-1)%_m] == 'Q')
ans = max(ans, dfs(i));
ans /= 4;
if (!ans) puts("none");
else printf("%d\n", ans);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)