首页 > 编程语言 >「蓝桥·算法双周赛」第 3 场 算法季度赛

「蓝桥·算法双周赛」第 3 场 算法季度赛

时间:2024-06-30 22:59:27浏览次数:1  
标签:i64 int i32 cin 双周 蓝桥 算法 long using

1. 全国科普行动日【算法赛】

#include <iostream>
using namespace std;
int main()
{
  cout << "6.29";
  return 0;
}

2. A%B【算法赛】

#include <bits/stdc++.h>

using namespace std;


using i32 = int32_t;
using i64 = long long;
using i128 = __int128;

#define int i64

using vi = vector<int>;
using pii = pair<int,int>;

const int inf = 1e9, INF = 1e18;

void solve(){
    int a, b;
    cin >> a >> b;
    cout << (a % b + abs(b)) % abs(b) << "\n";
    return ;
}

i32 main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int T;
    cin >> T;
    while(T --) solve();
    return 0;
}

3. 能量圆盘【算法赛】

选择出现次数最多的宝石保留。

#include <bits/stdc++.h>

using namespace std;


using i32 = int32_t;
using i64 = long long;
using i128 = __int128;

#define int i64

using vi = vector<int>;
using pii = pair<int, int>;

const int inf = 1e9, INF = 1e18;


i32 main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n;
    cin >> n;
    map<int, int> cnt;
    for (int i = 1, x; i <= n; i++)
        cin >> x, cnt[x]++;
    int ans = -1;
    for (auto [k, v]: cnt) ans = max(ans, v);
    cout << n - ans << "\n";
    return 0;
}

4. 植物保留【算法赛】

枚举保留每一个植物,二分找到前面最靠后可以放的。

#include <bits/stdc++.h>

using namespace std;


using i32 = int32_t;
using i64 = long long;
using i128 = __int128;

#define int i64

using vi = vector<int>;
using pii = pair<int, int>;

const int inf = 1e9, INF = 1e18;


i32 main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n, m;
    cin >> n >> m;
    vi a(n);
    for (auto &i: a) cin >> i;
    vi f(n);
    f[0] = 1;
    for (int i = 1, j; i < n; i++) {
        if (a[i] - m < a[0]) f[i] = 1;
        else {
            j = upper_bound(a.begin(), a.end(), a[i] - m) - a.begin() - 1;
            f[i] = f[j] + 1;
        }
        f[i] = max(f[i], f[i - 1]);
    }
    cout << f.back() << "\n";

    return 0;
}

5. 龙骑士军团【算法赛】

前缀和一下,然后区间最值查询

#include <bits/stdc++.h>

using namespace std;


using i32 = int32_t;
using i64 = long long;
using i128 = __int128;

#define int i64

using vi = vector<int>;
using pii = pair<int, int>;

const int inf = 1e9, INF = 1e18;


const int N = 2e5 + 5, logN = 20;
int a[N], log_2[N], f[N][logN + 1], g[N][logN + 1];

int queryMax(int l, int r) {
    int s = log_2[r - l + 1];
    return max(f[l][s], f[r - (1 << s) + 1][s]);
}

int queryMin(int l, int r) {
    int s = log_2[r - l + 1];
    return min(g[l][s], g[r - (1 << s) + 1][s]);
}

i32 main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n, q;
    cin >> n >> q;
    n++;
    for (int i = 2; i <= n; i++)
        cin >> a[i], a[i] += a[i - 1];

    log_2[0] = -1;
    for (int i = 1; i <= n; i++)
        f[i][0] = g[i][0] = a[i], log_2[i] = log_2[i >> 1] + 1;
    for (int j = 1; j <= logN; j++)
        for (int i = 1; i + (1 << j) - 1 <= n; i++) {
            f[i][j] = max(f[i][j - 1], f[i + (1 << j - 1)][j - 1]);
            g[i][j] = min(g[i][j - 1], g[i + (1 << j - 1)][j - 1]);
        }
    for (int a, b, c, d; q; q--) {
        cin >> a >> b >> c >> d, c++, d++;
        cout << queryMax(c, d) - queryMin(a, b) << "\n";
    }

    return 0;
}

6. 热身操领队【算法赛】

动态的中位数查询。

#include <bits/stdc++.h>

using namespace std;


using i32 = int32_t;
using i64 = long long;
using i128 = __int128;

#define int i64

using vi = vector<int>;
using pii = pair<int, int>;

const int inf = 1e9, INF = 1e18;


const int N = 2e5 + 5, logN = 20;

#define lowbit(x) ( x & -x )

struct BinaryIndexedTree {
    int n;
    vector<int> b;

    BinaryIndexedTree(int n) : n(n), b(n + 1, 0) {};

    void add(int i, int y) {
        for (; i <= n; i += lowbit(i)) b[i] += y;
        return;
    }

    int calc(int i) {
        int sum = 0;
        for (; i; i -= lowbit(i)) sum += b[i];
        return sum;
    }

    int find(int k) {
        int l = 1, r = n, ans = -1;
        for (int mid; l <= r;) {
            mid = (l + r) / 2;
            if (calc(mid - 1) * 2 < k) ans = mid, l = mid + 1;
            else r = mid - 1;
        }
        return ans;
    }

};

i32 main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n;
    cin >> n;
    vector<pii> op(n);
    vi h;
    for (auto &[a, v]: op)
        cin >> a >> v, h.push_back(a);
    sort(h.begin(), h.end());
    for (auto &[a, v]: op)
        a = lower_bound(h.begin(), h.end(), a) - h.begin() + 1;
    BinaryIndexedTree bit(n);
    int sum = 0;
    for (auto [a, v]: op) {
        bit.add(a, v) , sum += v;
        int i = bit.find( sum );
        cout << h[i - 1] << "\n";
    }
    return 0;
}

7. 单词博弈【算法赛】

很奇妙的解法,贪心的选择可用的最小值

#include <bits/stdc++.h>

using namespace std;


using i32 = int32_t;
using i64 = long long;
using i128 = __int128;

#define int i64

using vi = vector<int>;
using pii = pair<int, int>;

const int inf = 1e9, INF = 1e18;


i32 main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n, m;
    cin >> n >> m;
    set<string> a[2];
    string lst, s;
    for (int i = 1; i <= n; i++) {
        cin >> s, a[0].insert(s);
    }
    for (int i = 1; i <= m; i++) {
        cin >> s, a[1].insert(s);
    }
    lst = *a[0].begin(), a[0].erase(lst);
    for (int i = 1;; i ^= 1) {
        while (not a[i].empty() and *a[i].begin() <= lst)
            a[i].erase(a[i].begin());
        if (a[i].empty() or a[i].begin()->front() - lst.front() > 1) {
            cout << "QL"[i];
            break;
        }
        lst = *a[i].begin() , a[i].erase(lst);
    }
    return 0;
}

标签:i64,int,i32,cin,双周,蓝桥,算法,long,using
From: https://www.cnblogs.com/PHarr/p/18277121

相关文章

  • [JLU] 数据结构与算法上机题解思路分享-第一次上机
    前言首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。这里只是思路解析的博客,代码仓库是JLU_Data_Structures_Record希望你能在这里找到你想要的:)正文A调皮的哈利分数30作者朱允刚单位吉林大学贝蒂是个打字高手,打字时有不看屏幕的习......
  • Python21 k-近邻算法
    k-近邻算法(k-NearestNeighbors,k-NN)是一种基本且广泛使用的分类与回归算法。它的工作原理非常直观:通过测量不同特征点之间的距离,来进行分类或回归分析。1.K-NN算法基本概念1.基于实例的学习:k-NN是一种基于实例的学习,意味着它直接记忆训练数据集,并通过这些数据进行预测,而......
  • 【算法专题--栈】用队列实现栈 -- 高频面试题(图文详解,小白一看就懂!!)
    目录一、前言二、题目描述三、解题方法⭐两个队列实现栈......
  • 目标检测算法之YOLO(YOLOv10)
    yolo算法理解BackgroundConsistentDualAssignmentsforNMS-freeTrainingHolisticEfficiency-AccuracyDrivenModelDesignEfficiencydrivenmodeldesignLightweightclassificationheadSpatial-channeldecoupleddownsamplingRank-guidedblockdesignAccurac......
  • Java_JVM:垃圾收集算法
    GC最基础的算法有三种:标记-清除算法复制算法标记-压缩算法我们常用的垃圾回收器一般都采用分代收集算法。“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。“复制”......
  • 代码随想录算法训练营第49天 | 300.最长递增子序列 、674. 最长连续递增序列 、718.
    300.最长递增子序列今天开始正式子序列系列,本题是比较简单的,感受感受一下子序列题目的思路。视频讲解:https://www.bilibili.com/video/BV1ng411J7xPhttps://programmercarl.com/0300.最长上升子序列.html/***@param{number[]}nums*@return{number}*/varlengthOfL......
  • 四轴控制算法(PID、Mahony互补滤波算法等)
    四轴控制算法(PID、Mahony互补滤波算法等)第一章四轴控制算法及实现之如何获取MPU9250的原始数据文章目录四轴控制算法(PID、Mahony互补滤波算法等)前言一、MPU9250简介1.概述2.通信协议-I2C二、MPU9250获取原始数据1.初始化流程2.读取原始数据三、代码实现结果总结......
  • Python和MATLAB粘性力接触力动态模型半隐式欧拉算法
    ......
  • 面了英伟达算法岗,被疯狂拷打。。。
    节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。总结链接如下:《大模型面试宝典》(2024......
  • 【Python机器学习】聚类算法的对比与评估——在人脸数据集上比较算法
    数据探查:我们将k均值、DBSCAN和凝聚聚类算法应用于Wild数据集中的LabeledFaces,并查看它们是否找到了有趣的结构。我们将使用数据的特征脸表示,它由包含100个成分的PCA(whiten=True)生成:people=fetch_lfw_people(data_home="C:\\Users\\86185\\Downloads\\",min_faces_per_......