2018浙江省大学生程序设计竞赛

news2024/12/22 14:35:07

2018浙江省大学生程序设计竞赛

在这里插入图片描述
saber保佑!

A - Peak

题意:给出一个整数序列,判断序列是否有且仅有一个峰值;

思路:

首先遍历寻找同时严格大于两边元素的值,若存在多个直接pass;

然后分别判断唯一的峰值是否前面递增,后面递减即可;

AC code:

void solve() {
    int n; cin >> n;
    vector<int> a(n);
    for (int i = 0; i< n; i ++) cin >> a[i];
    int cnt = 0;
    int pos = -1;
    for (int i = 1; i < n - 1; i ++) {
        if (a[i] > a[i - 1] && a[i] > a[i + 1]) {
            if (pos == -1) pos = i;
            else {
                cout << "No" << endl;
                return;
            }
        }
    }
    if (pos == -1) {
        cout << "No" << endl;
        return;
    }
    for (int i = 0; i < pos; i ++) {
        if (a[i] >= a[i + 1]) {
            cout << "No" << endl;
            return;
        }
    }
    for (int i = pos; i < n - 1; i ++) {
        if (a[i] <= a[i +1]) {
            cout << "No" << endl;
            return;
        }
    }
    cout << "Yes" << endl;
}

B - King of Karaoke

题意:给出两个整数序列a和b,给序列a的每个元素+k,使得序列a等于序列b的数量最多;

思路:用序列b减去序列a,统计差值的众数即为答案;

AC code:

void solve() {
    cin >> n; 
    for (int i = 1; i <= n; i ++) cin >> a[i];
    for (int i = 1; i <= n; i ++) cin >> b[i];
    map<int, int> mp;
    int ans = 0;
    for (int i = 1; i <= n; i ++) {
        mp[b[i] - a[i]] ++;
        ans = max(ans, mp[b[i] - a[i]]);
    }
    cout << ans << endl;
}

I - Magic Points

题意:有0到n-1共n个点构成的正方环型点集,每两点可以构成一条直线,构造n条直线,使得直线的交点最多;

思路:guess;

从0点开始,n条线的两端点分别为i和i+n进行构造;

但是,对于n为偶数时,最后一条线会与其他线产生的交点二次重合,非最佳情况;

所以偶数情况下最后一条线应该从n-1的点连接(3*(n-1) -1)这个点,最大话交点数;

详情可画图证明,注意,用绘图工具,防止误差;

AC code:

void solve() {
    int n; cin >> n;
    if (n == 2) {
        cout << 0 << ' ' << 2 << ' ' << 1 << ' ' << 3 << endl;
        return;
    }
    if (n & 1) {
        cout << 0 << ' ' << n;
        for (int i = 1; i < n; i ++) cout << ' ' << i << ' ' << i + n;
        cout << endl;
    } else {
        cout << 0 << ' ' << n;
        for (int i = 1; i < n - 1; i ++) cout << ' ' << i << ' ' << i + n;
        cout << ' ' << n - 1 << ' ' << (3 * (n - 1)) - 1;
        cout << endl;
    }
}

J - CONTINUE…?

题意:

将n名学生分成四组G1G2G3G4,第i名学生的价值为i(该价值仅为题目计算描述,无实际意义,每个人都是无价的);

男生只能在G1G2组,女生只能在G3G4组;G1G3组的价值和要等于G2G4的价值和;

给出分配序列,如果不可能,输出-1;

思路:

首先如果所有人的价值和为奇数,则一定不可能成功分组;

可以证明只要是偶数就能成功分配,我们标记sum/2的价值和所在人;

然后开始遍历,被标记的人在G1G3组,否则在G2G4组,再根据男女分;

AC code:

void solve() {
    int n; cin >> n;
    string s; cin >> s;
    s = ' ' + s;
    int sum = n * (n + 1) / 2;
    if (sum & 1) {
        cout << "-1" << endl;
        return;
    }
    sum /= 2;
    vector<int> pos(n + 1, 0);
    for (int i = n; i >= 1; i --) {
        if (sum - i >= 0) {
            sum -= i;
            pos[i] = 1;
        }
    }
    string ans = "";
    for (int i = 1; i <= n; i ++) {
        if (pos[i]) {
            if (s[i] == '1') ans += '3';
            else ans += '1';
        } else {
            if (s[i] == '1') ans += '4';
            else ans += '2';
        }
    }
    cout << ans << endl;
}

K - Mahjong Sorting

题意:略(ε=(´ο`*)))唉);

思路:大模拟,模拟方式很重要,二维拆开模拟+思路混乱WA麻了;

  • 首先,将二维的麻将+点数转换为一维的:
    • 牌为C,点数为x,记录为x;
    • 牌为B,点数为x,记录为x+m;
    • 牌为D,点数为x,记录为x+2*m;
  • 如果当前手牌只有1,则所有的3*m的牌都可能为幸运牌, 优先级1;
  • 现在给出的序列按照题目要求应该为一个递增序列,然后我们开始寻找是否存在空白牌:
  • 不存在空白牌,则当前手牌第一张以及非手牌的3*m-n张牌都可能为幸运牌,优先级3;
  • 特殊,如果当前第二张手牌不为空白牌,且第一张手牌大于第二张手牌,则说明第一张手牌必然是幸运牌,答案为1,优先级2;
  • 其余的,根据空白牌的位置计算区间可能的幸运牌数即可,优先级4;
  • 特判优先级很重要!!!;

AC code:

void solve() {
    int n, m; cin >> n >> m;
    int pos = -1;
    vector<int> a;
    for (int i = 0; i < n; i ++) {
        char c; cin >> c;
        if (c == 'W') {
            pos = i;
            a.push_back(-1);
            continue;
        }
        int x; cin >> x;
        if (c == 'C') a.push_back(x);
        else if (c == 'B') a.push_back(x + m);
        else a.push_back(x + 2 * m);
    }
    a.push_back(3*m+1);
    if (n == 1) {
        cout << 3 * m << endl;
        return;
    }
    if (pos != 1 && a[0] >= a[1]) {
        cout << 1 << endl;
        return;
    }
    if (pos == -1) {
        cout << 3 * m - n + 1 << endl;
        return;
    }
    int ans = 0;
    if (pos == 0) ans += a[1];
    else if (pos == 1) ans += a[2] - a[0];
    else ans += a[pos + 1] - a[pos - 1] - 1;
    cout << ans << endl;
}

L - Doki Doki Literature Club

题意:给出n个字符串单词以及对于每个单词的喜爱度,选出m个单词组成喜爱度最大且字典序最小的字符串排列;

思路:pair存一下,优先喜爱度大排列,次字典序小排列,取前m个输出即可;

AC code:

bool cmp (pair<int, string> a, pair<int, string> b) {
    if (a.first == b.first) return a.second < b.second;
    return a.first > b.first;
}

void solve() {
    int n, m; cin >> n >> m;
    vector<pair<int, string>> a(n);
    for (int i = 0; i < n; i ++) {
        cin >> a[i].second >> a[i].first;
    }
    sort(a.begin(), a.end(), cmp);
    vector<string> ans;
    int cnt = 0;
    for (int i = 0; i < m; i ++) {
        auto [x, s] = a[i];
        cnt += (m - i) * x;
        ans.push_back(s);
    }
    cout << cnt << ' ';
    cout << ans[0];
    for (int i = 1; i < m; i ++) cout << ' ' << ans[i];
    cout << endl;
}

M - Lucky 7

题意:给出长度为n的序列,是否存在元素x+b为7的倍数;

思路:根据题意跑一遍即可;

AC code:

void solve() {
    int n; cin >> n;
    vector<int> a(n);
    int b; cin >> b;
    for (int i = 0; i < n; i ++) cin >> a[i];
    for (int i = 0; i < n; i ++) {
        int x = a[i];
        if ((x + b) % 7 == 0) {
            cout << "Yes" << endl;
            return;
        } 
    }
    cout << "No" << endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1690477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【30天精通Prometheus:一站式监控实战指南】第7天:postgres_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们&#x1f44b;   欢迎加入【30天精通Prometheus】专栏&#xff01;&#x1f4da; 在这里&#xff0c;我们将探索Prometheus的强大功能&#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。&#x1f680;   Prometheus是云原生和DevOps的…

ZFNet论文详解

ZFNet CNN卷积网络的发展史 1. LetNet5(1998) 2. AlexNet(2012) 3. ZFNet(2013) 4. VGGNet(2014) 5. GoogLeNet(2014) 6. ResNet(2015) 7. DenseNet(2017) 8. EfficientNet(2019) 9. Vision Transformers(2020) 10. 自适应卷积网络(2021) 上面列出了发展到现在CNN的一些经典的…

系统架构师-考试-基础题-错题集锦2

108.总线-全双工、半双工&#xff1a; 109.软件配置管理-产品配置&#xff1a; 产品配置&#xff1a;指一个产品在其生命周期各个阶段所产生的各种形式和各种版本的文档、计算机程序、部件及数据的集合。 注意&#xff1a;选项中的需求规格说明、设计说明等均可归属于文档。 …

数组-求和为k的连续子数组

一、题目描述 二、题目思路 这里注意&#xff1a;题目要求时间、空间复杂度都为O(n)&#xff0c;所以不能直接通过双层循环来暴力解(时间复杂度为O&#xff08;n&#xff09;)&#xff0c;可以使用Map实现。 1. 遍历数组计算sum(i)&#xff0c;Map记录sum值第一次出现的位置&…

DPDK实践之(1)dpdk基础使用

DPDK实践之(1)dpdk基础使用 Author: Once Day Date: 2024年5月19日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文档可参考专栏&#xff1a;Linux基础知识_Once…

C++:关联容器及综合运用:

关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。关联容器因此相比与顺序容器支持高效的关键字查找和访问。 其底层数据结构&#xff1a;顺序关联容器 ->红黑树&#xff0c;插入…

Matlab-遗传算法

文章目录 遗传算法一、介绍二、遗传算法的思想1.试用范围2.案例2.1 算法思路2.2 代码实现 遗传算法 一、介绍 遗传算法是一个启发式算法&#xff0c;主要可以用于优化问题&#xff0c;下边将进行举例来进行初步了解。 举例: 从做菜说起&#xff0c;首先你是一个大厨&#xff…

Ubuntu22.04本地部署qwen模型、jupyterlab开发环境、LoRA微调全流程

前言 这段时间在自己的Win11系统上部署了chatGLM以及Qwen模型&#xff0c;进行对话、推理以及工具调用都没有问题&#xff0c;但是在尝试进行微调的时候发现好像并不能成功&#xff0c;因此花费了很大的力气&#xff0c;又分别在ubuntu桌面版、windows子系统WSL2 Ubuntu上部署…

leetcode-55 跳跃游戏

leetcode Problem: 55. 跳跃游戏 思路 假设我们是一个小人&#xff0c;从第一个下标开始&#xff0c;每次经过一个位置&#xff0c;我们就可以根据当前位置的数值nums[i]和位置下标i计算出该位置所能到达的后续位置的最大值rnums[i]i。而这个r之前的区域一定都是可以经过的。…

Point-to-Voxel Knowledge Distillation for LiDAR Semantic Segmentation论文阅读

1. 代码地址 GitHub - cardwing/Codes-for-PVKD: Point-to-Voxel Knowledge Distillation for LiDAR Semantic Segmentation (CVPR 2022) 2. 动机 本篇文章旨在将点云语义分割的复杂模型中的知识蒸馏到较轻量级的模型中。具体的实现方式为将原有的3D backbone网络的每一层进…

恶劣天候激光雷达点云模拟方法论文整理

恶劣天候点云模拟方法论文整理 模拟雨天点云&#xff1a;【AAAI2024】模拟雪天点云&#xff1a;【CVPR 2022 oral】模拟雾天点云&#xff1a;【ICCV2021】模拟点云恶劣天候的散射现象&#xff1a;【Arxiv 2021】模拟积水地面的水花飞溅点云&#xff1a;【RAL2022】 模拟雨天点云…

蓝桥杯Web开发【大赛大纲】15届

一、 组别 Web应用开发分为&#xff1a;大学组和职业院校组。 每位选手只能申请参加其中一个组别的竞赛。各个组别单独评奖。 研究生和本科生只能报大学组。 其它高职高专院校可自行选择报任意组别。 二. 竞赛赛程 省赛时长&#xff1a;4小时。 决赛时长&#xff1a;4小…

纹理映射技术在AI去衣中的艺术与科技融合

引言&#xff1a; 在数字图像处理的世界里&#xff0c;AI去衣技术正逐步揭开其神秘的面纱。这门技术结合了深度学习的智能算法与图形学的先进手段&#xff0c;以实现对图像中衣物的智能识别与处理。在这一过程中&#xff0c;纹理映射技术发挥着至关重要的作用。本篇博客将深入探…

【GESP试卷】2024年03月Scratch四级试卷

2024年GESP03月认证Scratch四级试卷 分数&#xff1a;100 题数&#xff1a;27 一、单选题(共15题&#xff0c;每题2分&#xff0c;共30分) 010203040506070809101112131415CDBBACBCDCDADBA 1、小杨的父母最近刚刚给他买了一块华为手表&#xff0c;他说手表上跑的是鸿蒙&…

【综合类型第 39 篇】《我的创作纪念日》成为创作者的第2048天

这是【综合类型第 39 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 前言 无意间看了一眼CSDN的私信&#xff0c;提示我 Allen Su &#xff0c;不知不觉今天已经是你成为创作者的 第2048天 啦&#xff0c;为了纪念这一天&#xff0c;我们为您准备了一份专属小…

vue3 响应式基础(怎么改变界面值)

在开发中&#xff0c;我们需要在改变一个数据的同时&#xff0c;去改变页面的变化&#xff0c;那这个时候响应式声明用起来就比较方便 之前做安卓开发的时候&#xff0c;要改变页面&#xff0c;首先拿到页面的一个控件&#xff0c;再对控件进行赋值或者其他的操作来改变界面 1、…

孢子捕捉分析仪的工作原理

TH-BZ1孢子捕捉分析仪是一种专门用于捕捉和分析空气中飘浮的病原菌孢子的设备。它利用现代传感技术、图像识别技术和网络通信技术&#xff0c;通过设置在田间的设备&#xff0c;连续不断地抽吸周围空气&#xff0c;吸附空气中漂浮的病原菌孢子到特制的载玻带上。然后&#xff0…

基于Kafka的日志采集

目录 前言 架构图 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 启动 二、部署filebeat 部署filebeat 添加配置文件 启动 三、部署kibana 部署kibana 修…

Vitis HLS 学习笔记--抽象并行编程模型-不良示例

目录 1. 简介 2. 基础 kernel 2.1 pass kernel 2.2 double_pass kernel 2.3 add_kernel 2.4 split kernel 3. 三种bypass 3.1 input_bypass 3.2 middle_bypass 3.3 output_bypass 4. 总结 1. 简介 本文展示三个在数据流水线中常见的问题&#xff1a; 输入参数绕过…

DAMA:数据治理 CDGA/CDGP 认证考试备考经验分享

一、关于DAMA中国和CDGA/CDGP考试 国际数据管理协会&#xff08;DAMA国际&#xff09;是一个全球性的专业组织&#xff0c;由数据管理和相关的专业人士组成&#xff0c;非营利性机构&#xff0c;厂商中立。协会自1980年成立以来&#xff0c;一直致力于数据管理和数字化的研究、…