首页 > 其他分享 >SMU Summer 2024 Contest Round 3

SMU Summer 2024 Contest Round 3

时间:2024-07-10 15:07:51浏览次数:18  
标签:Summer int SMU cin long 2024 vector using i64

SMU Summer 2024 Contest Round 3

寻找素数对

题意

给你一个偶数,找到两个最接近的素数,其和等于该偶数。

思路

处理出 1e5 以内的素数,然后遍历,更新最接近的答案。

代码

#include<bits/stdc++.h>

using namespace std;

using i64 = long long;

vector<int> euler_range(int n) {
    vector<int> phi(n + 1), prime;
    vector<bool> is_prime(n + 1, true);
    is_prime[1] = 0, phi[1] = 1;
    for (int i = 2; i <= n; i++) {
        if (is_prime[i]) prime.push_back(i), phi[i] = i - 1;
        for (int j = 0; j < (int)prime.size() && i * prime[j] <= n; j++) {
            is_prime[i * prime[j]] = 0;
            if (i % prime[j]) phi[i * prime[j]] = phi[i] * (prime[j] - 1);
            else {
                phi[i * prime[j]] = phi[i] * prime[j];
                break;
            }
        }
    }
    return prime;
}

const int N = 1e5;
auto pr = euler_range(N);

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int x;
    set<int> s(pr.begin(), pr.end());
    while (cin >> x) {
        int a = 0, b = 0;
        for (auto i : pr) {
            if (i > x) break;
            if (s.count(x - i)) {
                if (!a) a = i, b = x - i;
                else if (abs(x - i - i) < abs(a - b))
                    a = i, b = x - i;
            }
        }
        if (a > b) swap(a, b);
        cout << a << ' ' << b << '\n';
    }

    return 0;
}

抱歉

题意

平面上有 n 个点,每个点至少有 2 条曲线线段连接,所有曲线线段不相交,但是任意两点之间可以有多条曲线,问你 n 个点将平面分成了 m 份中存在的曲线线段数量。

思路

满足最小的条件,即每个点都能有两条曲线线段相连的图中最少有 n 条线段。

如图:

image

可以看出,最小符合条件的连线方式将平面分成了 2 份,又因为两点之间可以有多条曲线,所以每增加一个曲面只需要加一条曲线即可。

如图:

image

所以答案就是 \(n+m-2\),记得开longlong。

代码

#include<bits/stdc++.h>

using namespace std;

using i64 = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    i64 n,m;
    while(cin >> n >> m && n && m){
       	cout << n + m - 2 << '\n';
    }

    return 0;
}

搬寝室

题意

从 n 个物品中选出 2k 个物品,每两个物品产生的贡献是其重量差值的平方,求最小的贡献值。

思路

n 个选 2k 个,考虑dp。

因为要求差值的平方最小,所以我们将物品按重量按差值排序,排序后相邻的物品其重量差值相对最小。

然后处理出第 i 个物品与 i + 1 个物品间的差值平方。

设 \(dp_{i,j}\) 为前 i 个物品中搬运 j 次的最小贡献。

对于第 i 个物品,如果选择它,则答案是 i-1 物品与它的贡献加上 \(dp_{i-2,j-1}\) 时的贡献,如果不选,那答案就等于 \(dp_{i-1,j}\) 。

代码

#include<bits/stdc++.h>

using namespace std;

using i64 = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k;
    while (cin >> n >> k) {
        vector<i64> w(n + 1);
        for (int i = 1; i <= n; i ++)
            cin >> w[i];

        sort(w.begin() + 1, w.end());

        vector<vector<i64>> dp(n + 1, vector<i64>(k + 1, LLONG_MAX / 2));

        vector<int> val(n + 1);
        for (int i = 1; i < n; i ++) {
            val[i] = pow(w[i + 1] - w[i], 2);
        }

        for (int i = 0; i <= n; i ++)
            dp[i][0] = 0;

        for (int i = 2; i <= n; i ++)
            for (int j = 1; j * 2 <= i && j <= k; j ++) {
                dp[i][j] = min(val[i - 1] + dp[i - 2][j - 1], dp[i - 1][j]);
            }

        cout << dp[n][k] << '\n';
    }

    return 0;
}

Nuts

题意

累加 n 个数大于 10 的部分。

思路

按题意模拟。

代码

#include<bits/stdc++.h>

using namespace std;

using i64 = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    int ans = 0;
    while (n --) {
        int x;

        cin >> x;
        ans += max(0, x - 10);
    }

    cout << ans << '\n';

    return 0;
}

Happy Birthday! 2

题意

给你一个含有 N 个正整数的序列 A,请你构造两个序列 B 和 C。

设这两个序列长度分别为

标签:Summer,int,SMU,cin,long,2024,vector,using,i64
From: https://www.cnblogs.com/Kescholar/p/18294108

相关文章

  • YOLOv8-Seg改进:backbone主干改进 | 微软新作StarNet:超强轻量级Backbone | CVPR 2024
     ......
  • YOLOv8原创改进:backbone主干改进 | 微软新作StarNet:超强轻量级Backbone | CVPR 2024
     ......
  • 【2023-2024第二学期】助教工作学期总结
    一、助教工作的具体职责和任务1、帮助同学解答问题2、批改同学们的作业3、在实验课上引导同学们排错,加深对实验内容的理解4、及时向老师反馈同学们的问题5、负责开实验室,最后一个离开实验室检查所有设备是否都关6、考前在实验室帮助同学们复......
  • 骨传导耳机哪个牌子好?精选2024年度最值得入手的5款骨传导耳机推荐!
    作为在数码耳机领域有着多年工作经验的达人,我见证过骨传导耳机市场的热门,也目睹了不少因盲目选购而导致听力不适或体验不佳的案例。在此,我必须郑重告诫大家,切莫轻信市场上那些夸大其词、声称完美兼顾音质与舒适度的骨传导耳机宣传!实际上,这些劣质机型不仅戴着不舒服,而且音质模糊......
  • 20240709(byte数据转换、字典数据选择性保留、选择性查询数据库)
    需要补的知识:​ 1.HTTP协议,url里,那些header、body里都是啥东西报错信息:"服务异常'bytes'objecthasnoattribute'get'"错误原因:​ http传输中,GET方法传入的是byte格式的数据,没有.get方法#假设你有一个包含JSON数据的字节字符串json_bytes=b'{"name":"John",&quo......
  • 【2024-07-09】大宝要学
    20:00人,只有义无反顾地前行,才能在大地.上留下通往光明的履痕。                                                 ——阿多尼斯7月份,是我们家的生日月份,月初大宝生日,月......
  • 2024 「全球软件研发技术大会】-刘兴东分享京东的AIGC革新之旅
    大模型和开源的发展将带来全球软件研发技术的新变革,AI使代码自动化应用达到新水平,开源工具的云化和应用的AI化将促中国软件迎来新一轮的爆发。开发者正在迎接新一轮的技术浪潮变革。由CSDN和高端IT咨询和教育平台Boolan联合主办的2024年度「全球软件研发技术大会」于7月4日-5日在......
  • 【免费】最新最详细的华为OD2024机试题,ABCD卷,有答案,很全,很新
    最新最详细的华为OD2024机试题,ABCD卷,有答案,很全,很新!+目前461题,亲测资料非常完整好用!!最近考试换为CD卷,CD卷题库是一样的,D卷为双机位监控,某些外包公司应聘的为D卷。其中资料中JAVA,python,+JavaScript,C语言都有包含的,绝对会对你有所帮助!!获取方式:https://pan.quark.cn/s/9b122f......
  • 2024程序员行业风口和面试宝典
    国际研究机构Gartner会在每年10月份左右发布下一年度的战略发展趋势预测,并在次年3月左右发布和网络安全相关的趋势预测。绿盟科技通过将近3年的趋势预测进行分组对比分析后发现,除了众人皆知的AI技术应用外,数据模块化、身份优先安全、行业云平台也可能会成为未来网络安全领......
  • 20240710概率期望
    概率基础知识不写了,反正应该知道的都知道但是有几个跟容斥有关的不知道,我要记录下1.互斥事件可加性:对于n个互斥的事件\(P(A_1\cup...\cupA_n)=\sum_{i=1}^{n}A_i\)2.独立事件可乘性:对于n个对立的事件\(P(A_1\cap...\capA_n)=\prod_{i=1}^{n}A_i\)3.n重伯努利实验:一次实验......