阿毛の次元

Amaok – 修合无人见,存心有天知。

GCD的几种实现方法

最简单的gcd算法:

int gcd(int x, int y)
{
     if(y == 0) return x;    
     if(x < y)      return gcd(y,x);    
     else        return gcd(y, x%y); 
} 

ACM中常用的gcd算法:

int gcd(int a, int b){ return a == 0 ? b : gcd(b % a, a); } 

经过优化的gcd算法(分成奇偶两种情况):

int gcd(int x,int y )
{
    if(x < y) return gcd(y,x);  // x>y
    if( y == 0) return x;  // if y=0, x is GCD 
    else
    {
         if( !(x%2) )
         {                 
           if( !(y%2) )  //x,y both even
               return 2*gcd(x >> 1, y >> 1);    
          else      // x is even, y is odd
               return gcd(x >> 1, y );  
         }
          else 
         {
           if( !(y%2) )  // x is  odd,  y is even
               return gcd(x, y >> 1);
           else       // x, y both odd
               return gcd(y,x-y); 
         }
    }
}

LG P1308 统计单词数

这本来是一道自动机的水题。但是可以用一个很巧妙的结构化解法,这样能大大缩减代码长度,并且降低了这道题的难度(让它更水)。

在这里贴一下代码,如下:

//定义头文件
#include <iostream>
#include <string>
//命名空间
using namespace std;
int main(){
    //定义两个字符串
    string a;
    string b;
    //用string库,调用getline, 直接读入一整行
    getline(cin,a);
    getline(cin,b);
    //转换大小写,可以都转换为大写,或者小写
    for (int i=0;i<a.length();++i){
        a[i]=tolower(a[i]);
    }
    for (int i=0;i<b.length();++i){
        b[i]=tolower(b[i]);
    }
    //因为连起来的不算,所以要在前后加几个空格,一定要是同样多的,同量减同量,等于同量
    a=' '+a+' ';
    b=' '+b+' ';
    //先看看会不会找不到,用a.find()和string::npos
    if (b.find(a)==string::npos){
        cout<<-1<<endl;
    }
    //如果找得到
    else {
        int alpha=b.find(a);
        int beta=b.find(a),s=0;//计数器初始化为0
        while (beta!=string::npos){
            ++s;//计数器
            beta=b.find(a,beta+1);
        }
        cout<<s<<" "<<alpha<<endl;//输出第一个和总共有几个
    }
    //函数返回值为0,结束整个程序
    return 0;
}

 

ACM-ICPC Asia Qingdao Regional Contest, Online

前言:

昨天参加了一波青岛赛区的ACM网络赛,很快乐的水了一下午,感觉自己一直不在状态。

只做出来五道题,C题思路有问题,WA了几次,超时了几次,罚时罚到爆炸。

简单记录一下五道题的思路和代码。

READ MORE →

sshd连接修复笔记

前言:阿毛这个博客服务器的sshd从几个月前就出现问题,命令只能通过管理控制台自带的SVN去执行,并且是osx自带的ssh和windows的xshell都连不上。这就让人很难受了。

查了很多资料,但是鄙人实在是太菜了,一直没找到是哪里出的问题,重启也重启了,补包也补包了,重装也重装了,甚至还自己写了几个脚本想强行启动,但始终是不行。

所以阿毛就需要找一个解决方案,因为本身就是一个linux小白,加上懒,所以一开始是想通过提交工单解决这个问题的,但是体验很一般(手动掰掰),搁置了很长时间,直到今天才修复。


READ MORE →

大桥施工笔记

鉴于某些不可描述的原因,科学上网的路越来越窄,笔者不得不自己搭桥。

为了以防记忆丧失,无法正确使用大桥,便写下这篇笔记。


SR部署脚本(CentOS6/Debian6/Ubuntu14 ):

yum -y install wget

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh &amp;&amp; chmod +x ssr.sh &amp;&amp; bash ssr.sh

备用:

yum -y install wget

wget -N --no-check-certificate https://softs.fun/Bash/ssr.sh &amp;&amp; chmod +x ssr.sh &amp;&amp; bash ssr.sh

READ MORE →

大连游记

从2015年起,我就想来大连了。苦于被时间和琐事所困,这个心愿一直搁置到了2018年的夏天才得以实现。

还记得当初是因为学信竞才认识的安康和导师。时间飞逝,不知不觉间我们已经是相识多年的老朋友了。从懵懂的中学少年时代到奋进的大学青年时代,我们经历的很少,也经历了很多。我很感慨,这是一种很幸福的感慨,一种怀念过去的感慨。

2018年7月11日

7月11日晚,我从济南机场飞往大连。其间一路畅行,没有想到的是机程只需要一个小时,这让我发现来大连是其实是多么的方便快捷。

登机中

因为提前一天晚上就预订了机场附近的青年旅舍,所以11日晚上抵达大连以后很快就得到了充分的休息。不得不说,青旅很适合单身青年出行,设施到位,方便快捷。个人觉得唯一的缺点就是男生宿舍里的脚丫子味有点浓,问题不大。

晚上好,大连。

READ MORE →

《我不是药神》短评

我的朋友圈被药神刷屏了。

上周六,我和大邱、登申一块去了电影院,看了这部已经被刷疯了的片子。

正在分析剧情的大邱。

整部电影给我的感受是很细腻的。我体验到了一种很现实的、充满市井气息的、触人心弦的人性美。

那天晚上我了解到了电影的原型,2015年那个真正的程勇接受的司法审判。就记得当时嚼着口香糖,边嚼边想这人真他妈是个好人。从头到尾,这实际上都是一个很真善美的故事,不管是电影中,还是电影外。本文只谈电影,其他的话题此处不表。
READ MORE →

开发计划

手头的开发计划(坑)有两个,简单做一下记录。

READ MORE →

个人笔电&台式机计划

开始对生产力有刚需了,笔记本和台式机都准备换新。结合个人的发展计划,笔记本应该在最近入手。台式机会隔一段时间,至少大学以后再说。下面是个人计划中笔电和台式机的PlanA和B。仅做备忘。

READ MORE →

星空之上_第二集

庞勇坐到车里的第一时间起,他就听到了自己剧烈的心跳声。

加厚过的车体、狭窄且密封的防弹玻璃窗、用精制钢板隔开的宽敞车厢,都彰显着庞勇身边这个中年人不同寻常的身份。

庞勇努力地保持着冷静,绞尽脑汁的思考着这个中年人究竟是谁。

“庞教授,我这么做是出于对您的安全考虑,还希望您能谅解。”在这辆车开出很久以后,中年人终于开口了。从庞勇上车后他就一直看着庞勇,富有磁性的嗓音和线条分明的轮廓都能给人留下很好的印象,但这并没有缓和庞勇惊疑不定的心情。

“你是谁,你们准备把我带到什么地方?”汗水从庞勇的鼻尖划过。

中年人熟练地点上一支烟,笑了笑,并没有理会这个问题。“庞教授,您认识我。”

庞勇一愣。他早就注意到,无论是把他“请”进车里的精壮司机还是面前的这个中年人,他们身上都穿着制式独特的新型军装。庞勇开始打量起来这张刚毅的面庞,他与部队打过的交道并不算多,他真的想不起来自己究竟在哪儿见过此人。

庞勇缓缓地摇了摇头。

“您还记得姜志华吗?”中年人苦笑道,他拿出手机,找出来一张老式的红底一寸照片。

“你是…”,庞勇怔住了,记忆中早已尘封的那道瘦弱身影和面前的中年人重合在了一起,“你是小姜!?”

READ MORE →