新学期开始啦!

本文强调了研究生阶段应保持积极主动的学习态度,珍惜学习机会,面对挑战勇于尝试。作者分享了报名数学建模比赛的经历,呼吁同学们自律、珍惜每一次学习机会。

得像对待考研一样认真地对待新学期的学习,要有紧张感
所有的东西都来之不易
开学了更要有仪式感和端正的态度
预速则不达,但是心态要端正
一定要认真啊!珍惜研究生的3年
花家里的钱读的书,一定要珍惜。

读研究生是进入了一个新的人生阶段,我应该在心态上比起本科有着更不一样的进步
读研的个人关键字:主动!
被拒绝和失败不可怕,但是过去的自己退缩了就会错过很多机会。
年纪大了,脸皮要厚
想要什么自己努力争取吧!
喜欢就坚持吧

这次终于决定报名参加数学建模比赛了,感觉其实这也没啥好说的,很多人本科就参加了
总觉得大学生涯不参加一次数学建模不完整,这次虽然是志在参与,但是也要全力以赴啊!

自律 珍惜机会!!

转载于:https://www.cnblogs.com/AKsnoopy/p/11455371.html

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
新学期开始啦!少不了的一件事自然就是分配同桌 王老师的班级里有 n 个男生和 n 个女生,男女生坐在一起,正好分成 n 对同桌 而为了促进同学们的学习进步,王老师决定根据每个同学的成绩情况进行分配同桌 首先王老师收集了每个同学的平均成绩,第 i 个男生的成绩为 b i ​ ,第 i 个女生的成绩为 g i ​ 如果由第 i 个男生和第 j 个女生组成同桌,那么这一对同桌的成绩为 b i ​ +g j ​ 当分配完 n 对同桌以后,成绩最高的那一对同桌的成绩将代表这一次同桌分配方案的分配度 王老师认为,分配度越小,这一组分配方案越好,现在王老师想知道,最小的分配度是多少? 输入格式 第一行一个整数 n 表示男女生人数 接下来每行包含两个整数 b i ​ 和 g i ​ 分别表示第 i 个男生和第 i 个女生的成绩 输出格式 输出共 n 行,请计算每新增一对男女生时的最小分配度 样例输入 1 3 2 8 3 1 1 4 样例输出 1 10 10 9 提示/说明 样例解释 男生 2,女生 8,分配方案为 2+8=10 男生 2,3,女生 8,1,分配方案为 2+8=10,3+1=4,分配度为 max(10,4)=10 男生 2,3,1,女生 8,1,4,其中一种分配度最小的方案为 1+8=9,3+4=7,2+1=3 此时分配度是 max(9,3,7)=9 数据范围 对于 20% 的数据,1≤n≤5,1≤a i ​ ,b i ​ ≤10; 对于 40% 的数据,1≤n≤100,1≤a i ​ ,b i ​ ≤100; 对于 70% 的数据,1≤n≤10 3 ,1≤a i ​ ,b i ​ ≤100;c++
05-12
<think>好的,我需要解决一个关于分配同桌并计算最小分配度的算法问题,用C++实现。问题要求根据男生和女生的成绩进行配对,并找到最小的分配度。分配度定义为所有配对中成绩差的绝对值的最大值。首先,我需要理解问题的具体要求。 首先,输入应该是两组数据:男生成绩数组和女生成绩数组。假设男女人数相等,因为每个男生都要和一个女生配对。目标是将他们一一配对,使得所有配对中的最大成绩差最小。这听起来像是一个经典的贪心问题,可能需要排序后配对。 比如,如果男生成绩排序后和女生成绩排序后,按顺序一一配对,这样可能得到最小的最大差值。例如,男生排序为[60,70,80],女生排序为[65,75,85],那么配对为(60,65),(70,75),(80,85),最大差是5。而如果交叉配对,可能会有更大的差值。比如,如果男生和女生都排序后,男生的最高配女生的最高,这样可能更优? 不过,这里的问题是要最小化最大的差值,所以应该让相邻的尽可能接近。因此,正确的贪心策略可能是将男生和女生都排序后,按相同顺序配对。这样,每对的成绩差会尽可能小,从而最大差值也会最小。 接下来,我需要验证这个思路是否正确。例如,如果有男生成绩为[1,3],女生为[2,4],按排序后配对(1-2,3-4),最大差是1和1,所以最大是1。如果交叉配对(1-4,3-2),最大差是3。显然前者更好。所以排序后顺序配对是正确的策略。 所以步骤应该是: 1. 对男生和女生的成绩数组分别进行升序排序。 2. 将排序后的男生和女生按相同顺序一一配对。 3. 计算每对的绝对差值,找出其中的最大值,即为分配度。 这样,问题转化为排序后配对,时间复杂度主要是排序的时间,O(n log n),其中n是人数。 现在需要用C++实现这个算法。首先,输入男生和女生的成绩数组,然后排序,配对计算最大差值。 例如,输入男生数组和女生数组,假设两个数组长度相同。读取数据后,对两个数组进行排序。然后遍历每个位置,计算对应元素的差的绝对值,记录最大值。 代码的大致结构: - 读取n,男女生人数。 - 读取男生的n个成绩,存入数组,排序。 - 读取女生的n个成绩,存入数组,排序。 - 遍历每个i,计算男生[i]和女生[i]的差的绝对值,找到最大值。 - 输出这个最大值作为最小分配度。 需要注意输入的顺序是否正确,比如题目中是否先输入男生再女生,或者需要处理其他情况。但根据常规问题描述,可能假设输入是两个数组,人数相等。 例如,输入样例可能是: 3 80 70 60 65 75 85 处理后排序男生为60,70,80,女生为65,75,85。配对后差值分别为5,5,5,最大是5。 另一个测试用例,如果有不同情况: 男生:[90, 20], 女生:[10, 80]。排序后男生是20,90,女生是10,80。配对后差值是10和10,最大是10。如果交叉配对,差是70和80,最大80。所以显然排序后配对更优。 所以算法是正确的。 现在编写代码: 首先读取n,然后读取n个男生成绩,排序,再读取n个女生成绩,排序。然后计算每个对应的差,取最大值。 代码示例: #include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; int main() { int n; cin >> n; vector<int> boys(n), girls(n); for (int i = 0; i < n; ++i) { cin >> boys[i]; } for (int i = 0; i < n; ++i) { cin >> girls[i]; } sort(boys.begin(), boys.end()); sort(girls.begin(), girls.end()); int max_diff = 0; for (int i = 0; i < n; ++i) { int diff = abs(boys[i] - girls[i]); if (diff > max_diff) { max_diff = diff; } } cout << max_diff << endl; return 0; } 这样应该就能解决问题了。需要测试边界情况,例如当n=1时,或者成绩完全相同时的情况。 例如,输入n=1,男生成绩50,女生成绩50,输出0。 另一个情况,男生成绩升序,女生降序的话,比如男生[1,2,3],女生[3,2,1],排序后男生1,2,3,女生1,2,3,差都是0,最大0。如果女生排序为3,2,1,那么正确排序后的女生数组应该是1,2,3吗?是的,因为代码中对女生数组进行了升序排序。所以不管输入顺序如何,排序后的数组都是升序的,这样配对是正确的。 所以,代码是正确的,应用了贪心策略,先排序再按顺序配对,以达到最小化最大差值的目标。</think>要解决根据男女生成绩分配同桌并计算最小分配度的问题,可以采用以下步骤: ### 算法思路 1. **排序处理**:将男生和女生的成绩数组分别进行升序排序,使相近成绩相邻。 2. **贪心配对**:将排序后的男女生按相同顺序一一配对,确保每对成绩差最小化。 3. **计算分配度**:遍历所有配对,记录最大成绩差的绝对值,即为所求的最小分配度。 ### C++实现代码 ```cpp #include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; int main() { int n; cin >> n; vector<int> boys(n), girls(n); // 输入男生成绩并排序 for (int i = 0; i < n; ++i) { cin >> boys[i]; } sort(boys.begin(), boys.end()); // 输入女生成绩并排序 for (int i = 0; i < n; ++i) { cin >> girls[i]; } sort(girls.begin(), girls.end()); // 计算最大差值 int max_diff = 0; for (int i = 0; i < n; ++i) { max_diff = max(max_diff, abs(boys[i] - girls[i])); } cout << "最小分配度为:" << max_diff << endl; return 0; } ``` ### 代码说明 - **输入处理**:分别读取男生和女生的成绩数组。 - **排序操作**:对两个数组进行升序排序,时间复杂度为$O(n \log n)$。 - **贪心配对**:通过遍历已排序数组,按顺序匹配男女生,确保差值最小化。 - **复杂度分析**:整体时间复杂度由排序主导,为$O(n \log n)$,适用于大规模数据。 ### 示例输入输出 **输入**: ``` 3 80 70 60 65 75 85 ``` **输出**: ``` 最小分配度为:5 ``` ***
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值