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

第十五次CCF计算机软件能力认证

第一题:小明上学

小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。

为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。

他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。

京州市的红绿灯是这样工作的:每盏红绿灯有红、黄、绿三盏灯和一个能够显示倒计时的显示牌。

假设红绿灯被设定为红灯 r 秒,黄灯 y 秒,绿灯 g 秒,那么从 0 时刻起,[0,r) 秒内亮红灯,车辆不许通过;[r,r+g) 秒内亮绿灯,车辆允许通过;[r+g,r+g+y) 秒内亮黄灯,车辆不许通过,然后依次循环。

倒计时的显示牌上显示的数字 l(l>0) 是指距离下一次信号灯变化的秒数。

一次上学的路上,小明记录下了经过每段路的时间,和各个红绿灯在小明到达路口时的颜色和倒计时秒数。

希望你帮忙计算此次小明上学所用的时间。

输入格式

第一行包含空格分隔的三个正整数 r、y、g,表示红绿灯的设置。

第二行包含一个正整数 n,表示小明总共经过的道路段数和看到的红绿灯数目。

接下来的 n 行,每行包含空格分隔的两个整数 k、t。k=0 表示经过了一段道路,耗时 t 秒,此处 t 不超过 1e6;k=1、2、3 时,分别表示看到了一个红灯、黄灯、绿灯,且倒计时显示牌上显示的数字是 t,此处 t 分别不会超过 r、y、g。

输出格式

输出一个数字,表示此次小明上学所用的时间。

数据范围

1≤n≤100,
1≤r,y,g≤1e6,
测试点 1,2 中不存在任何信号灯。
测试点 3,4 中所有的信号灯在被观察时均为绿灯。
测试点 5,6 中所有的信号灯在被观察时均为红灯。
测试点 7,8 中所有的信号灯在被观察时均为黄灯。
测试点 9,10 中将出现各种可能的情况。

输入样例:

30 3 30
8
0 10
1 5
0 11
2 2
0 6
0 3
3 10
0 3

输出样例:

70

样例解释

小明先经过第一段道路,用时 10 秒,然后等待 5 秒的红灯,再经过第二段道路,用时 11 秒,然后等待 2 秒的黄灯和 30 秒的红灯,再经过第三段、第四段道路,分别用时 6、3 秒,然后通过绿灯,再经过最后一段道路,用时 3 秒。

共计 10+5+11+2+30+6+3+3=70 秒。

#include<iostream>using namespace std;int r , y , g;
int n;int main()
{cin >> r >> y >> g;cin >> n;long long res = 0;while(n --){int a , b;cin >> a >> b;if(a == 0) res += b;else{if(a == 1) res += b;else if(a == 2) res += b + r;}}cout << res << endl;return 0;
}

 第二题:小明放学

解题思路:

灯时的总循环时间是r+y+g

#include<iostream>using namespace std;typedef long long ll;ll r , y , g , n;
ll res = 0;int main()
{cin >> r >> y >> g;cin >> n;while(n --){ll a , b;cin >> a >> b;if(!a) res += b;else{/*灯时的总循环时r + y + g使用数轴求解*/// 红灯if(a == 1) b = r - b;// 黄灯else if(a == 2) b = r + y + g - b;// 绿灯else b = r + g - b;b += res;b = b % (r + g + y);if(b < r) res += r - b;else if(b >= r + g) res += r + g + y - b + r;}}cout << res << endl;return 0;
}

第三题:CIDR合并

纯计算机网络的知识(应该是网络层的知识)

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 100010;int n;
struct IP
{string v;int k;bool operator< (const IP& t) const{if (v != t.v) return v < t.v;return k < t.k;}bool is_substr(IP& t){if (t.k < k) return false;if (v.substr(0, k) != t.v.substr(0, k)) return false;return true;}int get_number(string str){int res = 0;for (int i = 0; i < 8; i ++ )res = res * 2 + str[i] - '0';return res;}void print(){for (int i = 0; i < 32; i += 8){if (i) printf(".");printf("%d", get_number(v.substr(i, 8)));}printf("/%d\n", k);}
}ip[N];IP merge(IP& a, IP& b)
{IP res;res.k = -1;if (a.k != b.k) return res;if (a.v.substr(0, a.k - 1) != b.v.substr(0, b.k - 1)) return res;res.k = a.k - 1;res.v = a.v.substr(0, a.k - 1);while (res.v.size() <= 32) res.v += '0';return res;
}int main()
{scanf("%d", &n);char str[20];int d[4];for (int i = 0; i < n; i ++ ){scanf("%s", str);memset(d, 0, sizeof d);int cnt = 0;ip[i].k = -1;for (int j = 0; str[j]; j ++ ){if (str[j] == '/'){ip[i].k = atoi(str + j + 1);break;}if (str[j] == '.') continue;while (str[j] && str[j] != '.' && str[j] != '/')d[cnt] = d[cnt] * 10 + str[j ++ ] - '0';j -- ;cnt ++ ;}for (int j = 0; j < 4; j ++ )for (int k = 7; k >= 0; k -- )if (d[j] >> k & 1)ip[i].v += '1';elseip[i].v += '0';if (ip[i].k == -1) ip[i].k = cnt * 8;}sort(ip, ip + n);int k = 1;for (int i = 1; i < n; i ++ )if (!ip[k - 1].is_substr(ip[i]))ip[k ++ ] = ip[i];n = k;k = 1;for (int i = 1; i < n; i ++ ){ip[k ++ ] = ip[i];while (k >= 2){auto t = merge(ip[k - 2], ip[k - 1]);if (t.k != -1){k -= 2;ip[k ++ ] = t;}else break;}}n = k;for (int i = 0; i < n; i ++ )ip[i].print();return 0;
}

 第四题:数据中心

经典克鲁斯卡尔算法

#include<iostream>
#include<algorithm>
#include<vector>using namespace std;const int N = 1e6 + 10;
int n , m , root;
int p[N];struct node
{int a , b , c;
};bool cmp(node a , node b)
{return a.c < b.c;
}vector<node>edge;int find(int x)
{if(p[x] != x) p[x] = find(p[x]);return p[x];
}int main()
{cin >> n >> m >> root;for(int i = 1;i <= n;i ++)p[i] = i;while(m --){int a , b , c;cin >> a >> b >> c;edge.push_back({a , b , c});}sort(edge.begin() , edge.end() , cmp);int res = 0;for(int i = 0;i < edge.size();i ++){int pa = find(edge[i].a) , pb = find(edge[i].b);if(pa != pb){p[pa] = pb;res = edge[i].c;}}cout << res << endl;return 0;
}

 第五题:管道清洁

网络流问题

 

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 210, M = (500 + N) * 2 + 10, INF = 1e6;int n, m, S, T;
int h[N], e[M], f[M], w[M], ne[M], idx;
int q[N], dist[N], pre[N], incf[N];
bool st[N];
int din[N], dout[N];void add(int a, int b, int c, int d)
{e[idx] = b, f[idx] = c, w[idx] = d, ne[idx] = h[a], h[a] = idx ++ ;e[idx] = a, f[idx] = 0, w[idx] = -d, ne[idx] = h[b], h[b] = idx ++ ;
}bool spfa()
{int hh = 0, tt = 1;memset(dist, 0x3f, sizeof dist);memset(incf, 0, sizeof incf);q[0] = S, dist[S] = 0, incf[S] = INF;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 (f[i] && dist[j] > dist[t] + w[i]){dist[j] = dist[t] + w[i];pre[j] = i;incf[j] = min(f[i], incf[t]);if (!st[j]){q[tt ++ ] = j;if (tt == N) tt = 0;st[j] = true;}}}}return incf[T] > 0;
}int EK(int tot)
{int flow = 0, cost = 0;while (spfa()){int t = incf[T];flow += t, cost += t * dist[T];for (int i = T; i != S; i = e[pre[i] ^ 1]){f[pre[i]] -= t;f[pre[i] ^ 1] += t;}}if (flow != tot) return -1;return cost;
}int main()
{int C, E;scanf("%d%*d%d", &C, &E);while (C -- ){memset(h, -1, sizeof h);idx = 0;memset(din, 0, sizeof din);memset(dout, 0, sizeof dout);scanf("%d%d", &n, &m);S = 0, T = n + 1;int down_cost = 0;while (m -- ){int a, b;char c;scanf("%d %d %c", &a, &b, &c);int down, up;if (c == 'A') down = 1, up = INF, down_cost += E;else if (c == 'B') down = up = 1, down_cost += E;else if (c == 'C') down = 0, up = INF;else down = 0, up = 1;add(a, b, up - down, E);din[b] += down, dout[a] += down;}int tot = 0;for (int i = 1; i <= n; i ++ )if (din[i] > dout[i]){add(S, i, din[i] - dout[i], 0);tot += din[i] - dout[i];}else add(i, T, dout[i] - din[i], 0);int c = EK(tot);if (c != -1) c += down_cost;printf("%d\n", c);}return 0;
}

相关文章:

第十五次CCF计算机软件能力认证

第一题&#xff1a;小明上学 小明是汉东省政法大学附属中学的一名学生&#xff0c;他每天都要骑自行车往返于家和学校。 为了能尽可能充足地睡眠&#xff0c;他希望能够预计自己上学所需要的时间。 他上学需要经过数段道路&#xff0c;相邻两段道路之间设有至多一盏红绿灯。 京…...

ThreadPoolExecutor线程池详解

ThreadPoolExecutor线程池详解 1. 背景 项目最近的迭代中使用到了ThreadPoolExecutor线程池&#xff0c;之前都只是知道怎么用&#xff0c;没有了解过线程池的底层原理&#xff0c;项目刚上线&#xff0c;有时间整理一下线程池的用法&#xff0c;学习一下线程池的底层实现与工…...

【VB6|第22期】用SQL的方式读取Excel数据

日期&#xff1a;2023年8月7日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xff…...

融云:从「对话框」跳进魔法世界,AIGC 带给社交的新范式

8 月 17 日&#xff08;周四&#xff09;&#xff0c;融云将带来直播课-《北极星如何协助开发者排查问题与预警风险&#xff1f;》欢迎点击上方报名~ AIGC 与社交结合的应用主要分两种&#xff0c;一是发乎于 AIGC&#xff0c;以大模型为基础提供虚拟伴侣等服务的 App&#xff…...

UWB伪应用场景 - 别再被商家忽悠

近几年UWB技术在网上宣传得如火如荼&#xff0c;与高精度定位几乎或等号&#xff0c;笔者认为这是营销界上的一大成功案例。 UWB超宽带技术凭借着低功耗、高精度&#xff0c;确实在物联网行业混得风生水起&#xff0c;但在无数实际应用案例中&#xff0c;根据客户的反馈情况&a…...

【快应用】list组件属性的运用指导

【关键词】 list、瀑布流、刷新、页面布局 【问题背景】 1、 页面部分内容需要瀑布流格式展示&#xff0c;在使用lsit列表组件设置columns进行多列渲染时&#xff0c;此时在里面加入刷新动画时&#xff0c;动画只占了list组件的一列&#xff0c;并没有完全占据一行宽度&…...

js 面试题总结

js 面试题总结 文章目录 js 面试题总结近百道面试题1、实现 子元素 在父元素中垂直居中的方式2、实现 子元素 在父元素中水平 垂直居中的方式3、描述 Keepealive 的作用&#xff0c;有哪些钩子函数&#xff0c;如何控制组件级存列表?4、请写出判断对象是数组的三个方法5、请说…...

HTML之表单标签

目录 表单标签 Form表单 定义&#xff1a; 基本语法结构&#xff1a; form属性&#xff1a; enctyoe属性 fieldeset标签 fieldeset属性 legend标签 label标签 优势 label属性 input标签 input属性 input标签中的type属性 text text输入框有以下配套属性 searc bu…...

Java经典面试题总结(一)

Java经典面试题总结&#xff08;一&#xff09; 题一&#xff1a;Java编译运行原理题二&#xff1a;JDK&#xff0c;JVM&#xff0c;JRE三者之间的关系题三&#xff1a;谈一下对冯诺依曼体系的了解题四&#xff1a;重载与重写的区别题五&#xff1a;拆箱装箱是指什么&#xff1…...

Android监听设备亮灭屏广播(动态广播代码)

MainActivity中 public class MainActivity extends Activity {private WakeAndLockReceiver wakeAndLockReceiver;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//注册亮屏和息…...

【前端面试手撕题】简易深拷贝、深拷贝、寄生组合式继承、发布订阅模式、观察者模式

FED16 简易深拷贝 描述 请补全JavaScript代码&#xff0c;要求实现对象参数的深拷贝并返回拷贝之后的新对象。 注意&#xff1a; 参数对象和参数对象的每个数据项的数据类型范围仅在数组、普通对象&#xff08;{}&#xff09;、基本数据类型中]无需考虑循环引用问题 <!DO…...

【生物医学】应激(应激反应)全身适应综合征

最近在探索疲劳、负荷、应激方面的底层发生机制&#xff0c;遂整理了一些相关内容&#xff0c;以脑图方式呈现。本文以生物医学向为主。 OK&#xff0c;开始基础介绍&#xff1a;应激 (stress)是指在收到外部或内部、心理社会刺激下的非特异性适应反应。 本文主要收集整理了相…...

浅析基于安防监控EasyCVR视频汇聚融合技术的运输管理系统

一、项目背景 近年来&#xff0c;随着物流行业迅速发展&#xff0c;物流运输费用高、运输过程不透明、货损货差率高、供应链协同能力差等问题不断涌现&#xff0c;严重影响了物流作业效率&#xff0c;市场对于运输管理数字化需求愈发迫切。当前运输行业存在的难题如下&#xf…...

VBA技术资料MF41:VBA_将常规数字转换为文本数字

【分享成果&#xff0c;随喜正能量】时有落花至&#xff0c;远随流水香。人生漫长&#xff0c;不攀缘&#xff0c;不强求&#xff0c;按照自己喜欢的方式生活&#xff0c;不必太过在意&#xff0c;顺其自然就好。路再长也有终点&#xff0c;夜再黑也有尽头。 我给VBA的定义&am…...

Wavefront .OBJ文件格式解读【3D】

OBJ&#xff08;或 .OBJ&#xff09;是一种几何定义文件格式&#xff0c;最初由 Wavefront Technologies 为其高级可视化器动画包开发。 该文件格式是开放的&#xff0c;已被其他 3D 图形应用程序供应商采用。 OBJ 文件格式是一种简单的数据格式&#xff0c;仅表示 3D 几何体&…...

JavaScript:ES6中类与继承

在JavaScript编程中&#xff0c;ES6引入了一种更现代、更清晰的方式来定义对象和实现继承&#xff0c;那就是通过类和继承机制。本文将以通俗易懂的方式解释ES6中类与继承的概念&#xff0c;帮助你更好地理解和应用这些特性。 1. 类的创建与使用 类是一种模板&#xff0c;用于…...

通用指令(汇编)

一、数据处理指令1&#xff09;数学运算数据运算指令的格式数据搬移指令立即数伪指令加法指令带进位的加法指令减法指令带借位的减法指令逆向减法指令乘法指令数据运算指令的扩展 2&#xff09;逻辑运算按位与指令按位或指令按位异或指令左移指令右移指令位清零指令 3&#xff…...

苏宁数据治理实战方法论和三字经

随着移动互联网和大数据的蓬勃发展&#xff0c;“数据即资产”的理念深入人心。大数据已发展成为具有战略意义的生产资料&#xff0c;在各行各业发挥着极其重要的作用&#xff0c;而大数据也给很多企业带来了前所未有的自豪感和自信感。 但是&#xff0c;大数据真的是越“大”越…...

创建型设计模式:3、单例模式(C++实现实例 线程安全)

目录 1、单例模式&#xff08;Singleton Pattern&#xff09;的含义 2、单例模式的优缺点 &#xff08;1&#xff09;优点&#xff1a; &#xff08;2&#xff09;缺点&#xff1a; 3、C实现单例模式的示例&#xff08;简单&#xff09; 4、C实现单例模式的示例&#xff…...

JavaWeb学习笔记

Maven:自动导入配置jar包。 Maven项目架构管理工具&#xff1a;核心思想&#xff1a;约定大于配置 Maven:环境优化 1.修改web.xml为最新的 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee&…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...