ABC429我的代码求掉
2025-10-25 21:42:52
发布于:江西
A
AC
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
if (i <= m) cout << "OK\n";
else cout << "Too Many Requests\n";
}
return 0;
}
B
AC
/*给你一个长度为𝑁的整数序列𝐴=(𝐴₁, 𝐴₂, …, 𝐴ₙ),以及一个整数𝑀。判断是否可以通过移除𝐴中的一个元素,使得剩余的(𝑁−1)个元素的和恰好等于𝑀。*/
#include <iostream>
using namespace std;
int main() {
int n, m;
bool ans = false;
cin >> n >> m;
int a[n];
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n; i++) {
int pop = a[i], sum = 0;
a[i] = 0;
for (int j = 0; j < n; j++) {
sum += a[j];
}
if (sum == m) {
ans = true;
break;
}
a[i] = pop;
}
cout << (ans ? "Yes" : "No");
return 0;
}
C
TLE
#include <iostream>
using namespace std;
int main() {
int n, cnt = 0;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
if (a[i] == a[j] && a[i] != a[k] && i != j && j != k && i != k)
cnt++;
}
}
}
cout << cnt / 2;
return 0;
}
F
CE
/*#### 问题陈述
给你一个有三行和 $N$ 列的网格。将位于从上往下第 $i$ 行和从左往上第 $j$ 列的单元格称为单元格 $(i,j)$ 。如果 $S_{i,j}$ 是 `#`,那么单元格 $(i,j)$ 是一个壁单元格;如果 $S_{i,j}$ 是 `.`,那么单元格 $(i,j)$ 是一个空单元格,并且可以通过。
您会收到 $Q$ 个查询,请按顺序处理。
每个查询都给出了整数 $r$ 和 $c$ ,您应该翻转单元格 $(r,c)$ 的状态。也就是说,如果单元格 $(r,c)$ 是一个有壁单元格,则将其改为空单元格;如果是一个空单元格,则将其改为有壁单元格。然后,输出下面问题的答案:
> 考虑从细胞 $(1,1)$ 到细胞 $(3,N)$ 的移动,重复移动到上下左右相邻的空细胞。判断是否可以移动到 $(3,N)$ 单元格,如果可以移动到,求最小移动次数。*/
#include <bits/stdc++.h>
using namespace std;
struct node {
int x, y, step;
};
int n;
const int N = 100005;
char mp[N][N];
int vis[N][N];
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
void bfs(int x, int y) {
queue<node> q;
q.push({x, y, 0});
vis[x][y] = 1;
while (!q.empty()) {
node now = q.front();
q.pop();
if (now.x == 3 && now.y == n) {
cout << now.step << endl;
for (int i = 0; i < 100005; i++) {
for (int j = 0; j < 100005; j++) vis[i][j] = 0;
}
return;
} for (int i = 0; i < 4; i++) {
int nx = now.x + dx[i];
int ny = now.y + dy[i];
if (nx > 0 && nx <= n && ny > 0 && ny <= 3 && !vis[nx][ny] && mp[nx][ny] != '#') {
q.push({nx, ny, now.step + 1});
vis[nx][ny] = 1;
}
}
}
for (int i = 0; i < 100005; i++) {
for (int j = 0; j < 100005; j++) vis[i][j] = 0;
}
cout << -1 << endl;
}
int main() {
cin >> n;
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= n; j++)
cin >> mp[i][j];
}
int q;
cin >> q;
for (int i = 0; i < q; i++) {
int x, y;
cin >> x >> y;
if (mp[x][y] == '.') mp[x][y] = '#';
else mp[x][y] = '.';
bfs(1, 1);
}
return 0;
}
G
TLE
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
int n, m, a, b, x, r, sum = 0;
cin >> n >> m >> a >> x >> r;
for (int k = 0; k < n; k++) {
long long ans = 1;
int temp = (a * k + b) % m;
for (int j = 1; j <= temp; j++) {
ans *= x;
}
sum += ans % r;
}
cout << sum << endl;
}
return 0;
}
全部评论 5
你算算吗,都多大了
3天前 来自 浙江
0C你纯暴力打的O(n^3)不T才怪呢
1周前 来自 浙江
0c你直接组合数计算不就行了
1周前 来自 浙江
0。
1周前 来自 浙江
0F你这么些肯定不对啊
1周前 来自 广东
0那怎么做?
昨天 来自 江西
0





















有帮助,赞一个