第十六次CCF计算机软件能力认证
第一题:小中大
在数据分析中,最小值最大值以及中位数是常用的统计信息。
老师给了你 n 个整数组成的测量数据,保证有序(可能为升序或降序),可能存在重复的数据。
请统计出这组测量数据中的最大值、中位数以及最小值,并按照从大到小的顺序输出这三个数。
输入格式
第一行输入一个整数 n。
第二行中存在 n 个有序的整数,表示测量数据,可能为升序或降序排列,可能存在连续多个整数相等,整数与整数之间使用空格隔开。
输出格式
包含一行,包括最大值、中位数以及最小值共三个数,并按照从大到小的顺序输出。
数据与数据之间使用空格隔开。
对于整数请直接输出整数,对于可能出现的分数,请输出四舍五入保留 1 位小数的结果。
数据范围
测试点 n 测量数据的绝对值 测量数据是否均相同 1,2 ≤1e3 ≤1e7 是 3,4,5,6 ≤1e3 ≤1e7 否 7,8 ≤1e5 ≤1e7 是 9∼20 ≤1e5 ≤1e7 否 输入样例1:
3 -1 2 4输出样例1:
4 2 -1样例1解释
4 为最大值,2 为中位数,−1 为最小值。
输入样例2:
4 -2 -1 3 4输出样例2:
4 1 -2样例2解释
4 为最大值,(−1+3)÷2=1 为中位数,−2 为最小值。
#include<iostream>using namespace std;const int N = 1e5 + 10;
int n;
int a[N];
int _max = -0x3f3f3f3f , _min = 0x3f3f3f3f;int main()
{cin >> n;for(int i = 0;i < n;i ++) cin >> a[i] , _max = max(_max , a[i]) , _min = min(_min , a[i]);double x = 0;if(n & 1) x = a[n / 2];else x = (a[n / 2] + a[n / 2 - 1]) * 1.0 / 2;if((int)x == x)printf("%d %d %d" , _max , (int)x , _min);else printf("%d %.1lf %d" ,_max , x , _min);return 0;
}
n = int(input())
l = list(map(int , input().split()))
x = 0
if n & 1:x = l[n // 2]
else:x = (l[n // 2 - 1] + l[n // 2]) / 2
print(max(l) , end = ' ')
if int(x) == x:print(int(x) , end = ' ')
else:print("%.1lf" %(x) , end = ' ')
print(min(l))
第二题:二十四点
二十四点是一款著名的纸牌游戏,其游戏的目标是使用 3 个加减乘除运算使得 4 张纸牌上数字的运算结果为 24。
定义每一个游戏由 4 个从 1−9 的数字和 3 个四则运算符组成,保证四则运算符将数字两两隔开,不存在括号和其他字符,运算顺序按照四则运算顺序进行。
其中加法用符号
+表示,减法用符号-表示,乘法用小写字母x表示,除法用符号/表示。在游戏里除法为整除(向下取整),例如 2/3=0,3/2=1,4/2=2,−3/7=−1。
老师给了你 n 个游戏的解,请你编写程序验证每个游戏的结果是否为 24。
输入格式
第一行输入一个整数 n。
从第 2 行开始到第 n+1 行中,每一行包含一个长度为 7 的字符串,为上述的 24 点游戏,保证数据格式合法。
输出格式
包含 n 行,对于每一个游戏,如果其结果为 24 则输出字符串
Yes,否则输出字符串No。数据范围
输入样例:
10 9+3+4x3 5+4x5x5 7-9-9+8 5x6/5x4 3+5+7+9 1x1+9-9 1x9-5/9 8/5+6x9 6x7-3x6 6x4+4/5输出样例:
Yes No No Yes Yes No No No Yes Yes样例解释
9+3+4×3=24 5+4×5×5=105 7-9-9+8=-3 5×6/5×4=24 3+5+7+9=24 1×1+9-9=1 1×9-5/9=9 8/5+6×9=55 6×7-3×6=24 6×4+4/5=24
解题思路:
使用python的eval函数进行求解
for _ in range(int(input())):s = input()s = s.replace("x" , "*")s = s.replace("/" , "//")if eval(s) == 24:print("Yes")else:print("No")
第三题:损坏的RAID5(这一次的最难的)
大模拟
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;typedef unsigned int UI;
const int N = 1010, M = 40 * 1024 * 8 + 10;int n, s, l;
UI disk[N][M / 8];
bool st[N];
char str[M];
int len;inline UI get(char c)
{if (c <= '9') return c - '0';return c - 'A' + 10;
}inline char get(UI x)
{if (x <= 9) return x + '0';return x - 10 + 'A';
}inline string u2s(UI x)
{string res;for (int i = 7; i >= 0; i -- )res += get(x >> (i << 2) & 15);return res;
}inline int get_real_col(int r, int c)
{r %= n;r = n - 1 - r;return (r + 1 + c) % n;
}int main()
{scanf("%d%d%d", &n, &s, &l);for (int u = 0; u < l; u ++ ){int k;scanf("%d", &k);getchar();fgets(str, M, stdin);int sz = strlen(str) - 1;for (int i = 0; i < sz; i += 8){UI x = 0;for (int j = 0; j < 8; j ++ )x = (x << 4) + get(str[i + j]);disk[k][i >> 3] = x;}st[k] = true;len = max(len, sz >> 3);}int m;scanf("%d", &m);while (m -- ){int b;scanf("%d", &b);if (b >= len * (n - 1)) puts("-");else{int k = b / s;int row = k / (n - 1), col = get_real_col(row, k % (n - 1));int r = row * s + b % s;if (st[col])puts(u2s(disk[col][r]).c_str());else if (l == n - 1){UI x = 0;for (int i = 0; i < n; i ++ ) x ^= disk[i][r];puts(u2s(x).c_str());}else puts("-");}}return 0;
}。
第四题:消息传递接口
解题思路:使用队列进行模拟,信息传递接口
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <sstream>using namespace std;const int N = 10010;int n;
struct Op
{// 0代表S 1代表R -1代表等待int p, id;
};
queue<Op> q[N];
bool st[N];// 判断该进程是否在等待// 功能: PD pid进程当前指令能否执行完毕, 目前pid执行到{!type, oid}, 即期望对方是type
bool dfs(int p, int id, int pid)
{// 若等待的对方也在等待,则死锁if (st[id]) return false;st[id] = true;// 对方进入等待队列while (q[id].size()){auto t = q[id].front();// 如果对方等的那个刚刚好是自己,且刚刚好是自己所期待的if (t.p == p && t.id == pid){st[id] = false;q[id].pop();return true;}// PD 对方当前指令能否完成else if (dfs(t.p ^ 1, t.id, id)) q[id].pop();else return false;}st[id] = false;return p == -1;
}int main()
{int T;cin >> T >> n;getchar();while (T -- ){string str;for (int i = 0; i < n; i ++ ){st[i] = false;q[i] = queue<Op>();getline(cin, str);stringstream ssin(str);while (ssin >> str)if (str[0] == 'S') q[i].push({0, stoi(str.substr(1))});else q[i].push({1, stoi(str.substr(1))});}// 添加一个-1进程,等待所有0~n-1进程执行完bool success = true;for (int i = 0; i < n; i ++ )if (!dfs(-1, i, -1)){success = false;break;}if (success) puts("0");else puts("1");}return 0;
}
第五题:317号子问题
经典的图论问题(SPFA 或 迪杰斯特拉)
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<vector>using namespace std;
const int N = 1e4 + 10 , M = 2e5 + 10 , INF = 0x3f3f3f3f;
typedef pair<int , int>PII;
int h[M] , ne[M] , w[M] , e[M] , idx;void add(int a , int b , int c)
{e[idx] = b , w[idx] = c , ne[idx] = h[a] , h[a] = idx ++;
}
int solor[N];
int n , m , k;
bool st[N];
int dist[N] , cnt = 0;
int d[N][1010];void dij(int s)
{memset(dist , 0x3f , sizeof dist);memset(st , 0 , sizeof st);dist[s] = 0;priority_queue<PII , vector<PII> , greater<PII>>q;q.push({0 , s});while(!q.empty()){auto t = q.top();q.pop();int x = t.second;if(st[x]) continue;st[x] = true;for(int i = h[x];~i;i = ne[i]){int j = e[i];if(dist[j] > dist[x] + w[i]){dist[j] = dist[x] + w[i];q.push({dist[j] , j});}}}for (int i = 1; i <= n; i ++ ) d[i][cnt] = dist[i];
}void spfa(int start)
{int hh = 0, tt = 1;memset(dist, 0x3f, sizeof dist);int q[N];q[0] = start, dist[start] = 0;while (hh != tt){int t = q[hh ++ ];if (hh == N) hh = 0;st[t] = false;for (int i = h[t]; ~i; i = ne[i]){int j = e[i];if (dist[j] > dist[t] + w[i]){dist[j] = dist[t] + w[i];if (!st[j]){q[tt ++ ] = j;if (tt == N) tt = 0;st[j] = true;}}}}for (int i = 1; i <= n; i ++ ) d[i][cnt] = dist[i];
}int main()
{memset(h , -1 , sizeof h);scanf("%d %d %d" ,&n ,&m ,&k);for(int i = 1;i <= n;i ++)scanf("%d" ,&solor[i]);while(m --){int a , b , c;scanf("%d %d %d" ,&a ,&b ,&c);add(a , b , c) , add(b , a , c);}for(int i = 1;i <= n;i ++)if(solor[i]){// dij(i);spfa(i);cnt ++;}for(int i = 1;i <= n;i ++){sort(d[i] , d[i] + cnt);int res = 0;for(int j = 0;j < cnt && j < k;j ++)if(d[i][j] != INF) res += d[i][j];else break;printf("%d\n" , res);}return 0;
}
相关文章:
第十六次CCF计算机软件能力认证
第一题:小中大 在数据分析中,最小值最大值以及中位数是常用的统计信息。 老师给了你 n 个整数组成的测量数据,保证有序(可能为升序或降序),可能存在重复的数据。 请统计出这组测量数据中的最大值、中位数以及最小值&am…...
关于Postman如何配置随请求携带token
文章目录 一些吐槽实际应用 一些吐槽 首先吐槽一下 postman官网的文档说明,真是乱七八糟,一点都不清晰,能不能好好写用户手册啊(比如把用户都当作初始小白) 然后吐槽一下网上铺天盖地让我写js脚本应用全局access toke…...
逆向破解学习-登山赛车
试玩 课程中的内容 Hook代码 import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.callbacks.XC_LoadPackage;public class HookComYoDo1SkiSafari2TXYYB_01 extends HookImpl{Overridepublic String p…...
linux下实现生产者和消费者 pv操作
线程同步与线程安全 生产者和消费者特点图示理解编程实现测试结果 生产者和消费者 特点 1.解耦:因为多了一个缓冲区,所以生产者和消费者并不直接相互调用,这样生产者和消费者的代码发生变化,都不会对对方产生影响。这样其实就是把生产者和消…...
十六、遥感影像识别
1、获取遥感影像数据 或用卫星遥感数据,或用无人机低空采集,原始数据加工,最后提供CSV、Excel、GeoTIFF、ENVI等数据文件。 ENVI格式的原始数据文件可以存储多维数据,包括三维数组、二维数组、一维数组甚至标量等。这是因为ENVI格式支持不仅仅是多光谱或高光谱数据…...
源码角度分析@configuration和@component不同
1.configuration是component的内部类,configuration包含component注解。 2.configuration中所有带Bean都会被CGLIB动态代理,调用此配置类中的方法都会返回同一个实例。component不会被代理,调用配置类中的方法都会新建一个实例。 3.configura…...
实现分布式事务:Java与MySQL的XA事务协调
目录 一、什么是XA事务 二、Java中的XA事务支持 三、MySQL的XA事务协调 四、注意事项和最佳实践 五、基于 java 语言的开发工具 六、小结 分布式事务是在跨多个数据库或服务之间保持一致性的重要机制。Java与MySQL的XA(eXtended Architecture)事务…...
如何通过CRM系统进行成功的客户生命周期管理?
吸引新客户,提供无与伦比的服务或商品,以及建立成功的客户关系,是每个企业努力追求的目标。然而,实现这些目标需要的不仅仅是良好的愿景,还需要实施客户生命周期管理流程。 什么是客户生命周期管理? 客户…...
Leetcode 977. 有序数组的平方
题目: Leetcode 977. 有序数组的平方 描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序 思路: 双指针法 数组其实是有序的, 只不过负数平方之…...
vue3中使用toValue
toValue() 是一个在 3.3 版本中新增的 API。它的设计目的是将 ref 或 getter 规范化为值。如果参数是 ref,它会返回 ref 的值;如果参数是函数,它会调用函数并返回其返回值 示例...
阿里云国际版CDN使用教程!
当网站流量达到一定值后,势必会造成网站访问卡堵,这时候阿里云CDN将会一个很好的选择,阿里云 CDN 是由全球分布式边缘节点组成的虚拟网络。阿里云 CDN 可减少源站负载,防止网络拥塞,使用阿里云 CDN 加速图像、小文件、…...
【docker】Dockerfile构建镜像常用指令:
文章目录 一、常用命令:二、注意事项:三、add和copy的区别:【1】ADD 指令支持自动解压缩功能【2】ADD 指令可以从 URL 复制内容【3】 ADD 指令具有隐式的文件拷贝功能 一、常用命令: Dockerfile是一个文本文件,包含了一条条的指令,在基于指定的镜像上&am…...
Java课题笔记~ 会话跟踪
3.1 Cookie 【案例1 记住密码】 实现效果 当勾选“记住密码”复选框时,下次访问登录页面,会自动记住账号,密码信息。 【案例2 上次访问时间】 实现效果 首次登录,显示“欢迎您,XXX” 下次登录,显示“欢迎您…...
HbuildX生成安卓签名证书
HbuildX生成安卓签名证书 安装和配置JRE环境 根据此链接安装和配置JRE环境 生成签名证书 keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystoretestalias是证书别名,可修改为自己想设置的字符,建议…...
在Ruoyi中采用Ajax动态生成Echarts图表实践
前言 在之前博文中,我们讲解了如何使用java在后台进行Echarts的图表生成组件,博文如下: 序号 博客连接1一款基于JAVA开发的Echarts后台生成框架2Ruoyi单体项目与Echarts4.2.1地图集成时的思路及解决办法3解决Ruoyi单体版本集成Echarts多图表时…...
资讯速递 | ArkUI-X 预览版已正式开源!
OpenHarmony项目群技术指导委员会(以下简称“TSC”)-跨平台应用开发框架TSG所孵化项目 —— ArkUI-X,近期已正式开源 ,开发者基于一套主代码,就可以将在OpenHarmony上开发的精美、高性能应用同时运行在Android、iOS等其…...
HTML <select> 标签
实例 创建带有 4 个选项的选择列表: <select><option value ="volvo">Volvo</option><option value ="saab">Saab</option><option value="opel">Opel</option><option value="audi"…...
Flutter:文件上传与下载(下载后预览)
Dio dio是一个强大的Dart Http请求库,提供了丰富的功能和易于使用的API,支持文件上传和下载。 这个就不介绍了,网上有很多的封装案例。 background_downloader 简介 适用于iOS,Android,MacOS,Windows和L…...
[前端系列第6弹]Ajax简明教程:轻松实现Web页面的异步交互
在这篇文章中,我将介绍Ajax的基本概念、原理、优缺点、实现方法和应用场景,以及如何使用它来实现Web页面的异步交互。还将给一些简单而实用的例子,让你可以跟着我一步一步地编写自己的Ajax代码。 目录 一、什么是Ajax 二、如何使用Ajax &a…...
ssh-keygen 做好免密登录后不生效
免密说明 通常情况下,我们ssh到其他服务器需要知道服务器的用户名和密码。对于需要经常登录的服务器每次都输入密码比较麻烦,因此我们可以在两台服务器上做免密登录,即在A服务器可以免密登录B服务器。 在A服务器上登录B服务器时,…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
