2021年华为软件精英挑战赛总结

很幸运得了一个 前64名,但是整个过程是非常紧张的
相关赛题,以及代码
这是在海大上研究生以来第一次正式参加比赛,距离上次参加类似的比赛已经过去将近三年了,这种参加比赛的感觉依旧还是没有改变。
参加这次比赛大约用了12天的时间,比赛只允许最多三个人参加比赛。第一次参加华为精英杯挑战赛,还是缺少一些经验的。过程就是刚开始先拿到了题目,团队中三个人各自研究各自的,然后每个人根据自己的理解,去写自己对这个题目的理解,然后开始根据自己的思路开始写。
(其实这时候,我们对题目的理解还不是很好,每个人的理解方式也不一样~~)这儿我们做的还不是很好(可以先统一看题目,然后一块根据题目的意思进行讲解,先对题目进行一个透彻的分析~~然后一个团队在开始进行工作)这样就能更高效的写出准确的代码,团队的作用没有发挥出来。对题目进行一个准确的理解,并且商定好解决方案,是要比各自为战更能得到一个好的结果与效率。
对于这一次比赛,缺乏相关的理论知识,在算法设计上相对来说比较简单的,有时候价格的降低,其实只是对参数的多次调整,才获得的结果,并没有能真正的理解结果产生的原因。对于这个比赛,其实有一定相关计算机编程基础都会得到一定的答案,但是答案却不一定是最优解,所以我们很快就写了一个解决方案,这个方案的花费是不低的,后期还是要调的。其实,写这么一个过程并不难,主要是思路是不是清晰,解决方案是不是合理。

解题思路

我们队伍的解题思路是对于购买方案:既然最终的目的是花费最少,我们在购买服务器的时候的选择就是首先购买能满足虚拟机部署条件的,服务器的日均花费最少(固定价格+每天的电费* 使用的天数)/天数
。这样首先对已经提供的服务器按照我们的日均花费最少进行一个从小到大的排序。选择的时候,就会优先选择能满足条件的花费最少的服务器。我们队伍是一条一条命令解析的,这样其实是很难优化的。按照题目的意思应该是一天结束后,对这一天的命令进行统一解析,统一购买。哎~~刚开始的时候,也没考虑好这些问题。每进来一台虚拟机,我们都会查看当前的服务器是否能进行部署,部署的策略就是均衡服务器的内存,让服务器能够最大限度的利用内存。对于迁移策略,刚开始是没有考虑迁移策略的,这也是前期设计上的不足,迁移策略是后期又更改代码加上去的。迁移的策略就是对于整个服务器集群上的所有服务器包含的虚拟机的数量,如果该服务器上只有一台虚拟机,我们就对这台服务器上的虚拟机进行迁移,被迁移到的服务器上已有的服务器数量不能小于一,因为我们迁移的目的是能够空出更大的内存以及CPU,然后节省下当天的电费。这样在每天开始购买服务器或者删除虚拟机之前,就对之前的服务器集群的状态进行一次更改,然后在释放内存以及内核。我们的思路比较简单。

成长

经过这次比赛,也让我成长了一些,在与团队成员进行交流的时候,认识到了自己的一些不足的地方,数学知识,算法有待加强,自己在编写程序的时候,设置的变量名称一定要能表达该变量所传达的意思。避免随意起名。在整个过程中,还感觉到自己的逻辑思维还是有待加强的,在编写的时候,明明感觉没有错误了,但是在真正运行的时候还是会出现问题,然后在去查找错误,是非常浪费时间的,不如一开始就思考好,编写的逻辑,尽量减少自己逻辑上的错误。通过与团队成员的交流,也学到了许多良好的学习方法以及编程习惯。
在这里插入图片描述