首页 > 其他分享 >smu2024蓝桥杯训练1

smu2024蓝桥杯训练1

时间:2024-04-02 19:12:00浏览次数:22  
标签:const 训练 int smu2024 cin long 蓝桥 solve define

A

[语言月赛 202401] 装满葡萄汁的酒杯
查看代码

void solve() {
    int n;
    cin >> n;
    if (n <= 100) cout << 100;
    else if(n <= 150) cout << 150;
    else if(n <= 300) cout << 300;
    else if(n <= 400) cout << 400;
    else if(n <= 1000) cout << 1000;
}

 

B

[蓝桥杯 2018 省 A] 航班时间 注意:数据末尾为/r/t,需要getchar两次,或者cin.ignore(100,'\n')
查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define PDI pair<double, int>
const double eps = 1e-12;
const int N = 1e4 + 5;
const int dx[4] = {0,-1}, dy[4] = {-1, 0};
const int INF = 0x3f3f3f3f;



void solve() {
    string a, b, ss;
    getline(cin, ss);
//    assert( ss.back() != '\r');
    a = ss.substr(0, 8), b = ss.substr(9, 8);
    auto P = [](string s) {
        int ans = 0;
        string x = s.substr(0,2);
        int y = stoi(x);
        ans += y * 3600;
        x = s.substr(3, 2);
        y = stoi(x);
        ans += y * 60;
        x = s.substr(6, 2);
        y = stoi(x);
        ans += y;
        return ans;
    };
    int x1 = P(a), x2 = P(b);
    if (ss.size() > 18) {
          x2 += (ss[20] - '0') * 24 * 60 * 60;
    }
    getline(cin, ss);
    a = ss.substr(0, 8), b = ss.substr(9, 8);
    int y1 = P(a), y2 = P(b);
    if (ss.size() > 18) {
        y2 += (ss[20] - '0') * 24 * 60 * 60;
    }
//    cout << x1 << ' ' << x2 << '|' << y1 << ' ' << y2 << '\n';
//    cout << x2 - x1 << ' ' << y2 - y1 << '\n';
    int c = (x2 - x1 + (y2 - y1)) / 2;
    auto Print = [](int x) {
        int a, b, c;
        c = x % 60; x /= 60;
        b = x % 60; x /= 60;
        a = x;
        printf("%02lld:%02lld:%02lld\n", a, b, c);
    };
    Print(c);
}

signed main() {
//    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
    cin >> T;
    cin.ignore(100, '\n');
//    getchar();
//    getchar();
    while (T--) {
        solve();
    }
}

 

C

[语言月赛 202312] 铅球杯 哈希  
查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define PDI pair<double, int>
const double eps = 1e-12;
const int N = 1e4 + 5;
const int dx[4] = {0,-1}, dy[4] = {-1, 0};
const int INF = 0x3f3f3f3f;



void solve() {
    int n, k;
    cin >> n >> k;
    map<string, int> mp;
    for (int i = 0, x; i < n; ++i) {
        string s;
        cin >> s >> x;
        mp[s] = x;
    }
    getchar();
    for (int i = 0; i < k; ++i) {
        string s;
        getline(cin, s);
//        cout << s << '\n';
        for (int j = 0; j < s.size(); ++j) {
            if (s[j] == '{') {
                int p = j + 1;
                string x;
                while (p < s.size() && s[p] != '}') {
                    x.push_back(s[p++]);
                }
                j = p;
                if (mp.count(x)) cout << mp[x];
                else cout << '{' << x << '}';
            }
            else cout << s[j];
        }
        cout << '\n';
    }
}

signed main() {
//    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
//    cin >> T;
//    getchar();
    while (T--) {
        solve();
    }
}

 

D

[蓝桥杯 2023 省 B] 飞机降落 一次一步或者k步,跑最短路即可
查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define PDI pair<double, int>
const double eps = 1e-12;
const int N = 1e4 + 5;
const int dx[4] = {0,-1}, dy[4] = {-1, 0};
const int INF = 0x3f3f3f3f;


int n;
struct E {
    int l, r, c;
};
vector<E> ve;
vector<int> st, f;
bool dfs(int u) {
    if (u == n) {
        return true;
    }
    for (int i = 0; i < n; ++i) {
        if (st[i]) continue;
        if (f.empty()) f.push_back(ve[i].l + ve[i].c);
        else {
            if (f.back() > ve[i].r) continue;
            f.push_back(max(f.back(), ve[i].l) + ve[i].c);
        }
        st[i] = 1;
        if (dfs(u + 1)) return true;
        f.pop_back();
        st[i] = 0;
    }
    return false;
}
void solve() {
    cin >> n;
    ve = vector <E> (n);
    st = vector<int> (n);
    f.clear();
    for (int i = 0; i < n; ++i) cin >> ve[i].l >> ve[i].r >> ve[i].c, ve[i].r += ve[i].l;
    bool ok = dfs(0);
    if (ok) cout << "YES\n";
    else cout << "NO\n";
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
    cin >> T;
    while (T--) {
        solve();
    }
}

 

E

dp,f[i][j]表示前i个数中末尾的数最后一位为j的最少删除次数

[蓝桥杯 2023 省 B] 接龙数列
查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define PDI pair<double, int>
const double eps = 1e-12;
const int N = 1e4 + 5;
const int dx[4] = {0,-1}, dy[4] = {-1, 0};
const int INF = 0x3f3f3f3f;


void solve() {
    int n;
    cin >> n;
    vector f(n + 1, vector <int> (10, INF));
    vector<int> a(n + 1), pre(n + 1), las(n + 1);
    auto P = [] (int x) {
        int y;
        while (x > 0) {
            y = x % 10;
            x /= 10;
        }
        return y;
    };
    for (int i = 1; i <= n; ++i) cin >> a[i], pre[i] = P(a[i]), las[i] = a[i] % 10;
    for (int i = 0; i <= n; ++i) {
        for (int j = 0; j <= 9; ++j) {
            if (i == 0) f[i][j] = 0;
            else {
                f[i][j] = f[i - 1][j] + 1;
            }
        }
        if (i) f[i][las[i]] = min(f[i][las[i]], f[i - 1][pre[i]]);
    }
    int ans = INF;
    for (int i = 0; i <= 9; ++i) ans = min (ans, f[n][i]);
    cout << ans;
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
//    cin >> T;
    while (T--) {
        solve();
    }
}

 

F

  [蓝桥杯 2018 国 B] 调手表 一次一步或者k步,跑最短路即可
查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define PDI pair<double, int>
const double eps = 1e-12;
const int N = 1e4 + 5;
const int dx[4] = {0,-1}, dy[4] = {-1, 0};
const int INF = 0x3f3f3f3f;



void solve() {
    int n, k;
    cin >> n >> k;
    vector<int> d(n, INF), st(n);
    queue<int> q;
    d[0] = 0;
    q.push(0);
    while (q.size()) {
        auto t = q.front();
        q.pop();
        if (st[t]) continue;
        st[t] = 1;
        if (!st[(t + 1) % n] && d[(t + 1) % n] > d[t] + 1) {
            d[(t + 1) % n] = d[t] + 1;
            q.push((t + 1) % n);
        }
        if (!st[(t + k) % n] && d[(t + k) % n] > d[t] + 1) {
            d[(t + k) % n] = d[t] + 1;
            q.push((t + k) % n);
        }
    }
    int ans = 0;
    for (int i = 1; i < n; ++i) ans = max(ans, d[i]);
    cout << ans;
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
//    cin >> T;
    while (T--) {
        solve();
    }
}

 

G

 

[蓝桥杯 2023 省 A] 更小的数

n的范围不大,n2枚举区间,根据区间大小从小到大枚举,若s[l] > s[r]答案加一,若s[l] = s[r],答案取决于 [l + 1,r - 1]
查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define PDI pair<double, int>
const double eps = 1e-12;
const int N = 1e4 + 5;
const int dx[4] = {0,-1}, dy[4] = {-1, 0};
const int INF = 0x3f3f3f3f;


void solve() {
    string s;
    cin >> s;
    int n = s.size(), ans = 0;
    s.insert(s.begin(), ' ');
    vector f(n + 1, vector<int> (n + 1));
    for (int i = 2; i <= n; ++i) {
        for (int j = 1; j + i - 1 <= n; ++j) {
            int l = j, r = j + i - 1;
            if (s[l] > s[r]) f[l][r] = 1;
            else if (s[l] == s[r] && i > 2) f[l][r] = f[l + 1][r - 1];
            ans += f[l][r];
        }
    }
    cout << ans;
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
//    cin >> T;
    while (T--) {
        solve();
    }
}

 

H

[蓝桥杯 2022 省 A] 青蛙过河 首先可以二分y,考虑如何check。将来回看做0到2x,对于 [n - y, n] 需要有至少2x个落地点,相当于有2x个起跳点。若把区间往前移动一步为 [n - y - 1, n - 1],能跳到n的点,一定也能返回到到n - y - 1(多跳几步),相当于求区间和是否不小于2x
查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define PDI pair<double, int>
const double eps = 1e-12;
const int N = 1e4 + 5;
const int dx[4] = {0,-1}, dy[4] = {-1, 0};
const int INF = 0x3f3f3f3f;



void solve() {
    int n, x;
    cin >> n >> x;
    vector<int> a(n + 1);
    for (int i = 1; i < n; ++i) {
        cin >> a[i];
        a[i] += a[i - 1];
    }
    a[n] = a[n - 1];
    int l = 1, r = n, res;
    auto check = [n, a, x](int y) {
        for (int i = y; i < n; ++i) {
            if (a[i] - a[i - y] < 2 * x) return false;
        }
        return true;
    };
    while (l <= r) {
        int mid = l + r >> 1;
        if (check(mid)) res = mid, r = mid - 1;
        else l = mid + 1;
    }
    cout << res;
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
//    cin >> T;
    while (T--) {
        solve();
    }
}

I

[蓝桥杯 2021 省 AB2] 国际象棋

状压dp,一列的状态只与前一列和前前一列的状态和个数有关,n也不大,直接枚举个数、当前列、前列、前前列的状态即可

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define PDI pair<double, int>
const double eps = 1e-12;
const int N = 1e4 + 5;
const int dx[4] = {0,-1}, dy[4] = {-1, 0};
const int INF = 0x3f3f3f3f, mod = 1e9 + 7;

int f[105][65][65][25];

void solve() {
     int n, m, k;
     cin >> n >> m >> k;
     vector<int> sum(100);
     auto C = [](int x) {
         int ans = 0;
         while (x > 0) {
             if (x % 2 == 1)ans ++;
             x /= 2;
         }
         return ans;
     };
     for (int i = 0; i < 1 << n; ++i) sum[i] = C(i);
     for (int i = 0; i < 1 << n; ++i)
         for (int j = 0; j < 1 << n; ++j) f[2][i][j][sum[i] + sum[j]] = 1;
     for (int i = 2; i <= m; ++i) {
         for (int c = 0; c < 1 << n; ++c) {
             for (int d = sum[c]; d <= k; ++d) {
                 for (int b = 0; b < 1 << n; ++b) {
                     for (int a = 0; a < 1 << n; ++a) {
                         if (sum[c] + sum[b] + sum[a] > k) continue;
                         if (a & (c >> 1) || a & (c << 1) || a & (b >> 2) || a & (b << 2) || b & (c >> 2) || b & ( c << 2))continue;
                         f[i][b][c][d] = (f[i][b][c][d] + f[i - 1][a][b][d - sum[c]]) % mod;
                     }
                 }
             }
         }
     }
     int ans = 0;
     for (int i = 0; i < 1 << n; ++i) {
         for (int j = 0; j < 1 << n; ++j) ans = (ans + f[m][i][j][k]) % mod;
     }
     cout << ans;
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
//    cin >> T;
    while (T--) {
        solve();
    }
}

J

  [蓝桥杯 2015 省 A] 灾后重建

标签:const,训练,int,smu2024,cin,long,蓝桥,solve,define
From: https://www.cnblogs.com/bible-/p/18111295

相关文章

  • PyTorch学习(5):并行训练模型权重的本地化与加载
    1.并行训练与非并行训练        在训练深度神经网络时,我们一般会采用CPU或GPU来完成。得益于开源传统,许多算法都提供了完整的开源代码工程,便于学习和使用。随着GPU的普及,GPGPU已经占据了大部分的训练场景。        我们在这里仅以GPU训练场景做一些说明。......
  • 14天【代码随想录算法训练营34期】 第六章 二叉树part01(● 理论基础 ● 递归遍历 ●
    理论基础种类满二叉树:k是深度,node数为2^k-1完全二叉树:二叉树底部是从左向右持续的二叉搜索树:左边节点都小于中间节点,右边节点都大于中间节点平衡二叉树AVL:左边和右边高度相差不超过1存储方式链式存储:leftchildptr,rightchildptr线式存储:字符数组保存,2i+1是左孩......
  • 蓝桥杯练习笔记(十六)
    蓝桥杯练习笔记(十六)一、输入示例:312111347453这是用到了m叉树的结论:对于某个m叉树的一个节点n,假如其有完整子树,则其左子节点l为l=(n-1)m+2,右子节点r为r=mn+1。基于此我们可以快速判断这个数在某些节点处的具体情况。比如是否是满叶子等等。蓝桥官网题解:......
  • 地平线旭日x3 deeplav3训练 分割模型训练流程(2024.4.2 笔记)
    地平线x3开发资料,版本2.6.2b旭日X3派用户手册https://developer.horizon.ai/api/v1/fileData/documents_pi/Quick_Start/Quick_Start.html地平线X3J3算法工具链https://developer.horizon.cc/api/v1/fileData/horizon_xj3_open_explorer_cn_doc/oe_mapper/source/advanced_con......
  • YoloV8_从环境安装到训练模型到使用模型
    纯干货!!!从零开始训练模型一、环境的安装1.下载安装GIT​###如果已经安装GIT则请跳过​###本文档所有有下划线的都可以Ctrl+鼠标左键直达连接,如果加载不出来请使用科学多试几次。​###下载这个软件是一方面是为了下载ultralytics##标题包,下载这个包有很多种路径,可以......
  • 蓝桥杯T5合根植物——并查集模板题
    5.合根植物-蓝桥云课(lanqiao.cn) #include<bits/stdc++.h>usingnamespacestd;intm,n,pre[1000000];set<int>s;intfind(intx){if(pre[x]==x)returnx;returnfind(pre[x]);}intmain(){//请在此输入您的代码cin>>m>>......
  • 蓝桥杯备赛指南
    蓝桥杯备赛指南大学C组枚举fromenumimportEnumclassWeekday(Enum):monday=1tuesday=2wednesday=3thirsday=4friday=5saturday=6sunday=7print(Weekday.wednesday)#Weekday.wednesdayprint(type(Wee......
  • 深度学习训练服务器怎么选?
        深度学习(DeepLearning)可以完成需要高度抽象特征的人工智能任务,如机器视觉和图像识别、自然语言处理、语音识别和机器翻译等。深度学习采用的模型为深层神经网络(DeepNeuralNetworks,DNN)模型,即包含多个隐藏层(HiddenLayer,也称隐含层)的神经网络(NeuralNetworks,NN)。深......
  • 蓝桥杯真题代码记录(松散子序列
    目录1.题目:2.我的代码:小结:1.题目:给定一个仅含小写字母的字符串s,假设s的一个子序列t的第i个字符对应了原字符串中的第pi个字符。我们定义s的一个松散子序列为:对于i>1总是有pi−pi−1≥2。设一个子序列的价值为其包含的每个字符的价值之和......
  • 蓝桥杯——省赛题
    目录题目一:日期统计: 我的思路——错误代码: 示例代码一思考:知识点总结:1.setuniqueSet;2..size()3.日期匹配示例方法二思考:题目二:01串的熵我的思路:错误总结:题目三:冶炼金属我的思路:题目一:日期统计: 我的思路——错误代码:    蠢方法:不断使用for循环......