这一次我真的懵逼了

疫情下的职场不公:转正翌日遭解约

我这半年在一家零售行业公司做研发工作,合同签订了三年,试用期是半年。因为知道在新冠疫情的大背景下工作难找,对于这个工作机会格外的珍惜,并且兢兢业业。经过了无数的员工培训,转正答辩,疫情影响小区封控的情况下,居家办公也丝毫没有怠慢,连续两个项目保证质量,往前赶项目进度,甚至提前项目生产上线。5月22日收到了转正的邮件,成为了正式员工,转过天,5月23日就被领导和HRBP约到会议室,进行解约谈判。我一下子不知道怎么回答了。追问他们给我一个合理的理由,得到的理由是疫情影响,许多的项目进不来,要进行优化。试问,疫情影响没有项目,那你为什么还招聘了3个新员工入职?追其原因,无非是我一个月前刚换了部门的大领导和项目经理,我们部门新入职的员工都是他们公司以前的人,都是认识的,无非是要培植自己的人马,而我则成了牺牲品。人生就是这么的不公平。人生在世,一辈子哪有不受曲折,先休息一段时间,好好的沉淀一下自己,思考一下未来,然后继续努力,继续前行!

L 众数 | 2024sch#11_长沙学院_三脸(c++解答) 作者 Limit 单位 ACMICPC 有 n 个整数构成的序列 a i(下标 1∼n),对于序列的每个前缀 a 1,a 2 ,⋯,a k(1≤k≤n),考虑选择其中一个非空下标集合 S,定义 f(S)=min{a i∣i∈S}+max{a i∣i∈S}。 求对于序列 a 的每个前缀,在其对应的 2 k−1 种情况下,f(S) 的值的众数(出现最多的数),如果有多种数出现次数一样均为最多,则输出其中最大的数。 输入格式: 第一行一个整数 t(1≤t≤1000),表示接下来有 t 组测试数据。 接下来对于每一组测试数据,第一行包含一个整数 n(1≤n≤10 的6次方 ),表示整数的个数。 接下来一行包含 n 个整数表示 a i(1≤a i≤10 的9次方)。 保证所有测试数据的 n 的总和不超过 10 的6次方。 输出格式: 对于每一组数据输出一行,包含 n 个由空格隔开的整数,依次表示每一个前缀的 f(S) 的值的最大众数。 输入样例: 3 6 1 1 4 5 1 4 5 1 2 3 4 5 5 1 2 2 1 2 输出样例: 2 2 5 6 6 6 2 4 4 5 6 2 4 4 3 3 样例解释: 对于第一组样例: 前 1 个数中,2 出现了 1 次,最大众数为 2; 前 2 个数中,2 出现了 3 次,最大众数为 2; 前 3 个数中,2 出现了 3 次,5 出现了 3 次,8 出现了 1 次,最大众数为 5; 前 4 个数中,2 出现了 3 次,5 出现了 3 次,6 出现了 6 次,8 出现了 1 次,9 出现了 1 次,10 出现了 1 次,最大众数为 6; 前 5 个数中,2 出现了 7 次,5 出现了 7 次,6 出现了 14 次,8 出现了 1 次,9 出现了 1 次,10 出现了 1 次,最大众数为 6; 前 6 个数中,2 出现了 7 次,5 出现了 21 次,6 出现了 28 次,8 出现了 3 次,9 出现了 3 次,10 出现了 1 次,最大众数为 6。 代码长度限制 16 KB 时间限制 3000 ms 内存限制 512 MB 栈限制 131072 KB
07-29
### 问题分析 要解决的问题是:对于一个数组 `nums`,求出其每个前缀中出现次数最多的数 `f(S)`,如果有多个数的出现次数相同,则选择值最大的那个。 这是一个典型的众数计算问题,可以通过遍历数组并维护一个频率统计表来解决。为了高效地计算每个前缀的众数,可以采用以下策略: 1. **使用哈希表或数组统计频率**:由于数组元素的范围可能较大,可以使用 `std::unordered_map` 来记录每个数的出现次数。 2. **维护当前众数及其频率**:在遍历数组时,维护当前前缀中出现次数最多的数及其频率。如果多个数具有相同的出现次数,则选择值最大的那个。 3. **时间复杂度优化**:整个算法的时间复杂度为 O(n),其中 n 是数组的长度。 ### C++ 实现 下面是一个完整的 C++ 实现,用于计算每个前缀的众数: ```cpp #include <iostream> #include <vector> #include <unordered_map> using namespace std; vector<int> computePrefixModes(const vector<int>& nums) { int n = nums.size(); vector<int> result(n); unordered_map<int, int> freq; // 记录每个数的出现次数 int maxFreq = 0; // 当前最大频率 int mode = 0; // 当前众数 for (int i = 0; i < n; ++i) { freq[nums[i]]++; // 更新最大频率和对应的众数 if (freq[nums[i]] > maxFreq || (freq[nums[i]] == maxFreq && nums[i] > mode)) { maxFreq = freq[nums[i]]; mode = nums[i]; } result[i] = mode; } return result; } int main() { vector<int> nums = {1, 2, 2, 3, 1, 2, 4, 5, 5, 5}; vector<int> modes = computePrefixModes(nums); cout << "Each prefix's mode: "; for (int mode : modes) { cout << mode << " "; } cout << endl; return 0; } ``` ### 代码解释 1. **哈希表 `freq`**:用于存储每个数的出现次数。 2. **变量 `maxFreq` 和 `mode`**:分别用于记录当前的最大出现次数和对应的众数。 3. **遍历数组**:在每次迭代中,更新当前数的频率,并检查是否需要更新最大频率和众数。 4. **输出结果**:最后输出每个前缀的众数。 ### 示例输出 对于输入数组 `{1, 2, 2, 3, 1, 2, 4, 5, 5, 5}`,程序将输出每个前缀的众数: ``` Each prefix's mode: 1 2 2 2 2 2 2 5 5 5 ``` ### 算法复杂度分析 - **时间复杂度**:O(n),其中 n 是数组的长度。每个元素仅被处理一次。 - **空间复杂度**:O(n),用于存储频率统计信息。 ### 总结 该算法通过维护当前最大频率和对应的众数,能够在 O(n) 的时间复杂度内解决每个前缀的众数计算问题。这种方法适用于大规模数据集,并且可以轻松扩展到其他类似的问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏日彩虹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值