考研日记

##2018-07-16 周一##

今天下午在图书馆,申请了博客园,之前用CSDN,但是广告太多,被恶心到了。暂时还没有自己搭一个blog的打算,这个先用着吧,还蛮喜欢博客园这种简单的风格,最主要的是——它没有明显碍眼的广告。

近来拖延的有些严重,一直没有总结,今天早上写完代码,突然有些茫然。想用这半天时间停下来好好思考,于是跑去看了看论坛前辈的记录,突然想到我也应该对这段历程记录些什么,那么,就从今天开始吧。以往的经验告诉我,在学习这件事上,最不需要仪式感——不需要等到下周一早上八点钟,也不需要等到离deadline恰有xx天,总之想到就该开始做了,做着做着就成习惯了,就是这么简单。

年初辞职,回头想想,辞得有点早了。不过也没什么好后悔的,除了少挣了点钱,在公司的后段时间自己过得并不是很理想,能力上得不到进步而遇到的问题却无人可交流解惑。总之,任一结果都不是单因素造成的,做了这个决定,我也必须要为自己的决定承担责任。再说了,时间一晃现在都已7月中旬,真是一眨眼的功夫啊。

四月多开始正式复习,截至目前——

数学方面:四月、五月、六月把高数部分过了两遍(基础+强化),主要把汤家凤的高数讲义和题典1800的高数部分做掉(后面还有三节留着)。然后七月初开始线代,头两天快速的把基础课视频过了一遍,对基本概念有了大致的认识,然后开始做题,到昨天为止,已经把汤的线代讲义都做完了(用了8天时间,期间有6天是全天写代码的),线代的进度比自己预想的要快很多,但总体感觉上汤的题目貌似比较简单(所以,快是因为简单吗?)。

英语方面:五月份练了15天左右的手写印刷体,感觉书写有了明显的变化。同时,学习了武峰的《十二天突破英汉翻译》,虽然书名属于"xx天搞定派",给人一种不靠谱的感觉,但这确是本好书。阅读中常有醍醐灌顶之感,解决了我在英语学习方面的很多困惑,让我对英语和汉语的语言差异有了些许了解。在四月份的时候还坚持阅读了近30篇The Economist,这个过程让我获得了许多满足感和愉悦感,是种美妙的体验。这个阶段不算真正的复习,初心多半是因为对英语的爱好,内心也少有功力之想,怡然而自得。五月底至六月下旬,做了05~07三年真题的阅读部分和05~09五年真题的翻译部分,七月伊始至今,英语阅读就没再做过了,不过基本保证每天都有背单词,截至到昨天,大纲词汇已经过完两遍了(结合"欧路词典"),觉得效果挺好。上周买了何凯文的同源外刊,也能保证一天一篇的阅读量。

专业课方面:五月中旬到六月上旬做完了王道的数据结构,前后花了约20天,感觉比以前做明显容易多了,但是算法设计题仍然需要多练,毕竟考场上终究拼的是熟练度,没有大把的时间去思考。然后就是刷PAT了,不过刷算法着实是一件耗时间耗精力的事情啊,尤其在考研这个紧张的阶段。而且感觉题目难度越来越难了,但是无论如何要咬牙坚持下去,9月8号去杭州,一定要拿下它!同时要平衡好数学和PAT的时间,哎,难啊,坚持住!

今天第一次记录,算是简单回顾了一下,离考研还有159天,可以说是非常紧张了。我不太相信那种复习5个月甚至3个月就能上清北浙交复的所谓奇迹——尤其在计算机/软件这种竞争及其激烈的学科中,而即使有奇迹,那也是极少概率的,我深知自己不属于这个行列。不去怀疑自己的能力,不去羡慕他人的成绩,不要浮躁和贪婪,也不要想着overnight success,默默努力吧。

 ##2018-07-22 周日##

周日,做个小结。

本周定的任务超额完成,任务量似乎定的小了点。周一下午和晚上几乎没刷题,今天早上也起得很晚,说起来还是浪费了好些时间。早上做数学,下午和晚上写代码,闲暇抽空背单词和阅读,这个安排似乎是效率较高的,在PAT考试结束前就按着这个节奏走吧。此外,本周锻炼了两次,每次锻炼完吃半个冰西瓜,真是爽哉。不过睡觉还是太晚了些,尽量12点前睡觉吧,很多时候效率低还不是前一天没睡好??!!

睡了,晚安!我知道你会有起伏和波动,但明天醒来又是新的一天!上帝终究不会亏待努力的人!

 ##2018-07-29 周日##

本周发生了点意外,浪费了两天半的时间。好在任务还是基本完成了。比较严重的问题是早睡早起以及空闲时间玩手机的问题,其他的我觉得任务量还可以再加大。下周一定要把要把作息调整好,这是下周的重点任务!

##2018-08-01##

今天刷题时,把double型定义成了int型,debug了2个多小时,记录一下这愚蠢的行为!反思,严谨!

##2018-08-23##

8月份到19号为止做完了两轮概率论,感觉还比较满意。7月完成线代的两轮复习,8月搞概率,高数已经快两个月没有做了,比较慌。但是9月8号的PAT又迫在眉睫,到考完PAT之前还是all in coding吧,数学放在晚上做3个小时。写代码坚决不能放在晚上,一写就熬夜,得不偿失!

目前已经把甲级题库基本刷完了,后面几套限时模拟了一下,只能得个75分左右。很多细节的点因为不够熟练而导致失分,或者耗时较长,这些是近段时间需要攻克的问题。此外,准备把题解放到博客上来,就当这段时间的复习整理了。加油。PAT,90+!!!!!!

 ##2018-08-25##

这周真的是All in PAT了,但是从23号到今天整理的情况来看,感觉效率不高啊!今天晚上有点崩溃,突然感觉自己像是迷失的羔羊,迷茫,不知道自己的努力能否得到回报,这一次真的有点害怕失败,毕竟我花了这么多的时间和心血。刷PAT真的非常耗时间,这个和做数学做英语不能相提并论,这一周几乎没有做过数学和英语了,除了刷题本身需要大量的时间,我想我自己也有点不按计划进行,导致数学和英语的进度没有及时跟上,说到底还是因为自己浪费了太多的时间,尤其在晚上回到房间后的这个时段,时间越来越紧迫,要合理把控自己,不能功亏一篑啊!!!想想查成绩的那一刻,如果现在浪费时间,不能做到100%的努力,到时候失败了,那种感觉,那才是真正的失望啊!

##2018-09-04##

8号就要去杭州考PAT,这几天开始限时模拟了一下,感觉状态还不错,希望考试的时候也能这么顺利。继续保持!加油。把这几天的练习情况记录与此,算是给自己的一个激励!

8.31 下午第1套:1144~1147,得分:100分,耗时:1小时8分钟(做的太顺了吧)

8.31 下午第2套:1140~1143,得分:100分,耗时:2小时12分钟(1142卡住了,找了半天是个低级bug,罪过!)

9.01 上午第3套:1136~1139,得分:100分,耗时:1小时40分钟

9.01 下午第4套:1132~1135,得分:100分,耗时:1小时41分钟(链表有个坑之前没注意到,找了几分钟)

9.02 上午第5套:1128~1131,得分:100分,耗时:2小时40分钟(1130居然卡了很久,后来突然又想通了;1131耗时80分钟才AC,有点慌啊)

9.02 下午第6套:1124~1127,得分:100分,耗时:1小时8分钟(好简单。。)

9.03 上午第7套:1120~1123,得分:100分,耗时:1小时51分钟(中间两题浪费了一些不该浪费的时间,分别是输出格式"%05d"问题和多次查询前的初始化问题)

9.03 下午第8套:1116~1119,得分:100分,耗时:1小时55分钟(简单的题看题不仔细,浪费了一些时间;最后一题pre+post构建二叉树没有特别熟悉)

9.04 下午第9套:1112~1115,得分:100分,耗时:1小时58分钟(第1题字符串处理有点耗时了,第4题这么简单的又tm看题不仔细了。。。)

9.04 下午第10套:1108~1111,得分:100分,耗时:2小时13分钟(最后一题两次Dijkstra做了1个小时,这种题只是堆代码量而已,不要慌啊!)

目前来说都能拿到满分!继续保持,还有最后3天,All in !

##2018-09-05##

9.05 上午第11套:1104~1107,得分:100分,耗时:1小时39分钟

9.05 下午第12套:1100~1103,得分:100分,耗时:2小时42分钟(ps.做这一套的时候真有种考试的感觉,就是做起来不是那么顺手的,前面两题思路都是立马就有的,本质上是很简单的题,但是因为自己在编写代码之前没有先设计好,理清思路,所以提交后丢三落四,改来改去非常影响心情和状态,考完后和第一次做的相比较,代码居然写的更烂了。第3题很水。第4题是非常好的一道题,一开始自己居然看错题目,与之前那个因式分解的搞混了,浪费了一些时间,不过好在静下心来,花了一个小时AC了,真正考试的时候也要保持这样的心态,即使第一题花了40分钟也不要慌!稳扎稳打!越急越想不出来。。)

今天的教训就是——写代码前一定要写在纸上写好思路和关键代码,该分类的分类,边界情况好好考虑,切记好高骛远!

##2018-09-06##

9.06 上午第13套:1096~1097,得分:96分,耗时2小时30分钟(1096扣2分,1098扣2分,什么坑没看出来。对堆排和插排没有达到闭着眼睛写出来的地步,还需要在纸上比划比划才行,所以1098比较耗时间)

晚上,自己给自己出题(1)N皇后问题;(2)中序+层序构建二叉树;(3)求普通二叉树的LCA;(4)求关键路径

 1 #include <cstdio>
 2 #include <cstdlib>
 3 const int maxn=100;
 4 int table[maxn];//table[x]=y,对应(x,y)
 5 int n,tot=0;
 6 
 7 //按列排放
 8 void dfs(int x)
 9 {
10     if(x==n){
11         tot++;
12         return;
13     }
14     for(int y=0;y<n;y++){
15         table[x]=y;//假设把皇后放在(x,y)处
16         //检验
17         bool flag=true;
18         for(int i=0;i<x;i++){
19             if(table[i]==table[x] || abs(table[x]-table[i])==x-i){
20                 flag=false;
21                 break;
22             }
23         }
24         if(flag) dfs(x+1);
25     }
26 }
27 
28 int main()
29 {
30     scanf("%d",&n);
31     dfs(0);
32     printf("%d",tot);
33     return 0;
34 }
View Code
//level + in -> buildBiTree
#include <cstdio>
#include <vector>
using namespace std;
const int maxn=100;
struct Node{
    int val;
    Node *lchild,*rchild;
    Node(int v):val(v),lchild(NULL),rchild(NULL){}
};
int n;

Node* buildBiTree(vector<int>& levelOrder,vector<int>& inOrder,int inL,int inR)
{
    if(levelOrder.size()==0) return NULL;
    Node* root=new Node(levelOrder[0]);
    int pos=inL;
    while(inOrder[pos]!=levelOrder[0]) pos++;
    int leftCnt=pos-inL;
    vector<int> leftSubTree,rightSubTree;
    for(int i=1;i<levelOrder.size();i++){
        bool beRight=true;
        for(int j=inL;j<pos;j++){
            if(levelOrder[i]==inOrder[j]){
                leftSubTree.push_back(levelOrder[i]);
                beRight=false;
                break;
            }
        }
        if(beRight) rightSubTree.push_back(levelOrder[i]);
    }
    root->lchild=buildBiTree(leftSubTree,inOrder,inL,pos-1);
    root->rchild=buildBiTree(rightSubTree,inOrder,pos+1,inR);
    return root;
}

void preOrderTraversal(Node* root)
{
    static int k=0;
    if(root){
        printf("%d",root->val);
        if(++k < n) printf("->");
        preOrderTraversal(root->lchild);
        preOrderTraversal(root->rchild);
    }
}

Node* findLCA(Node* root,int u,int v)
{
    if(root==NULL) return NULL;
    if(root->val==u || root->val==v) return root;
    Node* pLeft=findLCA(root->lchild,u,v);
    Node* pRight=findLCA(root->rchild,u,v);
    if(pLeft && pRight) return root;
    else return pLeft?pLeft:pRight;
}

int main()
{
    freopen("pat.txt","r",stdin);
    scanf("%d",&n);
    vector<int> level(n),in(n);
    for(int i=0;i<n;i++) scanf("%d",&level[i]);
    for(int i=0;i<n;i++) scanf("%d",&in[i]);
    Node* root=buildBiTree(level,in,0,n-1);
    //preOrderTraversal(root);
    Node *ptr = findLCA(root,4,5);
    printf("%d\n",ptr->val);//2

    ptr = findLCA(root,4,1);
    printf("%d\n",ptr->val);//1

    ptr = findLCA(root,2,6);
    printf("%d\n",ptr->val);//1

    return 0;
}
View Code
//Critical Path
#include <cstdio>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
const int maxn=100;
struct Node{
    int v;
    int w;
    Node(int v_,int w_):v(v_),w(w_){}
};
vector<Node> Adj[maxn];
vector<int> pre[maxn];
int inDegree[maxn]={0};
int ve[maxn],vl[maxn];//结点的最早开始时间和最晚开始时间
stack<int> stk;//存放逆拓扑序列
int n,m,s,e;

bool topoSort()
{
    fill(ve,ve+maxn,0);
    priority_queue<int,vector<int>,greater<int>> q;
    for(int u=0;u<n;u++)
        if(inDegree[u]==0) q.push(u);
    while(!q.empty()){
        int u=q.top();
        q.pop();
        stk.push(u);
        printf("%d ",u);
        for(auto node:Adj[u]){//u->v
            if(ve[u]+node.w > ve[node.v]) ve[node.v]=ve[u]+node.w;
            inDegree[node.v]--;
            if(inDegree[node.v]==0) q.push(node.v);
        }
    }
    return stk.size()==n?true:false;
}

void process()
{
    fill(vl,vl+maxn,ve[n-1]);
    while(!stk.empty()){
        int u=stk.top();
        stk.pop();
        for(auto node:Adj[u]){//u->v
            if(vl[node.v]-node.w < vl[u])
                vl[u]=vl[node.v]-node.w;
        }
    }

    for(int u=0;u<n;u++){
        for(auto node:Adj[u]){//u->v
            int ae=ve[u],al=vl[node.v]-node.w;
            if(ae==al){
                pre[node.v].push_back(u);
                printf("%d->%d\n",u,node.v);
            }
        }
    }
}

vector<int> path;
void dfs(int u)
{
    path.push_back(u);
    if(u==s){
        for(auto it=path.rbegin();it!=path.rend();it++)
            printf("%d ",*it);
        printf("\n");
        return;
    }
    for(auto p:pre[u]){
        dfs(p);
        path.pop_back();
    }
}

int main()
{
    freopen("pat.txt","r",stdin);
    scanf("%d%d%d%d",&n,&m,&s,&e);
    int a,b,w;
    for(int i=0;i<m;i++){
        scanf("%d%d%d",&a,&b,&w);
        Adj[a].push_back(Node(b,w));
        inDegree[b]++;
    }
    bool flag=topoSort();
    if(flag){
        printf("topoSort success\n");
        process();
        printf("min time needed:%d\n",ve[n-1]);
        dfs(e);
    }
    return 0;
}
View Code

 ##2018-09-07##

9.07 上午第14套:1092~1095,得分:100分,耗时:2小时16分钟(前三题水,最后一题居然做了那么长时间!)

下午做不下去了,感觉有些无所事事,后来在牛客网上做了一道题,瞎玩的,代码贴下面:

#include<stdio.h>

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        int tmp;
        char op,ch1,ch2;//op吸收操作符,ch1,ch2吸收无用的符号
        while(scanf("%d%c",&tmp,&ch1)!=EOF){
            double ans[210]={0},sum=0;
            ans[0]=tmp;
            int size=0;
            while(scanf("%c%c",&op,&ch1)!=EOF){
                scanf("%d%c",&tmp,&ch2);
                switch(op){
                    case '+':
                        ans[++size]=tmp;
                        break;
                    case '-':
                        ans[++size]=-tmp;
                        break;
                    case '*':
                        ans[size]*=tmp;
                        break;
                    case '/':
                        ans[size]/=tmp;
                        break;
                }
                if(ch2=='\n') break;
            }
            for(int i=0;i<=size;i++){
                printf("%.2f ",ans[i]);
                sum+=ans[i];
            }
            printf("%.2f\n",sum);
        }
    }
}
View Code

明天就要去杭州考试了,祝自己好运吧,加油!相信这段时间的努力不会白费的!!!

##2018-09-09##

考完了,有点遗憾。后三道做出来只花了1个小时30分钟左右,最后一题求普通二叉树的LCA还真被我预测中了,很快就写完;第三题扣了3分我觉得不碍事儿,于是就开始做第1题,此时还有一个多小时。看了一眼当时大家的提交通过率,第1题居然是最低的,我觉得第1题肯定会很坑——这真的是一个不好的心理暗示!然后就开始看题目了,果真,是有点坑,题目都读了好几遍,然后开始在纸上模拟。一开始毫无思绪,思路陷入误区,按照那个思路都不能模拟出正确答案,这个时候心理开始有点波动了。然后时间大概还剩40分钟不到一点,我突然意识到,这tm只是一道20分的题,肯定是自己想难了,于是想到用暴力,马上在纸上写出了部分关键代码,然后进行验证,结果答案是错的,时间还剩20多分钟的样子,这个时候感觉上已经不能很好的静下来思考问题了,脑子思路很乱,接下来就一边想一边debug,过程中没能很好的调节好自己的心态,直到最后都没解决,分值最低的第1题结果就这么凉凉了。

走出考场的时候,看到操场上正在军训的浙大新生,突然,就那一瞬间——我感觉自己好像老了。我都已经毕业一年了。光阴易逝,唯经历过方能知晓,这种感觉,真的五味杂陈,难以用言语来描述。晃过神来,我反思刚刚的考试,在前一个半小时我觉得自己做的太顺了,似乎有了拿满分的希望(至少拿个90+应该是没问题的,我想),但是后半段看到大家第1题的提交通过率的时候给自己的心理暗示,让自己潜意识会觉得“肯定会很难”,这一点是最致命的地方,直接导致自己在做题的时候思路受限,心里的小人不断在烦扰“这一题很难啊,这一题很难啊...”。可是,考都考过了,吸取经验吧!这也在警示自己,平时一定要加大模拟强度(从时间和题量/题型两个维度考察),只有经过反反复复的模拟练习,给自己创造那种“高压”的状态,才能在考场上临危不乱。考前虽然自己也模拟了10多套,但是总的来说做的都比较顺利,以至于没有体会过“高压”的状态。 

回来的高铁上,自己算了一下,发现机试考80和90分对最终成绩的影响其实不大,所以这个分数也可以用了。虽然整个暑期投入PAT的时间相当的多,能上90是最理想的(考满分就需要一些可遇不可求的运势了),但是也不能否定自己的努力。永远要保持自信,看到群里总是有人在说“我就刷了半个月,还是0基础”,如此芸芸,随他去吧。考研最最最最关键的还是初试分数,收拾好心情,接下来的100天,拼了!

##2018-09-26##

今天报名了,有点慌,抓紧时间刷题吧!加油!竭尽全力吧!

##2018-11-14##

还有37天了,好累,坚持住。行百里者半九十,一年的努力不能白费,最后的冲刺,加油!追求那些令人热泪盈眶的东西!

##2019-02-14##

明天出分了。保佑我吧!

##2019-02-15##

努力没有白费,初试399。接下来个把月好好准备复试!加油,就是干!

##2019-08-19:考研日记的最后一次更新##

距离上一次更新已经过去很久很久了,这期间自己用Github+Hexo搭了博客,不过用了一段时间觉得我并不喜欢,原因诸多,所以在那上面写了几篇文章之后又被我弃用了,最后还是决定回归这里。我会好好耕耘自己的博客,尽量写出高质量的博文。在哪个平台写博客并不重要,写出高质量的博客才重要,是吧。

哦,对了,我是考上浙大了,并且名次也还不错。几个月前我就来学校学习了,在这里遇到了一些同学,有很强的如本科就在MSRA、阿里等实习的;也有比较菜的如除了考研科目之外其他啥都不知道的。不过大家真的都超级努力,这一点是最直观的感受。我是比较菜的吧,没有拿得出手的项目,没有大厂实习经历,基础一般,现在的方向还有点迷茫,虽然不至于像部分同学那样完全的“0基础”跨考,但本科非科班,缺少了4年的系统学习,终究和牛人有很大差距,欠下的技术债终究是要慢慢偿还,因为我想成为一个很厉害的人啊。唯一庆幸的是现在有时间可以自由的学习,希望自己能不负光阴,再回头看时,说我做到了。

删了很多之前写的博文,因为博文质量不高。这篇还是留下了,不过这是最后一次更新。其他的,等我把故事写完,再把它说给你们听。(接下来好好写技术文章

posted @ 2018-07-16 15:19  kkbill  阅读(924)  评论(2编辑  收藏  举报