2016-01-02 近日事

终于考研结束了 这段时间考研也是发现了很多问题,比如自己不得不承认的面对压力的无措等等。学习一段时间就会走小差等等。但是这些问题我都能认识到并且自己寻找方法改正,一旦被别人揪着说就很不爽。学习上一段时间就不由自主的浮躁,内容多而枯燥。但是现在反过来想,这次考研考试的打脸是不是也说明了一个问题,不应该公式化的学习考研数学,发现真是自己证明贯通研究的东西,才是真正的掌握并且能够临危不乱的。在专业课等方面亦是如此。 这次考研有后悔吗?有,很多。但是有收获吗?考之前我不认为自己有什么收获,但是现在回头想想,是必然有的。认识了自己的不足,以及学习的东西的不扎实,没有深度。其实在大学学习的过程中每次都对我有所提示,只是我一直忽略了这些提示,导致自己直到这次考研才吃了个苦头。也不知这次结果究竟如何,已经没有心思,没有勇气去比对答案,自己对自己的斤两也是清楚的很。无论怎么临场发挥,最终决定你能否考上的还是你平时的努力程度,我认为自己的努力程度不够自己上研究生。 目前为止,我是想为此再奋斗一年的。 看了看github上空的一大段: 这就是考研的一段时间。其实考研我并没有抽出太多在学习上,中间放松的时间也完全可以学点技术啊自己的喜欢的东西,但是我也没那么做。感觉好像耽搁时间。事实上,也并没有耽搁很多时间。 猛然想起与学弟约好讲讲经验。不过目前为止,应该都是失败的经验了吧。细细想来,都有点不大敢去实验室,怕面对恩师,也是觉得丢了ACM实验室这个优秀团体的脸。相当愧疚。想起当时学弟庆功宴上老师说的一句话,也着实打脸:快手未必就好,快手可能不够扎实。也是直击了我的命脉。 考完之后马上浮现的想法是,在数学上面再多读些书。专业课纯粹是按照应试的方法学习,感觉没什么意思,的确应该是课本为主,在课本的基础上拓展才是正确。我考的不是408,不过做了很多408的题目,感觉还是那样,课本通了,很多自然就通了,否则花费大量的时间,收获还不会很多。专业课这个东西,就得靠平时积累。 此外,想要整几本国外的教材看看,从另一个角度看看问题,也是提高自己的英文水平,可能要比这直接来的更加优秀一些。参考书目可以从考研参考中选。 考研之后 考研的时候,可能被迫于每天重复做同样的事情,整的想着考完之后要做什么,看这个看那个,现在考完了,反而看看,基本上没有什么是真的能够好好做的。也可能是受了“应该要二战”的思想制约,目前感觉做啥也不那么回事儿。想图个新鲜打个游戏主播玩,但是仔细一想客观上没有条件,主观上又有点受不务正业的思想制约,于是作罢。微信公共账号,现在来看,做出来似乎价值也不是很大,也不知做点什么,一头雾水。只剩下一个网站可以做做。网站近来考虑使用什么技术来做。感觉自己虽然学习的不算少,但是特别精通的着实不多。Python做总感觉距离有些遥远,开发起来也比较麻烦(也是学的不到家),PHP是一个很好的选择,Javascript总感觉有些不伦不类,函数式编程自己掌握的不好,是学习下去还是拿来使用,感觉不太好。反正不是很喜欢这个语言,也纯粹是个人喜好。

Read More

ACM – UVA10308 – 无根树转有根树

比较莫名奇妙的题目,明明是搜索题目居然放在了数学分类,完全找不到数学的影子。。 利用vector,遍历树,找出最大的子树路径,然后与次大的子树路径相加即为答案。 因为图表示这方面太渣,基本上抄袭了别人的代码= = #include <bits/stdc++.h> using namespace std; // 大数,内存处理 #define INF 0x3f3f3f3f #define ll long long int #define MEM(a) memset(a, 0, sizeof(a)) #define MEMM(a) memset(a, -1, sizeof(a)) #define DEB(x, n) cout << (x) << " " << (n) << endl #define FOR(i, s, e) for(int (i) = (s); (i) < (e); (i)++) const double PI = acos(-1.0); #define CR printf("\n") // 调试用 template <class Type> void debug(Type a[], int len) { for(int i = ; i < len ; i++) { cout << a[i] << "

Read More

ACM – UVA10820 – 欧拉函数

给出一个Answer(x,y)函数,x,y属于[1,N],$Answer(k_x, k_y)$可以由Answer(x,y)得出,目的是求需要计算多少Answer(x,y)。 就是求1,N范围的欧拉函数的加和。欧拉函数的定义是与N互质的数的个数,所以需要如此计算。一开始没有发现就是求欧拉惭愧惭愧。 #include <iostream> #include <cstdio> #include <cstring> #include <set> #include <vector> #include <map> #include <algorithm> #include <queue> #include <cmath> #include <bitset> using namespace std; // 大数,内存处理 #define INF 0x3f3f3f3f #define ll long long int #define MEM(a) memset(a, 0, sizeof(a)) #define MEMM(a) memset(a, -1, sizeof(a)) #define DEB(x, n) cout << (x) << " " << (n) << endl #define FOR(i, s, e) for(int (i) = (s); (i) < (e); (i)++) const double PI = acos(-1.

Read More

ACM – UVA11029 – 快速幂,快速前幂

后面的三位快速幂即可,但是前面三位不好求。经过分析,每一位都有可能牵扯到前三位的值,因此无法具体的作出判断。 如果使用模方法省去后面的部分,必定会造成误差,随着省略的部分增多,误差积累势必会越来越大。(错了一组数据) 最佳的方法还是数学分析(参考了题解): 分析n,$a = log_{10}^n$,则$n = a ^ {10}$。分解a = i + d,i为正数部分,d为小数部分。那么i影响的仅仅是位数,d影响的则是具体的数字。 这样得到的值是准确的。另外对浮点数取余 fmod(double, mod) #include <iostream> #include <cstdio> #include <cstring> #include <set> #include <vector> #include <map> #include <algorithm> #include <queue> #include <cmath> #include <bitset> using namespace std; // 大数,内存处理 #define INF 0x3f3f3f3f #define ll unsigned long long int #define MEM(a) memset(a, 0, sizeof(a)) #define MEMM(a) memset(a, -1, sizeof(a)) #define DEB(x, n) cout << (x) << "

Read More

ACM – UVA11121 – 进制

题意是由10进制转换成-2进制,但是明显我分析错了,所以写了调了接近一下午的bug。。。 有时间再写正常的题解。 题解: 如果当前数位和输入n符号相同,那么不做处理,如果不同且为1,那么下一位(即左边一位)做+1处理 — 因为下一位是上一位的2倍,就相当于做一个变号处理。

Read More

ACM – UVA571 – 模方程

一开始在扩展gcd上想了许久没有办法将得出的数字直接转换成为相应的输出,后来发现就是模方程。 因为不求最佳解,所以直接使用ca*x = n (mod cb)即可。这个方程的解可以覆盖全部的n,因为该方程如果有解,则n是gcd(ca, cb)的倍数。因为ca, cb互质 gcd (ca, cb) = 1,所以明显通过单纯的加满B,向A中倒,然后清空A就可以遍历所有n的解(尽管可能不是最佳解)。 不能是cb*x = n (mod ca),因为n可能大于ca. 如果求最佳解,显然是bfs。当然这到题目也可以dfs来做,不过明显要复杂很多。 #include <iostream> #include <cstdio> #include <cstring> #include <set> #include <vector> #include <map> #include <algorithm> #include <queue> #include <cmath> #include <bitset> using namespace std; // 大数,内存处理 #define INF 0x3f3f3f3f #define ll long long int #define MEM(a) memset(a, 0, sizeof(a)) #define MEMM(a) memset(a, -1, sizeof(a)) #define DEB(x, n) cout << (x) << " "

Read More

ACM – UVa10006 – 快速幂

水题一发。无奈自己没有好好审清题意,另外快速幂居然写错了- = 快速幂在过程中修改a的值,但是我却计算成了在偶数时相乘,调试半天。看来还是咩有好好理解啊。 #include <iostream> #include <cstdio> #include <cstring> #include <set> #include <vector> #include <map> #include <algorithm> #include <queue> #include <cmath> #include <bitset> using namespace std; // 大数,内存处理 #define INF 0x3f3f3f3f #define ll long long int #define MEM(a) memset(a, 0, sizeof(a)) #define MEMM(a) memset(b, -1, sizeof(b)) #define DEB(x, n) cout << (x) << " " << (n) << endl const double PI = acos(-1.0); #define CR printf("\n") // 调试用 template <class Type> void debug(Type a[], int len) { for(int i = ; i < len ; i++) { cout << a[i] << "

Read More

ACM – UVa10023 – 开平方

本题目计算开根号数字,给出Y求X。X = sqrt(Y),主要问题在Y的超大数据。 时间限制是3s。我使用的大数模板中没有一个大数除大数的算法,因此直接借用Java来搞一搞。 利用公式$$(5/x+x)/2 = x$$递归逼近求解。这个公式比较好推,移项即可。 import java.util.*; import java.math.*; import java.util.HashSet; public class Main { static Set set; public static BigInteger cal(BigInteger a, BigInteger b) { BigInteger ans = (a.divide(b) .add(b)).divide(new BigInteger("2")); if(set.contains(ans)) return ans; else { set.add(ans); return cal(a, ans); } } public static void main(String [] args) { Scanner cin = new Scanner(System.in); BigInteger a; String s; int T = cin.nextInt(); while(T-- != ) { set = new HashSet(); s = cin.

Read More