ヾ(´・ω・`)ノ 我叫钱霖奕,目前主攻 Golang 后端开发,擅长 Python 和 Golang,熟悉 C++ 语言 (退役 ACMer)。虽然研究生方向是计算机视觉下的医学图像识别,但一直对开发情有独钟,前后端都有所涉猎,目前主要利用闲暇时间做一些 Golang 后端相关的项目。
钱霖奕
河海大学 • 计算机科学与技术 • 硕士
河海大学 • 计算机科学与技术 • 硕士
来自河海大学的计算机研究生
ヾ(´・ω・`)ノ 我叫钱霖奕,目前主攻 Golang 后端开发,擅长 Python 和 Golang,熟悉 C++ 语言 (退役 ACMer)。虽然研究生方向是计算机视觉下的医学图像识别,但一直对开发情有独钟,前后端都有所涉猎,目前主要利用闲暇时间做一些 Golang 后端相关的项目。
• 负责智能座舱相关软件的开发工作
• 参与负责数据处理相关流程建设与完善工作
• 保证软件在自研芯片上的稳定、高性运行,且具备相当的可扩展性
• 与其它各子系统工程师协同完成集成测试、系统测试
• 参与软件质量控制工作,保证软件版本质量
基于 Gin + Gorm + MySQL 搭建极简版抖音后端,项目链接:https://github.com/qianlinyi/tiktok
基于 Vue + TypeScript 搭建仿掘金官网首页,项目链接:https://github.com/qianlinyi/juejin
基于 Bootstrap + Flask 搭建的 Python Web 网站,项目链接:https://github.com/qianlinyi/corneakeeper
今天是 1024 程序员节,是我步入这个专业的第四个年头,同样也是我在 CSDN 坚持写博客的第三个年头。从最近的一篇博客至今,已经四个多月未写作了,所以借此机会我想聊聊自己的计算机生涯,下面所有的话都是有感而发,不喜勿喷哦😁
第一句话我想送给所有学弟学妹或者即将步入大学生活的同学们:
时光如白驹过隙,大一不努力,大四徒伤悲。
当我回过神来时蓦然发现,大学四年已经走到了尾声,遥想当年刚步入大学时,我还是个未成年的孩子,一眨眼就到了奔三的年纪 此处手动添加一颗沧桑的熊猫头(●'◡'●)。自我反思时,我很庆幸自己没有荒废三年时光。半夜十二点在电脑屏幕前对着 的题目抓耳挠腮、打牛客暑期学校时苦思冥想几个小时终于 AC 的喜悦、早上六点多爬起来赶地铁去打蓝桥杯的辛苦、银川站打铁走在瑟瑟冷风中的宁夏理工学院的心酸、过年熬夜几天狂肝美赛论文的充实、准备一次又一次互联网+答辩的紧张,这些都历历在目。
但是如果当初我没有做这些事呢?如果我只是整天呆在宿舍里打打游戏,混混日子,那我会有今天的成就吗?答案是否定的。我的身边不乏高中从尖子班来的同学,也不乏普通高中的前几名进来的,但是他们中有人挂科太多强制转下,有人碌碌无为只能慌忙准备考研,有人找工作频频被拒,这些人的失败有很大程度是因为虚度时光,所以我从过来人的角度告诫你们,光阴似箭,一眨眼可能就发现自己的大学时光已接近尾声,而我不希望那时的你们一事无成,所以请务必珍惜自己的大学时光,不要老大徒伤悲!
第二句我想说的话是:
当你决心去做一件事情的时候,全世界都会为你让路。
这句话是我当时准备保研时一直作为 QQ 签名鼓励自己的,这里给各位讲一下自己的保研之路吧。我是大三上学期才开始准备保研的,那时候我的绩点排名是多少呢?全院 232 个人,我排 87 名,大概 37% 左右,而我们院正常的保研比例只有 14%,如果我没提保研成功的话,几乎所有人都觉得不可能吧,甚至在夏令营阶段找学院领导签字时,老师也觉得我没有希望,但我最终创造了奇迹,在所有保研人里以绩点倒数第一,综测倒数第三的成绩顺利保研。
我想成功的秘诀就在于做这件事情的时候,我首先并不是去考虑结果,而是竭尽全力地去做,因为你做了哪怕只有一丝机会都有可能成功,但是如果你畏手畏脚不敢下手,就毫无机会了。整个大三学年里我没出去看过一次电影,几乎没有娱乐活动,考试周过了就准备竞赛、写论文、做项目,结果是这一年里,我取得了多项程序设计竞赛的国奖,申请了发明专利和软著,也发表了 EI 会议论文,把保研竞赛加分提到了满分,最终上天不负有心人,我成功拿到了保研名额。说这么多,我是想用亲身经历告诉各位,只要你想,没有什么是不可能的。正如苹果的乔布斯所言,“只有那些疯狂到自以为可以改变世界的人,最后才真的改变了世界。”
最后一句话就是:
人生不如意之事十之八九,与其在遗憾中沉沦,不如在厚积中薄发。
• 我的高考目标是南京大学的天文系,但是很遗憾,因为个人的一些原因未能如愿以偿,现在只是一个
211 计算机专业的普通学生。
• 我在校 ACM 队呆了近三年,参加了三次 ICPC 和一次
CCPC,都未能获奖。
• 我保研阶段拿到重大,北邮,川大的
offer,最终因为不敢冒险选择了本校。
⋯
诚然,我相信每个人都有遗憾,爱而不得、劳而不获诸如此类,月尚有阴晴圆缺,作为凡人又何求十全十美呢。就拿竞赛这条路来说,当你总是在抱怨这抱怨那时,请记住,有太多太多条件比你差的同学仍无怨无悔地在这条路上默默耕耘着,我写博客时碰到很多出身普通一本甚至二三本学校还在努力打 ACM 的同学,他们学校和自身条件可能都不好,但是他们并没有怨天尤人,一直都在虚心求教,我相信他们最终都会取得满意的成绩。与其把时间浪费在自我怀疑和抱怨外部条件上,不如静下心来去刷两道题;与其抱怨这难那难,不如去请教学长老师搞懂这个难点;与其在遗憾中沉沦,不如在厚积中薄发。很多时候抱怨解决不了问题,改变自己才是破局之策。
对程序设计竞赛的热爱让我选择了这个专业,也支撑着我的 CSDN 博客走到今天。今后有缘的话,我应该还会更新一些题解,不过博客的重心应该都会以项目为主了[毕竟要做研狗了/(ㄒoㄒ)/~~]。这里强烈建议搞竞赛的养成写博客的习惯,坚持下来你一定会看到别样的风景(๑•̀ㅂ•́)و✧
最后的最后,在这个只属于程序员的节日里,送上我衷心的祝福:
作为一个退役的 ACM 选手,衷心希望在这条路上努力的同学们题题 AC,场场
AK,奖牌拿到手软!
作为一个即将读研的小白,希望所有考研人都能圆梦心仪的学校,也祝我们读研的道路上都能保住秀发,论文狂发!
作为一个憧憬工作的憨憨,希望所有打工人都能朝九晚五,月薪过万!
作为一个 IT 领域的人,希望这个行业发展越来越好,相信未来改变世界的,就是我们这些默默发光的程序员们!
我们称一个分割整数数组的方案是好的,当它满足:
数组被分成三个 非空 连续子数组,从左至右分别命名为 left , mid , right
。
left 中元素和小于等于 mid 中元素和,mid 中元素和小于等于 right 中元素和。
给你一个 非负 整数数组 nums ,请你返回 好的 分割 nums
方案数目。由于答案可能会很大,请你将结果对 109 + 7 取余后返回。
示例一
输入:nums = [1,1,1]
输出:1
解释:唯一一种好的分割方案是将 nums 分成 [1] [1] [1] 。
示例二
输入:nums = [3,2,1]
输出:0
解释:没有好的分割方案。
题意比较简单,就是往一个数组里插两块隔板,暴力的话复杂度 O(n2) ,显然不行,考虑优化,很容易想到二分,遍历第一块隔板的位置 i,然后找第二块隔板的所有合法位置区间 [L,R] 即可,预处理所有数的前缀和,左端点 L 可以通过一个 lower_bound 直接求得,而对右端点 R,直接二分求即可,对每一块隔板 i,答案加上 R − L + 1,AC 代码如下:
class Solution {
public:
long long pre[100005] = {0}, ans = 0,
mod = 1e9 + 7, len;
vector <long long> v;
int bs(int l, int r, int p) {
while (l <= r) {
int
mid = l + r >> 1;
if
(pre[len - 1] - pre[mid] >= pre[mid] - pre[p]) l = mid +
1;
else
r = mid - 1;
}
return r;
}
int waysToSplit(vector
<int> &nums) {
len =
nums.size();
for (int i = 0;
i < len; i++) {
if
(i == 0) pre[i] = nums[i];
else
pre[i] = pre[i - 1] + nums[i];
v.push_back(pre[i]);
}
for (int i = 0;
i < len - 2; i++) {
int
pos1 = lower_bound(v.begin() + i + 1, v.end(),
pre[i]
+ pre[i]) - v.begin();
if
(pos1 == v.size()) break;
int
pos2 = bs(pos1, len - 2, i);
ans
= (ans + (long long) (pos2 - pos1 + 1)) % mod;
}
return ans;
}
};
The people who are crazy enough to think that they can change the world are the ones who do © qianlinyi