第十五次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计算机软件能力认证
第一题:小明上学 小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。 为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。 他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。 京…...
ThreadPoolExecutor线程池详解
ThreadPoolExecutor线程池详解 1. 背景 项目最近的迭代中使用到了ThreadPoolExecutor线程池,之前都只是知道怎么用,没有了解过线程池的底层原理,项目刚上线,有时间整理一下线程池的用法,学习一下线程池的底层实现与工…...
【VB6|第22期】用SQL的方式读取Excel数据
日期:2023年8月7日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方ÿ…...
融云:从「对话框」跳进魔法世界,AIGC 带给社交的新范式
8 月 17 日(周四),融云将带来直播课-《北极星如何协助开发者排查问题与预警风险?》欢迎点击上方报名~ AIGC 与社交结合的应用主要分两种,一是发乎于 AIGC,以大模型为基础提供虚拟伴侣等服务的 Appÿ…...
UWB伪应用场景 - 别再被商家忽悠
近几年UWB技术在网上宣传得如火如荼,与高精度定位几乎或等号,笔者认为这是营销界上的一大成功案例。 UWB超宽带技术凭借着低功耗、高精度,确实在物联网行业混得风生水起,但在无数实际应用案例中,根据客户的反馈情况&a…...
【快应用】list组件属性的运用指导
【关键词】 list、瀑布流、刷新、页面布局 【问题背景】 1、 页面部分内容需要瀑布流格式展示,在使用lsit列表组件设置columns进行多列渲染时,此时在里面加入刷新动画时,动画只占了list组件的一列,并没有完全占据一行宽度&…...
js 面试题总结
js 面试题总结 文章目录 js 面试题总结近百道面试题1、实现 子元素 在父元素中垂直居中的方式2、实现 子元素 在父元素中水平 垂直居中的方式3、描述 Keepealive 的作用,有哪些钩子函数,如何控制组件级存列表?4、请写出判断对象是数组的三个方法5、请说…...
HTML之表单标签
目录 表单标签 Form表单 定义: 基本语法结构: form属性: enctyoe属性 fieldeset标签 fieldeset属性 legend标签 label标签 优势 label属性 input标签 input属性 input标签中的type属性 text text输入框有以下配套属性 searc bu…...
Java经典面试题总结(一)
Java经典面试题总结(一) 题一:Java编译运行原理题二:JDK,JVM,JRE三者之间的关系题三:谈一下对冯诺依曼体系的了解题四:重载与重写的区别题五:拆箱装箱是指什么࿱…...
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代码,要求实现对象参数的深拷贝并返回拷贝之后的新对象。 注意: 参数对象和参数对象的每个数据项的数据类型范围仅在数组、普通对象({})、基本数据类型中]无需考虑循环引用问题 <!DO…...
【生物医学】应激(应激反应)全身适应综合征
最近在探索疲劳、负荷、应激方面的底层发生机制,遂整理了一些相关内容,以脑图方式呈现。本文以生物医学向为主。 OK,开始基础介绍:应激 (stress)是指在收到外部或内部、心理社会刺激下的非特异性适应反应。 本文主要收集整理了相…...
浅析基于安防监控EasyCVR视频汇聚融合技术的运输管理系统
一、项目背景 近年来,随着物流行业迅速发展,物流运输费用高、运输过程不透明、货损货差率高、供应链协同能力差等问题不断涌现,严重影响了物流作业效率,市场对于运输管理数字化需求愈发迫切。当前运输行业存在的难题如下…...
VBA技术资料MF41:VBA_将常规数字转换为文本数字
【分享成果,随喜正能量】时有落花至,远随流水香。人生漫长,不攀缘,不强求,按照自己喜欢的方式生活,不必太过在意,顺其自然就好。路再长也有终点,夜再黑也有尽头。 我给VBA的定义&am…...
Wavefront .OBJ文件格式解读【3D】
OBJ(或 .OBJ)是一种几何定义文件格式,最初由 Wavefront Technologies 为其高级可视化器动画包开发。 该文件格式是开放的,已被其他 3D 图形应用程序供应商采用。 OBJ 文件格式是一种简单的数据格式,仅表示 3D 几何体&…...
JavaScript:ES6中类与继承
在JavaScript编程中,ES6引入了一种更现代、更清晰的方式来定义对象和实现继承,那就是通过类和继承机制。本文将以通俗易懂的方式解释ES6中类与继承的概念,帮助你更好地理解和应用这些特性。 1. 类的创建与使用 类是一种模板,用于…...
通用指令(汇编)
一、数据处理指令1)数学运算数据运算指令的格式数据搬移指令立即数伪指令加法指令带进位的加法指令减法指令带借位的减法指令逆向减法指令乘法指令数据运算指令的扩展 2)逻辑运算按位与指令按位或指令按位异或指令左移指令右移指令位清零指令 3ÿ…...
苏宁数据治理实战方法论和三字经
随着移动互联网和大数据的蓬勃发展,“数据即资产”的理念深入人心。大数据已发展成为具有战略意义的生产资料,在各行各业发挥着极其重要的作用,而大数据也给很多企业带来了前所未有的自豪感和自信感。 但是,大数据真的是越“大”越…...
创建型设计模式:3、单例模式(C++实现实例 线程安全)
目录 1、单例模式(Singleton Pattern)的含义 2、单例模式的优缺点 (1)优点: (2)缺点: 3、C实现单例模式的示例(简单) 4、C实现单例模式的示例ÿ…...
JavaWeb学习笔记
Maven:自动导入配置jar包。 Maven项目架构管理工具:核心思想:约定大于配置 Maven:环境优化 1.修改web.xml为最新的 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee&…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
