ABC343 A~E 解题报告

A - Wrong Answer #

模拟题,只需要每次输出 09 内不等于 a+b 的值就行了。

#include <bits/stdc++.h>

using namespace std;

template<typename T>
T read(T x){T opt = 1, sum = 0;char ch = getchar();while(!isdigit(ch)) {if(ch == '-') opt = -1;ch = getchar();}while(isdigit(ch)){sum = sum * 10 + ch - '0';ch = getchar();}return sum * opt;}
#define read read(0)

int main()
{
    int a = read, b = read;
    int k = a + b;
    if(k == 9) cout << 0;
    else cout << k + 1;
    return 0;
}

B - Adjacency Matrix

考察了邻接矩阵,每次只要判断 ai,j 是不是 1,如果是就双向建边,然后逐个输出。

#include <bits/stdc++.h>

using namespace std;

set<int> v[10005];
int main()
{
    int n;
    cin >> n;
    
    for(int i = 1;i <= n;i ++ ) {
        for(int j = 1;j <= n;j ++ ){
            int k;
            cin >> k;
            if(k == 1) {
                v[i].insert(j);
                v[j].insert(i);
            }
        }
    }
    for(int i = 1;i <= n;i ++ ){
        for(auto j : v[i]) cout << j << ' ';
        cout << endl;
    }
    return 0;
}

C - 343#

我为了速度快点。

直接开始打表。

注意到这题条件很苛刻,11018 不到 20 个数满足条件,那就直接列出来呗。

打表代码就不放了(因为丢了)直接模拟就行了。

#include <bits/stdc++.h>
#define int long long
using namespace std;

int a[] = {1,8,343,1331,1030301,1367631,1003003001,10662526601,1000300030001,1030607060301,1334996994331,1000030000300001,1033394994933301,1331399339931331};
signed main()
{
    int n;
    cin >> n;
    for(int i = 0;i < 14;i ++ ) {
        if(a[i] > n && i != 0){
            cout << a[i - 1] << endl;
            return 0;
        }
    }
    cout << a[13];
    return 0;
}

D - Diversity of Scores#

模拟题。

每次更新一个数,用 map 判断是不是新数,新的 cnt++,如果 map 当前数个数为 0,说明这个数不存在了,cnt--

#include <bits/stdc++.h>
#define int long long
using namespace std;

template<typename T>
T read(T x){T opt = 1, sum = 0;char ch = getchar();while(!isdigit(ch)) {if(ch == '-') opt = -1;ch = getchar();}while(isdigit(ch)){sum = sum * 10 + ch - '0';ch = getchar();}return sum * opt;}
#define read read(0)

const int N = 2e5 + 5;
map<int, int> mp;
struct node
{
    int time, plus;
}a[N];
int c[N];
int cnt = 1;
signed main()
{
    int n = read, T = read;
    mp[0] = n;
    for(int i = 1;i <= T;i ++ ){
        int ai, bi;
        cin >> ai >> bi; 
        if(mp[c[ai] + bi] == 0){

            
            cnt ++ ;
            mp[c[ai]] -- ;
            // cout << c[ai];
            // cout << "----------\n";
            if(mp[c[ai]] == 0) cnt -- ;
            c[ai] += bi;
            mp[c[ai]] ++ ;
        }
        else {
            mp[c[ai]] -- ;
            if(mp[c[ai]] == 0) cnt --;
            c[ai] += bi;
            mp[c[ai]] ++ ;
        }
       
        cout << cnt << endl;
    }
    return 0;
}

E - 7X7X7#

先咕着。。

F - Second Largest Query#

思路没问题,赛事没 A,先把代码贴着。咕。

max 表示最大数,maxcnt 表示最大数出现次数,mex 表示次大数,mexcnt 表示次大数出现次数,用线段树维护。

G - Compress Strings#

咕咕咕。


备注:预计 3-9 会补。

posted @   浮光流年  阅读(37)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示
主题色彩
主题色彩