The Road Not Taken

一个人留在宿舍就会胡思乱想些东西
比如会和外表淑女内心刚烈的刘爷一起吐槽词汇老师
比如会独自去看一场《大闹天宫》的3D电影
比如会心中突然冒出个个支教的念头

宿舍同学一个一个的走掉
正如我选择的道路上同行人越来越少
屈服于现实的人很多
无法强迫谁谁谁如何如何
也许每人都有自己的想法与难处
幸运的是我还没有被现实磨圆棱角

Two roads diverged in a yellow wood,
And sorry I could not travel both
And be one traveler, long I stood
And looked down one as far as I could
To where it bent in the undergrowth;
Then took the other, as just as fair,
And having perhaps the better claim,
Because it was grassy and wanted wear;
Though as for that the passing there
Had worn them really about the same,
And both that morning equally lay
In leaves no step had trodden black.
Oh, I kept the first for another day!
Yet knowing how way leads on to way,
I doubted if I should ever come back.
I shall be telling this with a sigh
Somewhere ages and ages hence:
Two roads diverged in a wood,and I—
I took the one less traveled by,
And that has made all the difference.

既然是自己选择的道路
踽踽独行也好,荆棘遍布也罢
我会一直风雨兼程

Sagittarius—写在这3/7

大三这一年发生了很多事情,ACM亚洲区的预选赛哈尔滨网络赛意外的第一,现场赛峰回路转的铜牌,成都赛区现场赛的打酱油,国际数学建模的二等奖,发了篇挺水的paper,没想得到却最终得到的科技标兵奖励与奖学金,想得到却最终没得到的科技创新立项。看着光鲜的经历,貌似得到了许多,其实都是表面文章。数学还是在吃高中的老本,语文阅读量一年不如一年,英语还是和以前一样烂,或者是比以前更烂。code技术从成都回来就没有提高过,计算机科学知识严重不成体系。

大三这一年又结束了,大家忙着找工作,出国,保研,考研。最终清华的直博机会估计是要泡汤,说到底还是自己的GPA还是不够高,准备的不够充分,每每看到牛人都会自惭形秽,也让我更加认识到自己的不足,总是把精力放在计划一些事情上,行动时却总不能聚精会神。妈妈说我总是在关键的时刻差那么一点点,从中考差两分去一中而到了三中,到高考差一点去了暨南大学而来了中国地质大学,再到这次保研时估计清华直博无望而可能保送个差强人意的本校。

人生其实真是个奇妙的东西,尤其回过头来看尤其如此。若是当初去了一中,今天也许不会有高三7的一帮好兄弟们,若是大学去了暨南大学读了经济,亦或是分再高点去南邮,也许不会在地大搞起初中时结缘的信息学竞赛。试想若是去清华读了直博,人生经历也许又是不同,可能不会有我现在不满意保本校不满意而萌生的推迟一年研二出国的想法。人生那么多的不确定,能影响的其轨迹在我现在看来有两条:选择道路时的眼界,选择完之后的付出。

关于眼界问题,来到北京三年已深有感触,但是在选择完道路之后的付出上,我总是做的不足。眼高手低,浮躁,懒惰,拖延都是我的缺点。我想在成长的路上,这些都是我要下决心改正的恶习。

大四的课全部被我拉到大三上完了,如果保内顺利,将会有整整一年的空闲。原计划是跑遍中国,学学吉他。现在看来,实习背单词发paper这些事情变得更重要了。呵呵,我又在所谓的“计划”了,欲望太多,心就会杂,心不静,有些事情就不能踏踏实实来做。一点一点有意识的改吧。

听万晓利的《陀螺》感触很多,有时候也在想自己这样为了什么?在徐州踏踏实实的活着,没事时能和同学开开心心的打dota吃烧烤喝啤酒吹牛B,老了在黄河沿儿打个牌;或是回到省内,在南京找个安分工作,周围全是自己同学,能算个二线的城市,徐州人也能混的开;或是留在北京,读完研后怎么说也能混个每月8k-10k起薪的程序员工作,计划着房贷车贷,没事翻墙做做愤青,玩玩豆瓣做做文青,去个草莓迷笛音乐节啥的当个摇滚青年,加薪了还能去全国当当驴友,玩玩单反写写游记;以现在的眼界,生活只能是这种程度了。自然也不会想到如果出国以后的世界了。

今晚刚看完《The Social Network》,最后一个镜头,夜幕降临,Zuckerberg向女友送出了好友申请,不停的refresh着她的facebook页面。也许所有男人都懂那种感觉吧。
说到底我还是个射手,骨子里还是TMD向往着自由。

错,可以加学分。

S:考《红十字会急救员》资格证是为了什么?

P:热心救助自己与周围同学!

S:错,可以加学分。

S:参加歌唱比赛为了什么?

P:为了自己唱歌的爱好!

S:错,可以加学分。

你看大家那无所不用其极的样子。

少吐槽了,你要是GPA全院第一还有这些破事儿?好吧快滚去看书吧=。=

五年前纠结的事情现在回头看来微不足道,五年前不在意的事情却让现在的我顿足惋惜。

那么我现在纠结的事情是否在五年后也微不足道?五年后让我顿足惋惜的事情现在又在哪里?

又是个系列的开头啊魂淡!

最近在做HDU的ACM Steps,权当恢复性练习了。果然许久不碰code了,做Chapter Two的Section 1都花了一天时间(当然我也是边做边玩啥的=。=)恩其中有三题需要记录一下,虽说都是大水,但总算也为接下来的一系列ACM Steps解题报告开个小头吧。

HDU 1271 整数对

假设删掉第k位为数字B,前面的数字段为A,后面的数字段为C,则有:

n=A*10^(k+1) + B*10^k + c

m=A*10^k + c

N=n+m=(11A+B)*10^k + 2c

有:A=N/10^k/11,B可能被2c进位,故分为两种情况:

  1. B=N/10^k – 11A && 2c < 10^k //2c未进位
  2. B=N/10^k – 11A – 1 && 2c >= 10^k //2c进位

遍历k的可能值(0到N的位数)便可将所有n求出,排序输出即可。

code://非出自我手,感觉结构要比我的好

#include <iostream>
#include <algorithm>
int main()
{
    int n,a,b,c,count,k,s[100],i;
    while(scanf("%d",&n)!=EOF && n)
    {
        count=0;
        for(k=1;k<=n;k*=10)
        {
            c=(n/k)/11;
            b=n/k-c*11;

            if((b!=0 || c!=0) && b<10)
            {
                a=(n-b*k-c*11*k)/2;
                if(2*a+b*k+c*11*k==n)
                {
                    count++;
                    s[count]=a+b*k+c*10*k;
                }
            }
            b--;
            if((b!=0 || c!=0) && b>=0)
            {
                a=(n-b*k-c*11*k)/2;
                if(2*a+b*k+c*11*k==n)
                {
                        count++;
                    s[count]=a+b*k+c*10*k;
                }
            }
        }
        if(count==0) printf("No solution.\n");
        else
        {
            sort(s,s+count,cmp);
            printf("%d",s[1]);
            for(i=2;i<=count;i++)
            {
                if(s[i]!=s[i-1])
                printf(" %d",s[i]);
            }
            printf("\n");
        }
    }
    return 0;
}

HDU 1060 Leftmost Digit

本来n^n最左位会和最右位一样有循环节的,结果尝试失败了=。=还是考虑数学的方法:

m=n^n        =>        log(m)=n*log(n)        =>        m=10^(n*log(n))

其中,n*log(n)的整数部分只提供0的个数,最左边的数字是由n*log(n)的小数部分提供,如此就很简单了,log思想的使用非常重要,这也是遇到数学推导题时容易漏掉的一种方法(只有我这种废柴吧= =!)

Section 2 里正好又碰到了一题求Fibonacci数前4位的,用log的方法马上A掉了,^_^

code就不贴了不到10行。

HDU 2138 How many prime numbers

本身是个水题啦,就是素数筛法,这里主要想整理一下常用的素数筛法。

张志强有一篇简单介绍两种素数筛法复杂度的文章

bool isPrime[MAX+1];
int total;//计数
int prime[MAX+1];

//线性筛法寻找素数
void get_Prime()
{
    memset ( isPrime, true, sizeof ( isPrime ) );
    memset ( prime, 0, sizeof ( prime ) );
    for ( int i = 2; i <= MAX ; i++)
    {
        if ( isPrime[i] )
            prime[total++] = i;
        for ( int j = 0; j < total && i * prime[j] <= MAX; j++ )
        {
            isPrime[i * prime[j]] = false;
            if ( 0 == i % prime[j] )
                break;
        }
    }
}

上面的代码是O(n)的素数筛法,用到了prime[]来辅助记录。另外,prime[]的个数可以只开到2n / log(n)。

a piece of shit

现在想想,只有得到了它,才有权利说它是a piece of shit…..












============吐槽分割线============

没错,MCM/ICM你其实就是a piece of shit!

a piece of shit!

piece of shit!

of shit!

shit!

t!