2023华为软件精英挑战赛笔记心得(Python实现)
第一次参加华为软挑,问了周围一圈人没人组队,看了眼题目,感觉挺有意思的,就打算自己写来跑一下,不求分数,主要是想学点东西,顺便记录一下。(最后跑了195w+,自己的能力也就到这了)@[toc]
1. 题目概述本次比赛模拟了多机器人的运行环境以及真实机器人的状态信息。选手需要操控4个机器人执行前进、后退、旋转、购买、出售等动作来完成物品递送任务,同时赚取差价获得利润。在3分钟时间内,选手最后拥有的资金数(初始200000)即为最终分数,所获资金越高越好。篇幅有限,题目就介绍到这里了,还有很多细节方面的介绍没写出来,想了解具体题目的朋友可以自行百度搜索也可以私信我。
2. 输入输出 & 判题流程大致流程如图,我们需要和判题器进行多次交互,判题器负责发送地图数据以及每一帧的信息(场上机器人、工作台的实时参数),我们需要给判题器发送机器人控制指令,双方都以”OK”来作为信息发送的结束标志。来结合官方给的demo代码来理解一下:
12345678910111213141516171819202122232425262728import sysdef read_util_ok(): ...
VSCode Python程序附加到进程debug
## 背景
某个处于进程中的程序(如exe)需要调用python程序,如果运行python过程中想要实时调试,可以利用VSCode操作。
方法
首先确保正在运行的这个程序能让你调试,即如果是交互型的场景(如标准输入输出流),需要让程序进入debug模式;
Python程序(.py文件)里,在想要debug的代码前加入sleep,确保有足够的时间attach到进程,如:
123import timetime.sleep(10) #时间自定义
VSCode按F5选择【使用ID进行附加】,也就是【Attach using process ID】
运行主程序,同时开启CMD输入: 1tasklist | find "python"
复制主程序调用的PID;或者直接去任务管理器查看主程序调用的python.exe的PID,注意不要和VSCode发起的python.exe混淆!
如果有更好的方法烦请各位读者留言,感激不尽!
回到VSCode,在上方弹窗【选择要附加到的进程】中输入PID,回车即可。可以提前在代码块中设置断点,这样在attach之后就能进行debu ...
扩展欧几里得求逆元步骤(手动+python求解)
学RSA的时候自己重新理解了一下扩展欧几里得,根据常见求逆元的相关代码,稍微总结了一下步骤,就分享出来叭~
例子:701^(-1) mod 1848=?换言之,也就是701×?-1848×k=1,k是系数,问号?即为701模1848的逆元.
Step 1 先用辗转相除法“求”701和1848的最大公因数gcd为什么这个求要加双引号呢?因为最大公因数有这样一条性质:
设整数a,b不同时为零,则存在一对整数m,n,使得gcd(a.b) = am+bn
因此不用求也知道这两个数的gcd必然为1,否则无法求出逆元,我们要做的只是把求到1的过程列出来,方便后面用扩展欧几里得~过程如图:
Step 2 推出相邻式子关系根据
gcd(a,b) = gcd(b,a%b)
已知:gcd(a,b)=ax+bya%b=a-(a//b)*b  //指取商的整数部分gcd(b,a%b) = bx’+(a-(a/ ...