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
- 你算算吗,都多大了 - 22小时前 来自 浙江 0
- C你纯暴力打的O(n^3)不T才怪呢 - 5天前 来自 浙江 0
- c你直接组合数计算不就行了 - 5天前 来自 浙江 0
- 。 - 5天前 来自 浙江 0
- F你这么些肯定不对啊 - 5天前 来自 广东 0





















有帮助,赞一个