0%

Contest 130

通过:4/4 排名:59/1293 1:58:42 6WA

No.1018 可被 5 整除的二进制前缀

思考过多,还在想那样做对不对,做的太少所以对题目类型不熟悉。

No.1017 负二进制转换

2WA

emmmmmm,这道题怎么就过了呢。。。

思考过程:用几个数字尝试拼凑了一下,感觉上是要拼凑到最近的2的幂次上去,但是并没有找到绝对的规律。

然后发现某一位数字可以通过其他位来拼凑,如,然后将原始数字以4进制做拆分,再由低位至高位依次处理大于1的情况。例如:,负二进制表示为201,然后从低位到高位,分别处理2、3、4的情况,20011000 相等,30011100相等, 40010000 相等。最后即可得到结果。(好麻烦啊)

<!-- more -->

看了一下别人的回答,类似于二进制转换,得到 %2 后再进行 /2 的操作。区别只是在奇数位时+1而不是-1。不知道如何证明这样是正确的,但是感觉上是正确的,嗯。不懂得东西先记住就好了。

另外还有一点思考,如何证明负二进制是可以表示所有数字的呢,类似的,负三进制是否可以,负四进制是否可以,待求证。

No.1019 链表中的下一个更大节点

1WA

以前做过一道类似的题,维护一个栈,当下一个数字比栈顶的数字大时,取出栈顶的数字并记录,否则将下一个数字入栈,全部循环后若栈内还有数字,均输出0。

这道题对比了一下我的做法和别人的,思路是一样的,但是代码量差距很大,自己在这种问题的边界条件和条件分类处理上有点死板和脑袋不清楚,所以代码量大,代码思路也不是十分清晰,还需要多多练习。

No.1020 飞地的数量

3WA

前面大量时间浪费在了一个错误的思路上,第一反应是和做过的类似,进行一个DFS的遍历,遍历每一个“陆地”,然后向四个方向去搜索,看是否能够找到依然是陆地并接触到边界,如果能,那么不是飞地,如果不能,是飞地,然后标记,进行计数。后来发现越做思路越乱,且复杂,在进行深度搜索的时候还需要维护一个表去标记该地是否是已经搜索过的,极度复杂。然后转回去做第二题,做第二题的途中想到,应该反向去搜索,从接触边界的陆地进行深度搜索,每个搜索过的陆地都进行标记,为不是飞地的陆地,全部搜索遍历结束后,再进行遍历计数。

两个可优化的点:一个是根据看别人的代码发现,我是使用迭代进行深度搜索的,有人是使用一个 queue,需要进行搜索的陆地都推入 queue 中,在搜索过程中新搜索到的相邻的不是飞地的地也推入 queue 中,直至整个 queue 清空为止,感觉这种方法思路更加清晰一些,下次做到类似的题需要尝试一下。

另外一个是搜索上下左右四个方向的时候,建立一个数组 [[0,1],[0,-1],[1,0],[-1,0]],然后对每个点循环加这四个变量即可,这种方法在前面做题过程中有见到提过,但是自己仍然没有用过,后面遇到一样的题也是需要尝试一下使用这种方法实现。

每过一段时间,总是需要一些刺激激励自己前进,不知道自己丢失的是热情还是耐心

今天的问题

局部变量存储在___,全局变量存储在__,动态申请数据存储在__

栈 静态存储区 堆

内存空间

静态存储区(全局变量)

先说最简单的全局变量,包含全局变量和 static 修饰符修饰的静态变量,都是保存在静态存储区当中,并且分为未初始化区域和初始化区域。初始化的全局变量和静态变量保存在一块区域中,未初始化的全局变量和未初始化的静态变量保存在另一块相邻的区域中。

全局变量的生命周期持续到整个程序结束,在程序结束后由系统释放。

对于嵌入式程序来讲,在编译后的 map 文件中就已经确定了全局变量的存储地址位置,通过该 map 文件就可以进行全局变量的调试读取等操作。

Read more »

ProjectEuler_Solution_31_40

罗马不是一天建成的,你也不会一下成为梦想中的人,但是只要在学习在努力,就是越来越接近的。

继续上一次的Project Euler的题解,不见得最优,也不见得优雅,但是答案是对的,思路也是没问题的。这次是31~40题。

(奇怪,这人怎么又开始用python写了

Problem 31: Coin sums

嗯。。挺经典挺常见的完全背包DP问题,但是我满脑子不知道在想什么,愣是没做出来,后来看了看别人的提示才想到应该按照硬币种类去循环。一直在想怎么去处理重复的情况。

这里是这道题的详细解释
这里是完全背包、01背包、多重背包的比较的参考资料(我没看

Read more »

Project Euler 题解:21~30

继续上一次的Project Euler的题解,不见得最优,也不见得优雅,但是答案是对的,思路也是没问题的。这次是21~30题。

Problem 21:Amicable numbers

对于x,除自己以外的因数的和定义为d(x),求出1000以下的所有满足d(a)=d(b) && a!=b的数对并求和。

遍历->求所有因数->求和记录->遍历判断并求和

Read more »

Project Euler 题解:11~20

继续上一次的Project Euler的题解,不见得最优,也不见得优雅,但是答案是对的,思路也是没问题的。这次是11~20题。

Problem 11:Largest product in a grid

在一个20x20的表格内在横竖斜四个方向上找连续四个数字的最大乘积。

暴力遍历就对了,输入直接复制过来通过文本输入,给一个二维的 vector<vector<int>> ,开始可劲的遍历,计算四个方向。为了避免边界条件判断,这里分成了两部分,一部分向右,下,右下遍历,一部分向左上遍历,同样能遍历所有情况,同时避免了边界条件判断。

Read more »

Lecture 1: Introduction to NLP and Deep Learning

What is Natural Language Processing

Intersecting of

  • computer science
  • artificial intelligence
  • linguistics

    Goal

let computer process or “understand” NL to perform tasks

  • Performing tasks
  • question answering

Fully understanding and representing the meaning of language is a difficult goal.

Read more »

Working is not boring, Earning money is boring.

自己做的Project Euler的题解,不见得最优,也不见得优雅,但是答案是对的。基本上可以暴力求解的都是直接暴力求的。

Problem 1:Multiples of 3 and 5

暴力遍历,能整除3或者5的话累加

1
2
3
4
5
6
7
8
9
10
int problem1()
{
long num = 0;
for (int i = 0; i < 1000; i++)
{
if (i % 3 == 0 || i % 5 == 0)
num += i;
}
return num;
}
Read more »

有时候会在问自己,是不够爱,还是缺少爱的能力。

做 Project Euler 的过程中很多大整数运算,所以先撸了一个大整数加法和大整数,使用string作为输入输出参数

大整数加法代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 大整数加法
string BIGadd(vector<string> nums)
{
if (nums.size() == 0) return "0";
if (nums.size() == 1)return nums.at(0);
string out = "";
int sum = 0;
int maxdig = 0;
for (auto i : nums) maxdig = MAX(maxdig, i.size());
for (int k = 0; ; k++)
{
for (auto i = 0; i < nums.size(); i++)
{
if (nums.at(i).size() > k)
sum += nums.at(i).at(nums.at(i).size() - k - 1) - 48;
}
if (sum == 0 && k>=maxdig) return out;
out = (char)(sum % 10 + 48) + out;
sum = sum / 10;
}
}
Read more »

fast_prime_number

若不是因为爱着你,怎么会夜深还没睡意。每个念头都关于你,我想你 想你 好想你。
若不是因为爱着你,怎会不经意就叹息。有种不完整的心情,爱你 爱你 爱着你。

问题

最近做了一些 Project Euler 的题目。目前只做了前十题,感觉和一般的编程题目比还是挺有意思的,单一案例,不限时间,不限做法,只要做出来的就可以,你愿意的话暴力求解,手动去算都可以,还是挺有意思的。

前面有几道关于质数 (Prime Number) 的题目,需要判断一个数是否是质数,也就是这次的问题了。

Problem 7. 10001st prime

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10 001st prime number?

Problem 10. Summation of primes

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.

Read more »