Codeforces Round #345 (Div. 1) C. Table Compression

原题C. Table Compressiotime limit per tes4 secondmemory limit per tes256 megabyteinpustandard inpuoutpustandard outpuLittle Petya is now fond of data compression algorithms. He has already studied gz, bz, zip algorithms and many others. Inspired by the new knowledge, Petya is now developing the new compression algorithm which he wants to name dis.Petya decided to compress tables. He is give... Read More

深度优先搜索之栈解迷宫(C++)

在之前的一篇关于搜索的文章中《广度优先搜索算法队解迷宫问题》有提到深度优先搜索(dfs)算法,其中有一种就是本篇文章提到的实现方法:利用栈解迷宫;《广度优先搜索算法队解迷宫问题》中利用栈解迷宫有一个bug,比如:在x点出发,向右走直到尽头回到x点,此时在向其他方向(比如上),那么不能再走曾经向右走过的路(坐标)。这次,我们增加一个direct_mark数组,来标记在每一个坐标上曾经走过的方向。程序范例[code lang="cpp"/** 栈解迷宫 - 深度优先搜索.* @authur genialx <admin@ihuxu.com>*#include <iostr#include <st#define LEFT #define RIGHT #define UP #define DOWN using namespace std;struct Path int x;... Read More

分治法解矩阵乘积

题目假设有A,B两个矩阵,且其均为n*n维矩阵,n为2的幂(n>=2)。求A与B的乘积。分治法解矩阵乘积通过上图我们可以看到书中的利用分治法解决的伪代码。解决思路一暴力解法时间复杂度O(n^3程序范例void solve_matrix_multiply_n3(int a[][MATRIX_LENGTH], int b[][MATRIX_LENGTH], int c[][MATRIX_LENGTH]for (int i = 0; i < MATRIX_LENGTH; i++) for (int j = 0; j < MATRIX_LENGTH; j++) for (int k = 0; k < MATRIX_LENGTH; k++) c[i][j] += a[i][k] * b[j][k];解决思路二利用分治法解决矩阵乘积程序范例void solve_matrix_mul... Read More

LeetCode OJ Algorithm – reverse linked list ii (medium)

原题Reverse a linked list from position m to n. Do it in-place and in one-pass.For exampleGiven 1->2->3->4->5->NULL, m = 2 and n = 4return 1->4->3-&gNoteGiven m, n satisfy the following condition1 ≤ m ≤ n ≤ length of list.地址https://leetcode.com/problems/reverse-linked-list-ii程序范例[code lang="cpp"/** Definition for singly-linked list.* struct ListNode * int val;* ListNode *next;* ... Read More

作为10个月的Vim使用者心得总结

隐约记得对于Vim的使用,起始于2015年12月份底。当时,是处于Eclipse到Vim的过渡时期。所以,对于Vim的使用基本上是“婴幼儿”级别。偶然间,我看到了一位同事正在编码的屏幕。不需要触摸板或鼠标的操作,看起来是那么的自然,更是让我看得有些“眼花缭乱”。从那时起,才知道原来Vim可以这么cool(是不是很无知的赶脚?)。这十个月,经历了从小白到能够把Vim作为主“IDE”的过程。故在此和大家分享下本人在Vim的心得。从最基本的概念、快捷键到一些实用的插件的管理与使用。在此之前,曾在部门的例会上有做过分享(分享了一个多小时,估计大家都困了),PPT托管在了github.com/genialx/vimer 上,本文的内容也将基本按照着PPT的顺序。Vim的指令集之丰富、功能之强大真,以至于我这种“小白”来在会议上分享Vim可谓多么忐忑,: 为什么要分享Vim?这个问题很简单,但更重要。对于Vim,会有两种态度... Read More

自从有了她,再也不怕断签了:超级话题签到提醒

前言在解决了上一次关于超级话题积分bug后,又接到超级话题签到提醒的产品需求。这是一篇偏于技术实现的文章,讲述的比较笼统,业务围绕超级话题的签到提醒进行展开。如果,您对超级话题签到提醒的技术背景与实现感兴趣,那么这篇文章希望对你有帮助。当然,如果你是某个超级话题的超级粉丝,比如鹿晗,张艺兴,但是发现断签了。那么我非常替你感到“痛心”,因为目前超级话题没有补签功能。当然,如果你觉得是因为系统问题导致没有连续签到,那么你可以通过超级话题的官方反馈方式进行反馈来解决问题。当然,我劝你这么做之前一定要三思。因为,通过我排查的经验而言,基本山是由于你们(用户)把时间搞错了,而导致没有续签。而且,目前的签到提醒功能会在每天晚上提醒你签到的哦产品最近,在忙活超级话题的签到提醒产品的开发。首先,这是第一次比较热切的关注用户反应的产品。虽然说,对于产品的参与和认知并没有多么深入的理解,但是愈发的觉得这件事... Read More

几个想抽自己的PHP错误

每隔一段时间,总有那么几天想抽自己。不知道到底为什么,睡眠不足么还是鸭梨大?当然,我没有什么自虐症也没有什么抑郁。可是,心情如词鸭梨 鸭梨大 鸭梨大鸭梨 鸭梨 鸭梨大 鸭梨大 鸭梨大我真的鸭梨大鸭梨 鸭梨大 鸭梨大鸭梨 鸭梨 鸭梨大 鸭梨大 鸭梨大就快受不了了。。。无奈之间,只好安慰自己:“善骑者坠于马、善水者溺于水、善饮者醉于酒,善战者殁于杀”。可这样自欺欺人好么 :<真相[code lang="php"tryself::$_messages[] = array('uid' => $uid, 'text' => $content);if(count(self::$_messages) >= 5) $result = Apilib_Emessage::sendMulti(self::$_messages, self::SENDER_UID);self::$_messages[] = array();... Read More

PHP的Traits:到底是祸害还是好得飞起?

在2012年3月初,PHP团队宣布了5.4版本的发布。程序员们对这次的发布已期待许久,因为这一次的升级带来了很多特性的加入。其中,最受追捧的是Traits。为了构建这次发布的版本,Shammer C特意为此撰写了一篇文档:如何使用PHP的Traits,我强烈的建议您在读这篇文章之前拜读一下,因为这篇文章需要读者能够对Traits有一定的基础了解。Traits已经被PHP社区广泛的接受,最为关键的是因为它包含了其他Java、C++和Python编程语言的特性。除此之外,Traits也被广大的网友们神化了。那些程序员狂砍这种特性将给他们的项目带来多么大的益处,尤其指出它是能够替代面向对象(OOP)继承的特性。然而,Traits真的有那么神奇么?难道真的能对PHP开发有所促进么?还是败絮其中呢?PHP的Traits是个祸害从表面上来看,由于它可以降低整个应用中代码的复用成本而受到了非常强烈的支持... Read More

写C++就像是抱着一捆指针在浩瀚的内存中裸奔

Ja娃们,好久不见,最近和两位Java大牛喝了牛肉汤后,惊奇发现,他们都提及到了一个很有意思的话题:Java的开发效率比C++要高!小编的常识认为,C++的运行效率高,Java的开发效率高,但究竟是为什么,我觉得有必要弄个明白,我请教了几位大牛,他们这样说A大哥说了C++是面向内存编程,Java则是面向数据结构编程。C++里,内存是裸露的,可以拿到地址,随意徜徉,增了删了,没人拦你,等到跑的时候崩给你看。然而Java里,能操作的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。Java程序员是孩子,嚷嚷要这个那个,玩完了就丢,JVM是家长,买买买,还要负责收拾。有的孩子熊点,屋子很乱,收拾起来费劲,但房子还在。C++程序员是神,操纵着江河湖海,日月星辰,但能力越大,责任越大,万... Read More

深入IDE利器VIM:tab键的配置

VIM,一款自定义程度超乎你想象的IDE利器。在平时开发中,得心应手,无所不可比及。没有你想不到,只有你做不到。。。不对,没有你做不到,只有你想不到的。然而,为了代码看起来更优雅,通常也是编程的规范,基本上在编写代码时,是不允许有tab字符存在的。所以,在VIM如何配置tab键,将tab键统一替换成空格?区别空格的ACSii码:0x2tab的ACSii码:0x0这使得在混用两种字符的时候,不同的场景下(比如:vim、浏览器)会呈现不同的长度,看起来很混乱。配置打开vim配置文件.vimr[code lang="shell"vim ~/.vimr[/code写入如下内容并保存[code lang="shell"set expandtaset tabstop=set shiftwidth=[/code这样一来,试试在vim中敲击tab键的效果,是不是已经替换成4个空格了?那之前的tab键怎么办... Read More

拆轮子 – 唯美细腻的夕阳海浪安卓手机动画

好久没有写博客了,一直在弥补基础, 今天带来的是一个博主有史以来见过最最精美的动画效果了。所以我才迫不及待的拆轮子。今天拆的部分是如下的效果。无图无真相呀前人种树,后人乘凉。很早的时候大神CJJ关于这个库的一些分析,大家可以去看看。http://www.jianshu.com/p/a4dabb3554c1 不过由于该文章中对于动画的具体实现没有提及,所以才有这篇文章的存在了=.因为本人水平不咋地,先奉上这个库的下载地址https://github.com/danielzeller/Depth-LIB-Android大家如果之前接触过类似的效果,其实也就没有必要看下去啦=.好了,废话说了这么多,如果有兴趣往下看,就继续吧一.说明因为代码已经存在,所以我认为就没有必要照着代码一点点讲,感觉这样的方式更容易把读者弄得云里雾里的,所以我这里决定从零开始一步步来实现这个效果(当然因为我是先仔... Read More

awesome-php中英文资源整理(同步更新)

中文版收集整理一些常用的PHP类库, 资源以及技巧. 以便在工作中迅速的查找所需...这个列表中的内容有来自 awesome-php 的翻译, 有来自开发者周刊以及个人的积累等.一个前端组件的列表 awesome-frontend 推荐学习资源PHP相关的有参考价值的社区,博客,网站,文章,书籍,视频等资源PHP网站(PHP WebsitesPHP The Right Way - 一个PHP实践的快速参考指导PHP Best Practices - 一个PHP最佳实践PHP Weekly News - 一个PHP 周刊Securing PHP - 有关PHP安全相关PHP FIG - PHP框架交互小组PSR 中文翻译PHP School - 一个开源的PHP学习资源PHPTrends - 一些快速发展的PHP类库检索PHP 开发者实践其他网站(Other WebsitesThe Op... Read More

编程思想:面向对象和面向过程

  何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中。我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起,最后可能也只会说出一句就是那样啦,你知道啦。而这种茫然,其实就是对这两大编程思想的迷糊之处。本文通过学生到校报道注册的实例,阐述了面向过程和面向对象两大思想。希望能对你的学习和工作有所帮助。一、面向过程  首先我们来认识下,什么是面向过程?如果咬文嚼字的话可以这样来理解,面向过程就是面向解决问题的过程进行编程。仔细思考一下,我们在学习和工作中,当我们去实现某项功能或完成某项任务时,是不是会不自觉的按部就班的罗列出我们要做的事情?(如果没有,建议以后试着步骤化解决问题)。而当我们按着我们罗列的步骤去解决问题时,实质上就是按照面向过程的思想去解决问题。我们罗列的步骤就是过程,按照步骤解决问题就是面向过程。  传统的面向过程的编程思想总... Read More

数据结构与算法之线性表

上一篇《数据结构与算法(一),概述》中介绍了数据结构的一些基本概念,并分别举例说明了算法的时间复杂度和空间复杂度的求解方法。这一篇主要介绍线性表。本节内容一、基本概念二、顺序表三、链表1、单向链表2、单向循环链表3、双向链表4、静态链表一、基本概念线性表是具有零个或多个数据元素的有限序列。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的基本特征第一个数据元素没有前驱元素;最后一个数据元素没有后继元素;其余每个数据元素只有一个前驱元素和一个后继元素。抽象数据类型线性表一般包括插入、删除、查找等基本操作。其基于泛型的API接口代码如下[code lang="java"public interface List<//线性表的大小int size();//判断线性表是否为空boolean isEmpty();void clear();... Read More

深入MySQL用户自定义变量:使用详解及其使用场景案例

一、前言在前段工作中,曾几次收到超级话题积分漏记的用户反馈。通过源码的阅读分析后,发现问题出在高并发分布式场景下的计数器上。计数器的值会影响用户当前行为所获得积分的大小。比如,当用户在某超级话题下连续第n(n即计数器的值)次进行转发帖子时,将会获得与n相关的分数。然而,在第一次改进后问题依然存在。所以,这次在之前的基础上,通过使用MySQL变量的途径来解决该问题。二、到底MySQL的变量分哪几类?MySQL变量一共分为两大类:用户自定义变量和系统变量。如下用户自定义变量局部变量会话变量系统变量会话变量全局变量本文涉及的内容为用户自定义会话变量,若对其他分类无感,请点击这里。PS:用户定义的会话变量和系统定义的会话变量有什么区别?局部变量局部变量一般用于SQL的语句块中,比如存储过程中的begin和end语句块。其作用域仅限于该语句块内。生命周期也仅限于该存储过程的调用期间。[code lang="sql"... Read More