<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Hophan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Hophan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Hophan]]></copyright><item><title><![CDATA[POSIX多线程程序设计 工作流例程2]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/50981267</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/50981267</guid><author>Hophan</author><pubDate>Fri, 25 Mar 2016 16:13:17 +0800</pubDate><description><![CDATA[之前的例程有说到超出工作单元数量的输入数据会使得整个进程进入死锁状态，然后改进了一下，让用户可以选择是获取数据再加入新的数据还是放弃加入新数据。


还有一点就是，我认为pipe_t中的mutex锁是多余的，因为其他线程只会修改工作单元内部的数据，而并不会影响工作流pipe链表的结构，而更改pipe_t的数据的只有pipe_result和pipe_start这两个函数，但是这两个函数只会在主]]></description><category></category></item><item><title><![CDATA[POSIX多线程程序设计_流水线工作例程]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/50978739</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/50978739</guid><author>Hophan</author><pubDate>Fri, 25 Mar 2016 14:50:22 +0800</pubDate><description><![CDATA[#include
#include "errors.h"

typedef struct stage_tag{			//流水线的工作单元结构体
	pthread_mutex_t 	mutex;		//保护当前工作单元数据的互斥锁
	pthread_cond_t 		avail;	//等待当前工作单元存储数据可用的条件变量
	pthread_cond_t 		ready;	//等待当前工作单元可处理]]></description><category></category></item><item><title><![CDATA[多线程]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/50976355</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/50976355</guid><author>Hophan</author><pubDate>Fri, 25 Mar 2016 01:17:06 +0800</pubDate><description><![CDATA[#include
#include
#include "errors.h"

typedef struct alarm_tag{		//单个闹钟结构体,链表形式存储
	struct alarm_tag *link;	//链表的下一个节点
	int seconds;	//闹钟响铃所需经过的秒数(从创建时刻为起点)
	time_t time;	//闹钟响铃的UNIX时间(从1970年1月1日0时0分0]]></description><category></category></item><item><title><![CDATA[控制台小游戏之贪吃蛇]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/50414789</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/50414789</guid><author>Hophan</author><pubDate>Sun, 27 Dec 2015 23:46:44 +0800</pubDate><description><![CDATA[贪吃蛇和俄罗斯方块差不多，都是另起一个线程监听键盘输入，然后就是不断刷新。（控制台跳屏的感觉真不爽，感觉要瞎了）


很简单的就一个snake类和一个game类外加辅助的random_food可调用对象类。用枚举变量代表snake当前的行进方向


point_and_dir.h


#ifndef _POINT_AND_DIR_H
#define _POINT_AND_DIR_]]></description><category></category></item><item><title><![CDATA[控制台小游戏之俄罗斯方块]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/50414745</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/50414745</guid><author>Hophan</author><pubDate>Sun, 27 Dec 2015 23:29:02 +0800</pubDate><description><![CDATA[因为最近在学多线程，用的C++新标准的thread库，就尝试简单用了一下，写进俄罗斯方块里监听键盘输入。


基本的思路就是用一个类代表一种方块，方块类中用一个坐标pos表示方块位置，然后一个坐标数组offset代表方块的各个小方格相对于pos的偏移量。加上两个生成随即数的可调用对象的类来随机生成方块。
棋子类base_cube是个虚基类，另外有七个类都继承自base_cube ：O_cu]]></description><category></category></item><item><title><![CDATA[控制台小游戏之五子棋]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/50414557</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/50414557</guid><author>Hophan</author><pubDate>Sun, 27 Dec 2015 22:58:33 +0800</pubDate><description><![CDATA[五子棋用了两个类，一个棋盘类ChessBoard和一个玩家类Player，然后用一个game类包装一下，实现一些游戏的基本操作。
ChessBoard.h：
#ifndef _CHESS_BOARD_H
#define _CHESS_BOARD_H

#include
#include
#include

class ChessBoard
{
public:
	ChessBoard(std::]]></description><category></category></item><item><title><![CDATA[序]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/50414442</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/50414442</guid><author>Hophan</author><pubDate>Sun, 27 Dec 2015 22:29:28 +0800</pubDate><description><![CDATA[大三第一个学期也过去了，专业课也是水水的准备考试，这学期终于啃完了C++Primer这本大部头，C++学了这么久也才感受到了皮毛而已，不过学习C++的过程还是十分享受的。最近买的书也多：Effective C++，Inside the C++ Object Mode，鸟哥的linux私房菜，TCP/IP详解（卷一），STL源码剖析。现在的水看STL的源码还是觉得比较晦涩难懂。Inside
 C+]]></description><category></category></item><item><title><![CDATA[POJ 2029]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47678889</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47678889</guid><author>Hophan</author><pubDate>Sat, 15 Aug 2015 08:48:47 +0800</pubDate><description><![CDATA[Description


Seiji Hayashi had been a professor of the Nisshinkan Samurai School in the domain of Aizu for a long time in the 18th century. In order to reward him for his meritorious career in edu]]></description><category></category></item><item><title><![CDATA[UVA 10954]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47678857</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47678857</guid><author>Hophan</author><pubDate>Sat, 15 Aug 2015 08:36:27 +0800</pubDate><description><![CDATA[Description






///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////]]></description><category></category></item><item><title><![CDATA[CSUOJ 赌神的战斗]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47611057</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47611057</guid><author>Hophan</author><pubDate>Thu, 13 Aug 2015 13:04:36 +0800</pubDate><description><![CDATA[Description

老千可以有很多，但是赌神，只能有一个！
2015届赌神争霸赛现在在湖南长沙淹鱼塘隆重开幕，2名赌神候选者已经准备就绪。
已知赌神争霸的规则如下：
每个赌神候选者有一个他特制的骰子和特制的战甲，分别能给他提供攻击力和生命值。
两个赌神候选者交手的流程如下：
1,2号赌神候选者分别投掷自己的骰子，点数相同则重新投，否则点数大的赌神候选者会对点数小的造成他们点数差]]></description><category></category></item><item><title><![CDATA[HDU 1358 Period]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47447403</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47447403</guid><author>Hophan</author><pubDate>Wed, 12 Aug 2015 16:57:08 +0800</pubDate><description><![CDATA[Description

For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the prefix is a periodic string. That is,]]></description><category></category></item><item><title><![CDATA[POJ 2406 Power String]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47447209</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47447209</guid><author>Hophan</author><pubDate>Wed, 12 Aug 2015 16:47:29 +0800</pubDate><description><![CDATA[Description


Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcdef". If we think of concatenation as multiplication, exponen]]></description><category></category></item><item><title><![CDATA[HDU 1686：Oulipo]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47447069</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47447069</guid><author>Hophan</author><pubDate>Wed, 12 Aug 2015 16:40:15 +0800</pubDate><description><![CDATA[Description

The French author Georges Perec (1936�1982) once wrote a book, La disparition, without the letter 'e'. He was a member of the Oulipo group. A quote from the book: 

Tout avait Pair no]]></description><category></category></item><item><title><![CDATA[HDU 1711 Number Sequence]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47446891</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47446891</guid><author>Hophan</author><pubDate>Wed, 12 Aug 2015 16:31:46 +0800</pubDate><description><![CDATA[Description

Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K which make a[K] = b[1], a]]></description><category></category></item><item><title><![CDATA[CSUOJ：K swap operation]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47446497</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47446497</guid><author>Hophan</author><pubDate>Wed, 12 Aug 2015 16:13:34 +0800</pubDate><description><![CDATA[Description


最近Mr.Q想要只通过一种操作来对序列进行升序排序，该操作是“交换相邻的两个数”，聪明的Mr.Q总是会选择最优的方法进行操作，也就是说他使用的交换次数是最少的。比如对于对于序列：


2 3 1 4


Mr.Q会使用2次交换操作。


而对于序列：


4 3 2 1


Mr.Q会使用6次交换操作。


请你构造一个1~N的]]></description><category></category></item><item><title><![CDATA[CSUOJ：经营小卖部]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47446119</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47446119</guid><author>Hophan</author><pubDate>Wed, 12 Aug 2015 15:58:06 +0800</pubDate><description><![CDATA[Description






      暑假很多店都关门了，还坚持营业的店可以收揽大多数客户。看准了这个商机，你和小伙伴们打算集资开一个小卖部。

      你们总共集资了X元，可以用来购置商品和其他配置。每个商品有自己的进价和售价，你可以根据自己的要求以进价购入任意数量的商品，并全部以售价卖出。可是因为供货商暑期停止供货，所以你们只能使用X元提前买好商品并在暑假卖掉，]]></description><category></category></item><item><title><![CDATA[CSUOJ:集训队组队计划]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47445771</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47445771</guid><author>Hophan</author><pubDate>Wed, 12 Aug 2015 15:39:57 +0800</pubDate><description><![CDATA[Description






      经过1个月的训练，集训工作组决定让大家组队参加组队赛。为了让每一队内部水平尽量平均，集训工作组希望能令每个队能力最强的队员和能力最弱的队员的能力值差值的最大值尽量小。已知每个队由三个人组成，一个人不能加入多个队伍，现在有N个队员，能力分别为a1,a2...an，要从中选出3M个队员组成M支队。请问这M支队伍中，能力差值的最大值最小为多少]]></description><category></category></item><item><title><![CDATA[CodeForces327C]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/47068525</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/47068525</guid><author>Hophan</author><pubDate>Sun, 26 Jul 2015 15:42:33 +0800</pubDate><description><![CDATA[这是今天做的一道快速幂的题，看完题目之后用笔在草稿纸上写写就能分析出来其中的数学公式 ans=(Σpow(2,i)*(pow(2,k*len)-1)/(pow(2,len)-1))%M  但是代码交上去之后一直WA，总是不明白哪里错了，WA了快十次实在不知道怎么改了，于是上网搜了下题解，发现了新大陆！！


在刚才写的公式里面有一个除法求模的运算，之前的代码我就直接相除取模了
ans=(a]]></description><category></category></item><item><title><![CDATA[POJ 1008 Maya Calendar]]></title><link>https://blog.youkuaiyun.com/Hophan/article/details/46968557</link><guid>https://blog.youkuaiyun.com/Hophan/article/details/46968557</guid><author>Hophan</author><pubDate>Mon, 20 Jul 2015 15:08:07 +0800</pubDate><description><![CDATA[//CODE//


#include<iostream>
#include<string>

using namespace std;

int foo(string &s,int day)
{
    if(s=="pop")return 0*20+day+1;
    if(s=="no")return 1*20+day+1;
    if(s=="zip")return 2*20+day+1;
    if(s=="zotz")return 3*20+day+1;
    if(s=="tzec")]]></description><category></category></item></channel></rss>