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

动态规划解决最大子数组问题

问题Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4]the contiguous subarray [4,−1,2,1] has the largest sum = 6.问题来自于Leetcode:Maximum Subarra解决方式利用动态规划思想来解决最大子数组问题。之前的文章有写过有关动态规划的思路。如果你对动态规划不清楚可以通过这篇文章来简单了解下,里面有相应的视频还是不错的:拆分集合为两个和相等的子集合问题(动态规划)。该方法相对于分治法策略解决最大子数组问题来解决的时间复杂度中会有很大提升。时间复杂度O(n程序范例... Read More

分治法策略解决最大子数组问题

问题描述Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4]the contiguous subarray [4,−1,2,1] has the largest sum = 6.问题来自于Leetcode:Maximum Subarra解决方式利用分治策略来解决最大子数组问题时间复杂度O(nlgn程序范例[code lang="cpp"#include <iostr#include <cstdusing namespace std;int find_max_crossing_subarray(int* a, int... Read More

LeetCode OJ Algorithm – Sliding Window Maximum(hard)

原题Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position.For exampleGiven nums = [1,3,-1,-3,5,3,6,7], and k = 3.Window position Ma--------------- ----[1 3 -1] -3 5 3 6 7 1 [3 -1 -3]... 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

小型网站架构降低 Apache 与 MySQL 内存占用比率

前言这是一篇极其没有营养的文章,那么请问“什么还要写?”,正所谓“不积跬步无以至千里,不积小流无以成江海”,难得学习与总结。而且,并不一定每篇文章都需要长篇大论、“看似高深”,最后网友看后毫无感觉。这篇文章以我的阿里云服务器为例(你眼前的博客正是搭在这个服务器上),阐述下小型网站(Linux+Apache+MySQL+PHP)对于内存利用率提升的配置方法的一个点。正文我的服务器是阿里云的,在一年前由于数据库(MySQL)频繁内存不足宕机就“潇洒”地升级了配置到2G内存。所以,目前机器的配置如下CPU: 1核内存: 2048 M操作系统: CentOS 6.5 32位公网IP: 115.28.36.1带宽计费方式: 按固定带宽当前使用带宽: 1Mbp同时,正常使用情况下的内存使用情况如下图中显示MySQL占用440m,Apache占用44m。当然,这是MySQL服务和Apache服... Read More
Google开发者中国

Google全球开发者网站落地中国域名

前几天,看到微信公众号推送的文章,区区几个字母就吸引了我。“http::/developers.google.cn”。百度了解,Google开发者大会于12月8日和12月14日分别在北京和上海举办。这是2011年Google在中国举办开发者大会之后的再次回归。Google今天在北京举办的这场开发者大会上搞了个大新闻,Google官方宣布,Google Developers中国网站 (developers.google.cn) 正式发布!网站提供所有 Google 开发者所需要的内容,包括 Android SDK、Android Studio、搜索、地图、Chrome 等产品的 API。 再细分一下,这次上线的 cn 结尾的 Google 网站有三个,分别是 developers.google.cn , developer.android.google.cn , firebase.googl... Read More

在 Linux 下通过 strace 与 lsof 命令排查 PHP 异常进程

在有些时候,会遇到PHP进程异常卡死的情况。面对这种情况,首先考虑到的就是分析代码进行优化改进,或者重启进程。但是,这种方式来排查不一定能找到根本原因。因为有些时候异常PHP进程卡死的原因可能是非常奇葩的问题,比如外部资源异常如DB、Redis与第三方API等。上一次关于超级话题签到提醒定时任务PHP进程异常的处理,问题竟然出现在外部的DB的链接上。由于网络原因导致读取DB没有响应卡死。这一次情况比较严重,超级话题积分系统的计算有一部分是通过Trigger(类似队列)接受全站数据进行积分计算与入库。由于用户反馈问题,来到队列机查看进程情况。如下$ ps -ef | grep Trigger | grep Commenwww 10693 1 7 16:06 ? 00:04:09 /usr/local/bin/php /path/cli.php request_uri=/Cli/Trigg... Read More
说说域名那点事儿

说说我曾注册的那些域名

第一个使用的域名是那种空间服务商免费赠送的三级域名,当时的提供商是主机屋(现在的博客域名就是在主机屋注册的)。记得,作为学生屌丝党为了使用主机屋提供的免费空间,不得不每个月在百度给一次“好评”。写评语的时候,还有要求,不得这么,不得那么。为了免费也就忍了,但最后终究被洗脑选择了在主机屋购买付费的产品。注册了ihuxu.com域名,购买了相应的空间。空间是最便宜的那种,貌似有几百个网站公用一台服务器。截止今天,ihuxu.com域名年龄3年6月21天(创建于2013年05月03日)。当时注册的想法就是iphone、ipad、ipod、ihuxu,很高大上。还有就是谐音爱胡旭。接着,当时已经在第一个免费的三级域名空间有练习过静态和动态脚本的编写(PHP)。算是有些经验,接着遇到瓶颈,感觉代码写不下去了,越写越多,越写越乱。于是乎,了解到什么是设计模式,并应用在其中。后来重复造了一个不是很圆的轮... 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