2024年Android项目实现高德导航
使用高德SDK实现导航功能参考博客
Github仓库直达
这是今天企业实训的一个小作业,实际上我从昨天就开始尝试申请key然后下载官方Demo开始实验。本来是要做flutter项目,但是高德官方里flutter教程只有显示地图和定位功能,没有导航功能,导航功能官方只有Android的教程。今天也是用Android原生进行编写的。至于怎么整合到flutter项目里目前还不知道。。。
1. 官网下载SDK我也尝试过直接gradle引入包的操作,但是直接引入的会缺少AmapNaviParams。官网也一直强调有个什么东西开源了所以提供的包里移除了一些东西(不知道到底是什么)。
官网SDK下载地址
我下载的是导航合包:
2. 创建项目直接Android Studio创建一个java,Groovy的项目即可。
设置里需要设置生成所有Gradle Task:
这样你就可以靠点击这里直接获得你项目的SHA1的值,申请key的时候需要这个。
点击上图位置你就可以在终端看见你的SHA1值。在我这里release和debug的SHA1的值是一样的。
3. 导入 ...
Eloquent JavaScript 08 Exercises
错误To the book page
Retry大概率触发MultiplicatorUnitFailure错误,承接直到运行成功并返回结果。
1234567891011121314151617181920212223242526272829class MultiplicatorUnitFailure extends Error {}function primitiveMultiply(a, b) { if (Math.random() < 0.2) { return a * b; } else { throw new MultiplicatorUnitFailure("Klunk"); }}function reliableMultiply(a, b) { // Your code here. for(;;){ try{ var ans = primitiveMultiply(a,b); break; ...
Eloquent JavaScript 07 robot
robotTo the book page代码解释由AI生成。
总代码数据结构和图的构建首先定义了村庄中各个地点之间的道路:
123456789const roads = [ "Alice's House-Bob's House", "Alice's House-Cabin", "Alice's House-Post Office", "Bob's House-Town Hall", "Daria's House-Ernie's House", "Daria's House-Town Hall", "Ernie's House-Grete's House", "Grete's House-Farm", "Grete's House-Shop", ...
Eloquent JavaScript 06 Exercises
对象To the book page
A vector type封装一个类,实现坐标的加减法,以及get属性的length返回坐标离原点的距离。
12345678910111213141516171819202122// Your code here.class Vec{ constructor(x,y){ this.x = x; this.y = y; } plus(other){ return new Vec(this.x+other.x,this.y+other.y); } minus(other){ return new Vec(this.x-other.x,this.y-other.y); } get length(){ return Math.sqrt(this.x**2+this.y**2); }}console.log(new Vec(1, 2).plus(n ...
Eloquent JavaScript 05 Exercises
高阶函数记录一下这本书的习题的答案,这是第五章的练习。
To the book page
Flattening将包含数组的数组展开,即只有一对中括号的数组。
1234567let arrays = [[1, 2, 3], [4, 5], [6]];// Your code here.let combineArrays = arrays.reduce((accumulator,currentArray)=>{ return accumulator.concat(currentArray);},[])console.log(combineArrays);// → [1, 2, 3, 4, 5, 6]
Your own loop如果不能满足条件(testAct)就不能继续循环。下一次循环要用新的值(updateAct),每次循环需要执行一定的操作(bodyAct)。
123456789101112// Your code here.function loop(value, testAct, updateAct,bodyAct){ if(!te ...
用Github Desktop简化你的推送流程
用Github Desktop简化你的推送流程Github Desktop官方网站
1. 第三方仓库克隆选择file->clone repository,
通过URL克隆你的仓库选择URL,里面填你的第三方仓库的https克隆链接,注意要填写公网地址而不是内网地址。
注意选择你保存仓库的本地位置
点击clone后应该会弹出让你输入用户名和密码,如果是gitlab,直接输入你登录gitlab的用户名和密码。
到此为止应该是可以克隆仓库到本地了。之后的操作,和一般的git操作是一致的,不过是有了图形化的界面,不用输入繁琐的命令。
2. add 和 commit直接到app界面,一旦仓库有文件更改,app界面会罗列出你更新文件的内容,需要你进行commit操作。
3. push处理完所有的commit后就可以进行推送了,直接点击界面右边的push origin 即可。
Chess For Three
Chess For Three这是Codeforces Round 945 (Div. 2) 第一题。
题目链接
题意三个人玩游戏,每局两个人玩。赢得人得2分,输的人得0分。平局每个人得1分。会给你三个人的最终得分,问最多平局多少局。
重点记录这里题确实不难,但是有一个样例因为没有给怎么算的导致我一直以为样例给错了。。。
123 4 56
3分4分5分,最大平局数是6。
我最一开始想的是a和b平局3次,b还剩一局和c平局,这是4次。a和c平局3次,b和c平局2次,这是5次。但是样例给的是6次。
6次的情况应该是c和a平局2次,c和b平局3次,a和b平局1次,这样就是6次。这真的是太amazing了。
题解可以直接暴力枚举a和b,a和c,b和c平局次数,然后判断分数是否合法。除去平局的分数,剩下的分数应该left%2==0。
但是还有结论, min((p1+p2+p3)/2,p1+p2),这里保证p1<=p2<=p3。
先考虑合不合法,三个数加一起如果是偶数就一定合法。
其次,如果p1+p2<=p3,那么情况应该是a和c平局p1次,b和c平局p ...
Prison Escape
Prison Escape这是codechef starter 134 div4的第六题。题目链接
题目大意NxM的01矩阵,0代表罪犯,1代表守卫者。罪犯可以上下左右移动,计算罪犯最少需要经过几个守卫者才能逃出这个矩阵。我们要求出这些罪犯里边经过最少守卫者数量的最大值。数据范围:T 1000,N和M 3e5,NxM<3e5。
赛时回顾一眼最短路,但是看见数据范围就没有去写代码。我觉得每个0点去执行最短路算法应该会超时。或者直接每个0进行bfs应该也会超时。
正解有个东西叫多源最短路。实际上我应该换位思考,不是去求0到边界的最短路,而是边界到0的最短路。多源最短路有两种方法,一是设置虚拟节点连接到所有源,二是直接把所有源节点压入队列中,不需要理会。
所以实际上这个题目是典型的0-1BFS问题。我们只需要将所有边界节点压入队列中,然后一点点向内更新距离即可。最后答案就是d[i][j]。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 ...
3 out 1 in
3out1in题目链接
题目大意这是codechef starter 134 div4的第五题。
给你一个数组B,里面包含M个数字,其中M必定为奇数。操作是选出三个数字a,b,c, 这三个数字从数组里剔除,数组中重新加入成员a+b-c。可以看出来每一次操作会让数组少两个元素,问最后剩下一个元素的最大值是多少。其中有多个询问,询问内容是如果只有前k个元素,剩下的最后一个元素最大值是多少。
赛时回顾我在第一次做这道题的时候就直接考虑到了用优先队列。显然最优解是每次选两个最大值,然后减去最小值。原数组我用数组a存储,每次将前k个元素送入优先队列和数组b中,数组b进行排序用来获得最小值,优先队列获取最大值。成功拿到30分的部分分,其他测试会超时。
正解官方题解思路让我恍然大悟。永远记得可以用空间换取时间。既然可以用一个优先队列,那么我们就可以用两个优先队列。虽然我们不知道给出的qurey里k的值是多少,但是我们可以用ans数组记录所有对应k值的答案。
首先就要考虑随着数组元素的增加,状态是如何转移的。我们可以将现有元素分成两组,一个是samll组,一个是large组。small组是 ...
Codeforces Round 944 (Div. 4) 回顾
Codeforces Round 944 (Div. 4) 回顾比赛回顾赛中是AC了前四题,E答案错误,F超时。可以说是做到了最后五分钟,排名是6000多。
比赛链接
官方题解链接
题目分析AB就直接跳过了,纯签到。
C. Clock and StringsC题意思是给出表中两对数字,看每对数字连接的线是否相交。我的思路是只要一条线的一个端点在另一条线的区间内,切另一端在区间外即可断定这两条线是相交的。
为了更好的进行区分,我进行了排序,其中满足a<c a<b c<d。
我觉得不能直接去写,表上的数字是1到12,对于一条线,一个端点是1,另一个端点是10,其中11和12其实是在线的包围内的,所以我给所有小于6的数字加了12,区间变成了6到17,然后判断是否c在a和b之间,d在a和b之外。但是我今天才发现我的判断语句竟然是这样的:
12if((a<c&&c<b)||(a<d&&d<b)) cout<<"YES"<<endl; else cout ...