第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组 如何算,sum[i]代表从根走到i节点需要花多少时间,那么从u到v(后文表示为dis(u,v))则需要花sum[u]+sum[v]-sum[lca(u,v)]*2这么多时间,如果删去一个点i后,全程答案为 asum - dis(a[i],a[i+1]) - dis(a[i],a[i-1]) + dis(a[i-1],a[i+1]),删掉开头和结尾特判,入代码所示。对结尾字符出现次数做前缀和,枚举a字符开头的位置,假设s[i]是a字符,那么i+k-1以后的出现的b都可以作为答案。复杂度:O(nlogn) 阅读详情

注:试题D 通过75% 试题H 通过 56%

 其他通过率100%

3
75 3
53 2
59 2
#include <bits/stdc++.h>
using namespace std;

int n;

int main() {
	cin >> n;
	int a, b;
	int mx = 1 << 30, mn = 0;
	for (int i = 1; i <= n; i++) {
		scanf("%d%d", &a, &b);
		mx = min(mx, a / b);
		int t = a / (b + 1);
		++t;
		mn = max(mn, t);
	}
	printf("%d %d\n", mn, mx);
	
	return 0;
}

2
3
0 100 10
10 10 10
0 2 20
3
0 10 20
10 10 20
20 10 20

#include <bits/stdc++.h>
using namespace std;
struct node {
	int t, d, l;
	bool operator < (const node &A) const {
		if (t + d == A.t + A.d)
			return l < A.l;
		return t + d < A.t + A.d;
	}
} a[100001];

int k, n;

inline void solve() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		scanf("%d%d%d", &a[i].t, &a[i].d, &a[i].l);
	sort(a + 1, a + n + 1);
	int last = a[1].t + a[1].l;
	int ok = 1;
	for (int i = 2; i <= n && ok; i++) {
		if (last > a[i].t + a[i].d)
			ok = 0;
		else
			last += a[i].l;
	}
	if (ok)
		printf("YES\n");
	else
		printf("NO\n");
}

int main() {
	cin >> k;
	while (k--)
		solve();
		
	return 0;
}

5
11 121 22 12 2023

#include <bits/stdc++.h>
using namespace std;
struct node {
	int x, y;
} a[100001];
int n, f[100001][10];
char s[12];

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%s", s + 1);
		int x = s[1] - '0';
		int y = s[strlen(s + 1)] - '0';
		a[i].x = x, a[i].y = y;
	}
	f[1][a[1].y] = 1;
	for (int i = 2; i <= n; i++)
		for (int j = 0; j <= 9; j++) {
			f[i][j] = max(f[i][j], f[i - 1][j]);
			if (j == a[i].x)
				f[i][a[i].y] = max(f[i][a[i].y], f[i - 1][j] + 1);
		}
	int mx = 0;
	for (int i = 0; i <= 9; i++)
		mx = max(mx, f[n][i]);
	printf("%d\n", n - mx);
	return 0;
}

4
abababdb a b
#include <bits/stdc++.h>
using namespace std;

long long ans = 0;
int n, pre[500001];
char s[500002], a, b;

int main() {
	scanf("%d", &n);
	scanf("%s", s + 1);
	cin >> a >> b;
	int len = strlen(s + 1);
	for (int i = 1; i <= len; i++) {
		pre[i] = pre[i - 1];
		if (s[i] == a)
			++pre[i];
	}
	for (int i = n; i <= len; i++)
		if (s[i] == b)
			ans += pre[i - n + 1];
	printf("%lld\n", ans);
	
	return 0;
}

5 3
1 4 2 8 7
#include <bits/stdc++.h>
using namespace std;
struct node {
	long long data;
	int left, right, f;
} a[500001];
int n, k;
set<pair<long long, int> > q;
int main() {
	scanf("%d%d", &n, &k);
	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i].data);
		a[i].left = i - 1;
		a[i].right = i + 1;
		a[i].f = 1;
	}
	for (int i = 1; i <= n; i++)
		q.insert({a[i].data, i});
	while (k-- && q.size()) {
		long long num = q.begin()->first;
		int idx = q.begin()->second;
		a[idx].f = 0;
		q.erase(q.begin());
		int l = a[idx].left;
		int r = a[idx].right;
		if (l > 0) {
			q.erase({a[l].data, l});
			a[l].data += num;
			a[l].right = a[idx].right;
			q.insert({a[l].data, l});
		}
		if (r <= n) {
			q.erase({a[r].data, r});
			a[r].data += num;
			a[r].left = a[idx].left;
			q.insert({a[r].data, r});
		}
	}
	for (int i = 1; i<= n; i++)
		if (a[i].f)
			printf("%lld ", a[i].data);
	printf("\n");
	return 0;
}

1bcbbb6d69c54591aa2556bb7c6cb0b2.png

 4462120368b04b7ab9f5b2f2c87565a5.png

 思路:预处理要访问相邻景点之间花费时间,以及访问所有景点所花费时间

在跳过第i个景区时,要求与第i个景点相邻的两个景点之间的花费时间,倍增每次查询log(n),(边缘情况领讨论),总时间复杂度n lng(n)

6 4
1 2 1
1 3 1
3 4 2
3 5 2
4 6 3
2 6 5 1
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node {
	int y, z;
};

int n, k, a[100001], dep[100001], pre[100001], f[100001][21];
ll dis[100001][21], temp, sum = 0;
vector<node> v[100001];
map<int, map<int, ll> > mp;

inline void dfs(int x) {
	for (auto i : v[x])
		if (i.y != pre[x]) {
			pre[i.y] = x;
			dep[i.y] = dep[x] + 1;
			f[i.y][0] = x;
			dis[i.y][0] = i.z;
			dfs(i.y);
		}
}

inline void init() {
	for (int i = 1; i <= 20; i++)
		for (int j = 1; j <= n; j++) {
			f[j][i] = f[f[j][i - 1]][i - 1];
			dis[j][i] = dis[j][i - 1] + dis[f[j][i - 1]][i - 1];
		}
}

int UP(int x, int k) {
	int res = x;
	for (int i = 0; (1 << i) <= k; i++)
		if ((1 << i) & k) {
			temp += dis[res][i];
			res = f[res][i];
		}
	return res;
}

int LCA(int x, int y) {
	if (dep[x] < dep[y])
		swap(x, y);
	int rot = UP(x, dep[x] - dep[y]);
	if (rot == y)
		return rot;
	for (int i = 20; i >= 0; i--)
		if (f[rot][i] != f[y][i]) {
			temp += dis[rot][i];
			temp += dis[y][i];
			rot = f[rot][i];
			y = f[y][i];
		} 
	temp += dis[rot][0] + dis[y][0];
	return f[rot][0];
}

int main() {
	scanf("%d%d", &n, &k);
	for (int i = 1; i < n; i++) {
		int x, y, z;
		scanf("%d%d%d", &x, &y, &z);
		v[x].push_back({y, z});
		v[y].push_back({x, z});
	}
	for (int i = 1; i<= k; i++)
		scanf("%d", &a[i]);
	dfs(1);
	init();
	for (int i = 1; i < k; i++) {
		temp = 0;
		int d = LCA(a[i], a[i + 1]);
		mp[a[i]][a[i + 1]] = mp[a[i + 1]][a[i]] = temp;
		sum += temp;
	}
//	printf("%lld\n", sum);
	for (int i = 1; i <= k; i++) {
		if (i == 1)
			printf("%lld ", sum - mp[a[i]][a[i + 1]]);
		else if (i == k)
			printf("%lld ", sum - mp[a[i - 1]][a[i]]);
		else {
			temp = 0;
			int d = LCA(a[i - 1], a[i + 1]);
			printf("%lld ", sum + temp - mp[a[i]][a[i - 1]] - mp[a[i]][a[i + 1]]);
		}
	}
	return 0;
}
/*
6 4
1 2 1
1 3 1
3 4 2
3 5 2
4 6 3
2 6 5 1
*/

6 2
1 2
2 3
4 3
2 5
6 5
3 6
4 5
4

#include <bits/stdc++.h>
using namespace std;
struct edge {
	int x, y;
} a[50001];

int n, m, ans = -1, pre[100001], dep[100001], c[100001], f[100001][21];
map<pair<int, int>, int> mp;
vector<int> v[100001];

inline void dfs(int x) {
	for (auto y : v[x]) 
		if (y != pre[x]) {
			pre[y] = x;
			dep[y] = dep[x] + 1;
			f[y][0] = x;
			dfs(y);
		}
}

int UP(int x, int k) {
	int res = x;
	for (int i = 0; (1 << i) <= k; i++)
		if ((1 << i) & k)
			res = f[res][i];
	return res;
}

int LCA(int x, int y) {
	if (dep[x] < dep[y])
		swap(x, y);
	int rot = UP(x, dep[x] - dep[y]);\
	if (rot == y)
		return rot;
	for (int i = 20; i >= 0; i--)
		if (f[rot][i] != f[y][i]) {
			rot = f[rot][i];
			y = f[y][i];
		}
	return f[rot][0];
}

inline void pushdown(int x) {
	for (auto y : v[x])
		if (y != pre[x]) {
			pushdown(y);
			c[x] += c[y];
			if (c[y] == m)
				ans = max(ans, mp[{x, y}]);
		}
}

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i < n; i++) {
		int x, y;
		scanf("%d%d", &x ,&y);
		v[x].push_back(y);
		v[y].push_back(x);
		mp[{x, y}] = mp[{y, x}] = i;
	}
	for (int i = 1; i <= m; i++) {
		int x, y;
		scanf("%d%d", &x ,&y);
		a[i].x = x, a[i].y = y;
	}
	dfs(1);
	for (int i = 1; i <= 20; i++)
		for (int j = 1; j <= n; j++)
			f[j][i] = f[f[j][i - 1]][i - 1];
	for (int i = 1; i <= m; i++) {
		int x = a[i].x, y = a[i].y;
		int d = LCA(x, y);
		++c[x], ++c[y];
		c[d] -= 2;
	}
	pushdown(1);
	printf("%d\n", ans);
	return 0;
}

【CAN通讯系列18】- NM在干什么?休眠唤醒 同时针对不同休眠或唤醒场景,网管报文的userdata有所区别,如何做到场景与网管报文内容一一映射,通常会定义另一帧报文,用来表明当前是哪个或哪几个唤醒条件或休眠条件满足。又或者如果用户发现汽车电量不充足了,那么会有充电需求,插枪充电,这时如果插上慢充枪,那么OBC会先被唤醒,识别出插枪行为及其慢充枪的连接状态,然后OBC唤醒BMS和其他相关的控制器进行充电。也就是说,通过对一个又一个整车功能和应用场景的详细分析,最终能够汇总出整车所有的休眠唤醒场景需求,通常会用一个表格来管理,俗称休眠唤醒表。 阅读详情

相关推荐

Linux初级介绍之番外篇:Linux挂载windows中的共享目录

挂载windows共享目录Windows端共享权限设定解禁Guest设置共享目录权限Linux挂载端扫描共享目录挂载共享目录遇到错误的解决方案 Windows端共享权限设定 解禁Guest 右击我的电脑选择管理–>本地用户和组–>在用户项中双击Guest用户–>取消账号已禁用选项 设置共享目录权限 右击共享目录点属性–>在共享页面中点击共享选项–>下拉选择共享对象为Everyone–>点击共享按钮 3.设置本地策略 打开命令框–>输入secpol.msc–&gt

m0_53497201的博客 228

2023第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(真题&题解)(C++/Java题解)

记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉

2302_80067378的博客 1万+

云计算学习——5G网络技术

华为eNSP网络设备模拟器的基础安装及简单使用

qq_42520799的博客 1445

第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学B组)题解

第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学B组)题解

qq_62362934的博客 1852

使用兮克 2.5G 交换机将北京联通 EPON 改为 ODI 猫棒接入

最近入手了兮克2.5G交换机(兮克SKS1200-8GPY1XF),有 8 个 2.5G 电口和 1 个 10G SFP+ 光口;支持多种组网模式,其中一种是支持使用猫棒接入,由路由器拨号后再回接到交换机,这样就可以替换掉光猫了。

啦啦啦啦 la 1万+

VMware Converter 6.2.0保姆级教程:从物理机到ESXi主机的完整迁移指南(含常见错误排查)

本文提供VMware Converter 6.2.0从物理机迁移至ESXi主机的完整保姆级教程。详细解析了迁移前的环境规划、核心转换过程步骤、版本差异对比,并重点针对代理安装失败、任务卡顿、虚拟机无法启动等常见错误提供了实战排查与解决方案,确保P2V迁移顺利进行。

sam99的博客 380

第十四届蓝桥杯大赛软件赛省赛C/C++大学 B 组

真滴难啊

席万里的博客 3110

Python程序—定子故障三相永磁同步电动机振动与电流数据集

1.0 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为2.26%: 匝间短路故障,严重度为2.70%: 匝间短路故障,严重度为3.35%: 匝间短路故障,严重度为4.41%: 匝间短路故障,严重度为6.48%: 匝间短路故障,严重度为12.17%: 匝间短路故障,严重度为21.69%1.5 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为1.57%: 匝间短路故障,严重度为1.88%: 匝间短路故障,严重度为2.34%

m0_66465741的博客 1320

2023年第十四届蓝桥杯大赛软件类省赛C/C++大学B组真题

打卡第三篇。

2302_80195998的博客 1535

[Dify实战] 合同审阅助手:识别风险条款、生成修改建议-带绑定资源

摘要: Dify合同审阅助手通过AI技术提升合同审阅效率,快速识别风险条款并输出结构化修改建议。方案包括合同输入、关键条款识别、风险评级和报告生成流程,重点关注付款、责任限制等核心条款。采用分层风险分级(高/中/低)和"红线清单"机制,确保审阅标准化。实施建议先建立条款库和模板,通过样本测试优化模型,定期更新规则库。该方案可缩短审阅时间50%以上,提高风险识别准确率,最终实现法务经验的可复用沉淀。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 597

做cellchat画图时自环的角度颠倒,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 464

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(部分题解)

一年一度的🏀杯马上就要开始了,为了取得更好的成绩,好名字写了下前年2023年蓝桥杯的省赛真题,感觉题目还不错(好难)为此来写篇博客重温一下这几个题。也可以帮助一下第一次参加蓝桥杯的新手小白更好冲击省一。2023年的题目感觉比我们2024年的题目难(还好我不是去年参加的),不过🏀杯声名远扬,打打暴力可能就能获奖省一,从此成为同学眼中的“大神只写了5个题,剩下的再看看。。。蓝桥杯不用想着把正解搞出来,其实暴力跑跑已经可以超过绝大部分人了(在弱省),好好备战,补药让300块打水漂。

a13997460860的博客 6052

108、AWB 时间滤波器:帧间白平衡平滑,防止色彩跳变与过冲

摘要: 文章探讨了AWB(自动白平衡)时间滤波器的设计与优化,以解决帧间白平衡跳变和过冲问题。通过自适应状态机(STABLE/TRANSITION/JUMP)动态调整平滑系数alpha,结合帧率归一化和过冲保护(方向检测+限幅),实现场景切换快速响应与静态稳定性的平衡。作者分享了工程经验:避免固定阈值、联动AE/AF、真实场景验证,并推荐简化卡尔曼滤波替代IIR。最终方案在旗舰机前置摄像头中成功消除“闪白”现象,强调参数需动态适应光照与色温变化。

sundong_81的博客 64

第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学B组)

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

NOW I GOT ONE WAY 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

岛屿个数(bfs)第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组第六题

(xk−1​,yk−1​),其中 (xi+1modk,yi+1modk)(xi+1modk​,yi+1modk​) 是由 (xi,yi)(xi​,yi​) 通过上/下/左/右移动一次得来的 (0≤i≤k−1)(0≤i≤k−1),此时这 kk 个格子就构成了一个“环”。小蓝得到了一副大小为 M×NM×N 的格子地图,可以将其视作一个只包含字符 '0'(代表海水)和 '1'(代表陆地)的二维数组,地图之外可以视作全部是海水,每个岛屿由在上/下/左/右四个方向上相邻的 '1' 相连接而形成。

2301_80155689的博客 336

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 接龙数列

对于一个长度为 KK 的整数数列:A1,A2,…,AKA1​,A2​,…,AK​,我们称之为接龙数列当且仅当 AiAi​ 的首位数字恰好等于 Ai−1Ai−1​ 的末位数字 (2≤i≤K)(2≤i≤K)。例如 12,23,35,56,61,1112,23,35,56,61,11 是接龙数列;12,23,34,5612,23,34,56 不是接龙数列,因为 5656 的首位数字不等于 3434 的末位数字。现在给定一个长度为 NN 的数列 A1,A2,…,ANA1​,A2​,…,ANA1​,A2​,…

2401_87019265的博客 621

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(真题/代码)

在岛屿 A 所占据的格子中,如果可以从中选出 k 个不同的格子,使得他们的坐标能够组成一个这样的排列:(x0, y0),(x1, y1), . . . ,(xk−1, yk−1),其中(x(i+1)%k, y(i+1)%k) 是由 (xi, yi) 通过上/下/左/右移动一次得来的 (0 ≤ i ≤ k − 1),此时这 k 个格子就构成了一个 “环”。若 B 是 A 的子。现在给定一个长度为 N 的数列 A1, A2, . . . , AN,请你计算最少从中删除多少个数,可以使剩下的序列是接龙序列?

2301_80956920的博客 2443

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(个人见解,已完结)

加油.

wljy1的博客 1235

【比赛】第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(比赛过程记录,不是答案总结)

总结一下今天的蓝桥杯,唉,祈祷祈祷祈祷

想要AC的sjh的博客空间 1万+

2023第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

全排列后得到所有飞机降落顺序,原则是尽量更早降落,如果发现当前飞机最晚可以开始降落的时间比上一架飞机完成降落时间还早说明该排列不能作为解。只要找到一个解就yes,否则no。设0出现次数为a,1出现的次数为b,则H(s)=-a*p(0)*log(p(0))-b*p(1)*log(p(1))观察发现对于单独每组数据,V在 A / ceil(A/(B+1)) ~ floor(A/B) 之间。我的思路是直接暴力全排列,时间复杂度最多是10*10!暂时先这么多,答案可能有错,有发现可以一起交流指正!

weixin_54895616的博客 2454

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组A-E题(go、java实现)

本文章总结第十四届省赛C/C++大学B组A到E题

2301_78179333的博客 831

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 B题

A组B题伞兵做法

A2105153335的博客 2185
下一篇: 实验二:使用Gitee平台、搭建git托管仓库 + CI流水线
ananran998
博客等级 码龄5年 18粉丝 2原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值