当前位置: 首页 > news >正文

【传智杯】排排队、小卡与质数 2、1024 程序员节发橙子题解

🍎 博客主页:🌙@披星戴月的贾维斯
🍎 欢迎关注:👍点赞🍃收藏🔥留言
🍇系列专栏:🌙 蓝桥杯
🌙请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信,世界上总有一些美好值得我们全力以赴,哪怕粉身碎骨!🌙
🍉一起加油,去追寻、去成为更好的自己!

文章目录

  • 🍎1、# [传智杯 #4 决赛] 排排队
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
      • 数据规模与约定
      • 提示
      • C++ 语言的高效输出样例
      • Java 语言的高效输出样例
      • 分析题意:
  • 🍎2、# [传智杯 #4 初赛] 小卡与质数 2
    • 题目背景
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
      • 分析题意:
  • 🍎3、# [传智杯 #2 初赛] 1024 程序员节发橙子
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
        • 样例 1 解释
        • 数据规模与约定
      • 分析题意:
  • 🍎总结

提示:以下是本篇文章正文内容,下面案例可供参考


    这次我们继续和大家分享一些传智杯题解,多刷题对我们来说是一件非常重要的事,坚持下去会有很多收获!

🍎1、# [传智杯 #4 决赛] 排排队

题目描述

cyq 在 tsyz 担任了体育老师,负责排队一事。

在 tsyz 中,每个人都有一个身高 a i a_{i} ai,并且只有相邻的两个人可以交换位置。cyq 带领的队伍有 n n n 个人,他现在要给大家排队形。

给定一个长度为 n n n 的序列 b b b,一个队形被认为美观,当且仅当对于所有的 i = 1 , 2 , 3 , … n i = 1, 2, 3, \dots n i=1,2,3,n a i = b i a_{i} =b_{i} ai=bi。cyq 想知道,他能否让大家的队形变得美观,并且交换相邻两个人的次数不超过 n 2 n^2 n2 次。这个问题把 c y q cyq cyq 难住了,请你帮他来解决这个问题,如果存在合法的交换方案,输出 YES,并给出一组方案;否则,输出 NO

输入格式

本题单测试点内有多组测试数据

第一行是一个整数 T T T,表示数据组数,对于每组数据:
第一行是一个整数,表示队伍的长度 n n n
第二行有 n n n 个整数,第 i i i 个整数表示第 i i i 个人的身高 a i a_i ai
第三行有 n n n 个整数,第 i i i 个整数表示美观队形里第 i i i 个人的身高 b i b_i bi

输出格式

对每组数据依次分别输出答案。

对于每组数据,若存在一种方案,则在第一行输出一个 YES,否则输出一个 NO

如果输出 YES,下面则输出若干行每行两个整数 i , j i,j i,j,表示第 i i i 个同学和第 j j j 个同学交换位置,显然 ∣ i − j ∣ = 1 |i-j|=1 ij=1。在交换完成后,你还需要输出一行 0 0 表示你的操作结束了,请注意数组的下标从 1 开始编号至 n n n

如果输出 NO,则接下来什么都不需要输出。

请特别注意,对于每组数据,你的操作次数不能超过 n 2 n^2 n2(不包括 0 0 一行),否则将得到 WA(Wrong Answer) 的结果

样例 #1

样例输入 #1

3
4
1 2 2 3
3 2 2 1
3
1 2 3
1 2 4
1
1
1

样例输出 #1

YES
4 3
2 3
1 2
3 2
3 4
0 0
NO
YES
0 0

提示

数据规模与约定

对于全部的测试点,保证 1 ≤ T ≤ 10 1\leq T \leq 10 1T10 1 ≤ n ≤ 1 0 3 1\leq n \leq 10^3 1n103 1 ≤ a i , b i ≤ 1 0 9 1\leq a_{i},b_{i}\leq 10^9 1ai,bi109,且各个测试点 n n n 之和不超过 1000 1000 1000,即 ∑ n ≤ 1 0 3 \sum n\leq 10^3 n103

提示

  • 请注意大量的输出输出对程序效率造成的影响,不要频繁刷新缓冲区。例如,对于使用 std::cout 的 C++ 选手,请使用 '\n' 而不是 std::endl 来换行;对于 java 选手,请选择高效率的输出方式,如使用 PrintWriter;python 选手可以正常的使用 print 而无需考虑效率问题。
  • 请按照输出格式的要求输出您的答案,如果格式不符合要求,返回的评测信息将可能是 TLE、RE、WA、UKE 等任何结果。

C++ 语言的高效输出样例

#include <iostream>
int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);for (int i = 1; i <= 5; ++i) {std::cout << i << '\n'; // 注意这里不能使用 std::endl}
}

Java 语言的高效输出样例

import java.io.PrintWriter;public class Main {public static void main(String[] args) {PrintWriter ot = new PrintWriter(System.out);for (int i = 1; i <= 5; ++i) {ot.println(i);}ot.flush(); // 请务必保证在程序结束时运行本条语句,否则在缓冲区的内容无法输出}
}

分析题意:

我们先看题目,发现该题的输出不仅要我们判断队形是否“美观”,而且如果,美观,我们还要输出交换的过程,就是这个输出交换过程会让人比较头疼,但是结合题目的意思,我们每次只能交换相邻的两个数,这个不就对上了我们的冒泡排序了吗,然后我们把每次交换的位置输出即可,然后如果是判断队形是否美观,我们可以用另外两个对照数组,排序后,如果是美观,就输出YES,否则NO,因为冒泡排序复杂度最差是n方,不用考虑题目的限制 n <1000,等等。
C++代码示例:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 +10;
int t;
int a[N], b[N], c[N], d[N];void solve()
{int n;bool flag = false;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i];c[i] = a[i];// c数组是a的对照数组}for(int i = 1; i <= n; i++){cin >> b[i];d[i] = b[i];}sort(c + 1, c + 1 + n);sort(d + 1, d + 1 + n);for(int i = 1; i <= n; i++){if(c[i] != d[i]){cout << "NO" << '\n';flag = true;break;}}if(!flag){cout << "YES\n";for(int i = 1; i <= n; i++){if(a[i] != b[i]){for(int j = i; j <= n; j++)if(a[j] == b[i]){for(int k = j; k > i; k--){swap(a[k], a[k - 1]);cout << k << " " << k - 1 << '\n';}break;}}}cout << "0 0\n";}
}
int main ()
{ios::sync_with_stdio(0);cin.tie(0);cin >> t;while(t --){solve();}return 0;
}

🍎2、# [传智杯 #4 初赛] 小卡与质数 2

题目背景

小卡迷上了质数!

题目描述

小卡最近迷上了质数,所以他想把任何一个数都转化为质数!

小卡有 T T T 次询问,每次给你一个数字 x x x,问有多少个比 x x x 小的非负整数 y y y,使得 x ⊕ y x\oplus y xy 是质数,其中 ⊕ \oplus 表示按位异或。

输入格式

第一行一个正整数 T ( 1 ≤ T ≤ 1 0 5 ) T(1\le T\le10^5) T(1T105),表示有 T T T 组询问。

接下来 T T T 行,每行一个正整数 x ( 1 ≤ x ≤ 1 0 6 ) x(1\le x\le 10^6) x(1x106)

输出格式

对于每组询问,输出一行一个整数,表示答案。

样例 #1

样例输入 #1

9
5
6
7
8
9
10
100
1000
10000

样例输出 #1

2
4
4
2
2
4
22
163
1132

分析题意:

我们通过审题不难发现这题是考我们筛质数和位运算的,但是看这道题的数据量1e5次询问,所以会很卡时间复杂度,筛质数的复杂度是nlogn,刚好能过,如果是n*n的双重循环判断有几个符合,那就会超时,所以这道题难度还是比较大的,一起来看看代码是怎么实现的吧。

#include<bits/stdc++.h>
using namespace std;const int N = 2e6 + 10;
int t;
int primes[N], cat[26];
bool st[N];
int n, cnt;
void get_primes(int n)
{for(int i = 2; i <= n; i++){if(!st[i]) primes[++cnt] = i;//把每个数的倍数删掉for(int j =1; j <= cnt &&i*primes[j] <= n; j++){st[primes[j] * i] = true;if(i % primes[j] == 0) break;}}for(int i = 1; i <= cnt; i++)for(int j = 25; j >= 1; j--)if(primes[i]&(1 << (j - 1))){cat[j]++;break;}
}
void solve()
{int x;int ans = 0;cin >> x;for(int i = 25; i >= 1; i--)if(x&(1<<(i - 1)))ans += cat[i];cout << ans << endl;}
int main ()
{get_primes(N);cin >> t;while(t --){solve();}return 0;
}

🍎3、# [传智杯 #2 初赛] 1024 程序员节发橙子

题目描述

每年的 1024 程序员节日,黑马程序员都会举办大型的庆祝活动。今年的程序员节也不例外,每个班级的同学都发了橙子。

班级里有 n n n 名同学从前到后排成一排,且已经得知了这些同学的成绩,其中第 i i i 名同学的成绩是 a i a_i ai。班主任想根据同学们上个阶段的考试成绩来评定发橙子的数量。为了激励成绩优秀同学,发橙子时需要满足如下要求:

  • 相邻同学中成绩好的同学的橙子必须更多。若相邻的同学成绩一样,则它们分到的数量必须平等。
  • 每个同学至少分配一个橙子

由于预算有限,班主任希望在符合要求的情况下发出尽可能少的橙子。请问,至少需要准备多少橙子呢?

输入格式

第一行是一个整数 n n n,表示学生数量。

接下来一行有 n n n 个整数,第 i i i 个整数 a i a_i ai,表示第 i i i 个同学的成绩。

输出格式

输出答案,也就是需要最少准备多少个橙子。

样例 #1

样例输入 #1

5
3 4 5 4 3

样例输出 #1

9

提示

样例 1 解释

每位同学拿到的橙子的数量分别是 1 , 2 , 3 , 2 , 1 1,2,3,2,1 1,2,3,2,1,所以至少需要准备 9 9 9 个。

数据规模与约定

对于全部的测试点,保证 1 ≤ n ≤ 1 0 6 1 \leq n \leq 10^6 1n106 0 ≤ a i ≤ 1 0 9 0 \leq a_i \leq 10^9 0ai109

分析题意:

这道题是让我们按照一个规则分发橘子,但是-相邻同学中成绩好的同学的橙子必须更多。若相邻的同学成绩一样,则它们分到的数量必须平等和 每个同学至少分配一个橙子这两个条件可能会相互冲突(一些情况下),所以当我们要找出,分发的橘子的最少数,一种理想的情况是成绩是排好序的从小到大或者从大到小,这样我们发橙子和统计就会比较简单,用这个思路再推广,我们可以求一遍正的递增序列的橙子数,再求递减序列的橙子数,有冲突就选大的那个,即可求出答案。
C++代码示例

#include<bits/stdc++.h>
using namespace std;const int N = 1e6 + 10;
typedef long long ll;
int a[N], t[N]; //a组存成绩,t组存橘子数
int n, k;
ll ans = 0;
int main ()
{cin >> n;for(int i = 1; i <= n; i++) cin >> a[i], t[i] = 1;//求正递增子序列for(int i = 2; i <= n; i++){if(a[i - 1] < a[i]) t[i] = t[i - 1] + 1;if(a[i - 1] == a[i]) t[i] = t[i - 1];}//求反不降子序列for(int i = n; i >= 2; i --){if(a[i] < a[i - 1]) t[i - 1] = max(t[i - 1], t[i] + 1);if(a[i - 1] == a[i]) t[i - 1] = t[i];}for(int i = 1; i <= n; i++) ans += t[i];cout << ans << endl;return 0;
}

🍎总结

    这次和大家分享了传智杯的几题普及/普及+难度的题,希望大家读后能有所收获!

相关文章:

【传智杯】排排队、小卡与质数 2、1024 程序员节发橙子题解

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; 蓝桥杯 &#x1f319;请不要相信胜利就像山坡上的蒲公英一样唾手…...

Oracle

1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下&#xff0c;将关键性文件拷贝到另外位置的一种说法。适用于所有模式的数据库。 优点 是非常快速的备份方法&#xff08;只需拷贝文件&#xff09;容易归档&#xff08;简单拷贝即可&a…...

2023年c语言程序设计大赛

7-1 这是一道送分题 为了让更多的同学参与程序设计中来&#xff0c;这里给同学们一个送分题&#xff0c;让各位感受一下程序设计的魅力&#xff0c;并祝贺各位同学在本次比赛中取得好成绩。 注&#xff1a;各位同学只需将输入样例里的代码复制到右侧编译器&#xff0c;然后直…...

9.vue3项目(九):spu管理页面的新增和修改

目录 一、SPU和SKU概念 二、SPU静态搭建 1.代码编辑 2.效果展示 三、封装接口以及出参入参...

人工智能:让生活更便捷、更智能——探讨人工智能在生活中的作用与挑战

文章目录 前言人工智能的定义与分类人工智能的领域一、智能语音助手改变日常生活二、智能驾驶带来出行革命三、人工智能在医疗健康领域的应用四、教育领域的人工智能创新 人工智能的应用生活方面的影响工作方面的影响 应对AI带来的挑战后记 前言 人工智能相关的领域&#xff0…...

【C++】类和对象——const修饰成员函数和取地址操作符重载

在上篇博客中&#xff0c;我们已经对于日期类有了较为全面的实现&#xff0c;但是&#xff0c;还有一个问题&#xff0c;比如说&#xff0c;我给一个const修饰的日期类的对象 这个对象是不能调用我们上篇博客写的函数的&#xff0c;因为&d1是const Date*类型的&#xff…...

express+mySql实现用户注册、登录和身份认证

expressmySql实现用户注册、登录和身份认证 注册 注册时需要对用户密码进行加密入库&#xff0c;提高账户的安全性。用户登录时再将密码以相同的方式进行加密&#xff0c;再与数据库中存储的密码进行比对&#xff0c;相同则表示登录成功。 安装加密依赖包bcryptjs cnpm insta…...

【PyTorch】(二)加载数据集

文章目录 1. 创建数据集1.1. 直接继承Dataset类1.2. 使用TensorDataset类 2. 加载数据集3. 将数据转移到GPU 1. 创建数据集 主要是将数据集读入内存&#xff0c;并用Dataset类封装。 1.1. 直接继承Dataset类 必须要重写__getitem__方法&#xff0c;用于根据索引获得相应样本…...

如何提高3D建模技能?

无论是制作影视动画还是视频游戏&#xff0c;提高3D建模技能对于你的工作都至关重要的。那么如何能创建出精美的3D模型呢&#xff1f;本文给大家一些3D建模技能方面的建议。 3D建模通过专门的软件完成&#xff0c;涉及制作三维对象。这项技能在视频游戏开发、建筑、动画和产品…...

【前端开发】Next.js与Nest.js之间的差异2023

在快节奏的网络开发领域&#xff0c;JavaScript已成为构建可靠且引人入胜的在线应用程序的标准语言。然而&#xff0c;随着对适应性强、高效的在线服务的需求不断增加&#xff0c;开发人员通常不得不从广泛的库和框架中进行选择&#xff0c;以满足其项目的要求。Next.js和Nest.…...

【CAN通信】CanIf模块详细介绍

目录 1.内容简介 2.CanIf详细设计 2.1 CanIf功能简介 2.2 一些关键概念 2.3依赖的上下层模块 2.4 功能详细设计 2.4.1 Hardware object handles 2.4.2 Static L-PDUs 2.4.3 Dynamic L-PDUs 2.4.4 Dynamic Transmit L-PDUs 2.4.5 Dynamic receive L-PDUs 2.4.6Physi…...

PS最新磨皮软件Portraiture4.1.2

Portraiture是一款好用的PS磨皮滤镜插件&#xff0c;拥有磨皮美白的功能&#xff0c;操作也很简单&#xff0c;一键点击即可实现美白效果&#xff0c;软件还保留了人物的皮肤质感让照片看起来更加真实。portraiture体积小巧&#xff0c;不会占用过多的电脑内存哦。 内置了多种…...

旋转框(obb)目标检测计算iou的方法

首先先定义一组多边形&#xff0c;这里的数据来自前后帧的检测结果 pre [[[860.0, 374.0], [823.38, 435.23], [716.38, 371.23], [753.0, 310.0]],[[829.0, 465.0], [826.22, 544.01], [684.0, 539.0], [686.78, 459.99]],[[885.72, 574.95], [891.0, 648.0], [725.0, 660.0]…...

render函数举例

在这段代码中&#xff0c;renderButton是一个对象吗 还有render为什么不能写成render() {} 代码原文链接 <template><div><renderButton /></div> </template><script setup> import { h, ref } from "vue"; const renderButt…...

微信小程序文件预览和下载-文件系统

文件预览和下载 在下载之前&#xff0c;我们得先调用接口获取文件下载的url 然后通过wx.downloadFile将下载文件资源到本地 wx.downloadFile({url: res.data.url,success: function (res) {console.log(数据,res);} })tempFilePath就是临时临时文件路径。 通过wx.openDocume…...

图解Redis适用场景

Redis以其速度而闻名。 1 业务数据缓存 1.1 通用数据缓存 string&#xff0c;int&#xff0c;list&#xff0c;map。Redis 最常见的用例是缓存对象以加速 Web 应用程序。 此用例中&#xff0c;Redis 将频繁请求的数据存储在内存。允许 Web 服务器快速返回频繁访问的数据。这…...

掌握Python BentoML:构建、部署和管理机器学习模型

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com BentoML是一个开源的Python框架&#xff0c;旨在简化机器学习模型的打包、部署和管理。本文将深入介绍BentoML的功能和用法&#xff0c;提供详细的示例代码和解释&#xff0c;帮助你更好地理解和应用这个强大的工…...

西南科技大学模拟电子技术实验二(二极管特性测试及其应用电路)预习报告

目录 一、计算/设计过程 二、画出并填写实验指导书上的预表 三、画出并填写实验指导书上的虚表 四、粘贴原理仿真、工程仿真截图 一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入…...

熟悉SVN基本操作-(SVN相关介绍使用以及冲突解决)

一、SVN相关介绍 1、SVN是什么? 代码版本管理工具它能记住你每次的修改查看所有的修改记录恢复到任何历史版本恢复已经删除的文件 2、SVN跟Git比&#xff0c;有什么优势 使用简单&#xff0c;上手快目录级权限控制&#xff0c;企业安全必备子目录checkout&#xff0c;减少…...

代码随想录二刷 |字符串 |反转字符串II

代码随想录二刷 &#xff5c;字符串 &#xff5c;反转字符串II 题目描述解题思路 & 代码实现 题目描述 541.反转字符串II 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果…...

哪吒汽车拔头筹,造车新势力首家泰国工厂投产

中国造车新势力首家泰国工厂投产&#xff01;11月30日&#xff0c;哪吒汽车位于泰国的首家海外工厂——泰国生态智慧工厂正式投产下线新车&#xff0c;哪吒汽车联合创始人兼CEO张勇、哪吒汽车泰国合作伙伴BGAC公司首席执行官万查曾颂翁蓬素等出席仪式。首辆“泰国制造”的哪吒汽…...

Redis String类型

String 类型是 Redis 最基本的数据类型&#xff0c;String 类型在 Redis 内部使用动态长度数组实现&#xff0c;Redis 在存储数据时会根据数据的大小动态地调整数组的长度。Redis 中字符串类型的值最大可以达到 512 MB。 关于字符串需要特别注意∶ 首先&#xff0c;Redis 中所…...

lxd提权

lxd/lxc提权 漏洞介绍 lxd是一个root进程&#xff0c;它可以负责执行任意用户的lxd&#xff0c;unix套接字写入访问操作。而且在一些情况下&#xff0c;lxd不会调用它的用户权限进行检查和匹配 原理可以理解为用用户创建一个容器&#xff0c;再用容器挂载宿主机磁盘&#xf…...

Ubuntu+Tesla V100环境配置

系统基本信息 nvidia-smi’ nvidia-smi 470.182.03 driver version:470.182.03 cuda version: 11.4 查看系统体系结构 uname -aUTC 2023 x86_64 x86_64 x86_64 GNU/Linux 下载miniconda https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CM&OA https://mi…...

leetcode:用栈实现队列(先进先出)

题目描述 题目链接&#xff1a;232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 题目分析 我们先把之前写的数组栈的实现代码搬过来 用栈实现队列最主要的是实现队列先进先出的特点&#xff0c;而栈的特点是后进先出&#xff0c;那么我们可以用两个栈来实现&…...

<JavaEE> 什么是进程控制块(PCB Process Control Block)?

目录 一、进程控制块的概念 二、进程控制块的重要属性 2.1 唯一身份标识&#xff08;PID&#xff09; 2.2 内存指针 2.3 文件描述符表 2.4 状态 2.5 优先级 2.6 记账信息 2.7 上下文 一、进程控制块的概念 进程控制块&#xff08;Process Control Block, PCB&#xff…...

简历上的工作经历怎么写

通过了简历筛选&#xff0c;后续的面试官会仔细阅读你的简历内容。他们在找什么呢&#xff1f;他们希望搞清楚你在某一段经历中具体干了什么&#xff0c;并且判断你的能力具体达到了什么水平。 简历在线制作下载&#xff1a;百度幻主简历 面试官喜欢具体的经历 越具体&#x…...

数值分析总结

数值分析总结思维导图 Docs 相关代码的使用和注释 列主元Gauss消元法 %%列主元高斯消元法 function xGauss_lzy(A,b)%A为方程组系数矩阵&#xff0c;b为方程组的右侧向量&#xff0c;x为方程组的解 [n,m]size(A);%%得到矩阵A的行和列的宽度 nblength(b);%%方程组右侧向量的长…...

osg demo汇总

1.example_osganimate 演示了路径动画的使用&#xff08;AnimationPath、AnimationPathCallback&#xff09;&#xff0c;路径动画回调能够做用在Camera、CameraView、MatrixTransform、PositionAttitudeTransform等四种类型的节点上。 演示了osgSim::OverlayNode的使用node 2…...

Leetcode.1590 使数组和能被 P 整除

题目链接 Leetcode.1590 使数组和能被 P 整除 rating : 2039 题目描述 给你一个正整数数组 n u m s nums nums&#xff0c;请你移除 最短 子数组&#xff08;可以为 空&#xff09;&#xff0c;使得剩余元素的 和 能被 p p p 整除。 不允许 将整个数组都移除。 请你返回你需…...