具体数学第三章笔记及习题解答

离散数学是跟整数有关的数学,也是计算机科学的基础,本章就着重于讲述如何将分数转化为整数的技巧

底和顶

我们使用以下标记
\lfloor x\rfloor=小于或等于x的最大整数
\lceil x\rceil=大于或等于x的最小整数

下面是一个函数的示意图


image.png

我们可以得出一个恒等式
\lceil x\rceil- \lfloor x\rfloor=[x不是整数]
这是因为当x为整数时,\lceil x\rceil=\lfloor x\rfloor=x,当x不为整数时,\lceil x\rceil-\lfloor x\rfloor=1
同样的很明显有
x-1<\lfloor x\rfloor\leq x\leq \lceil x\rceil<x+1
\lfloor -x\rfloor=-\lceil x\rceil,\lceil -x\rceil=-\lfloor x\rfloor

为了更直观的理解底和顶,可以通过以下不等式(其实就是上面不等式的变形,n表示一个整数)
\lfloor x\rfloor=n \Leftrightarrow x-1<n\leq x<n+1\tag{1}
\lceil x\rceil=n \Leftrightarrow n-1<x\leq n<x+1\tag{2}

同时像\lfloor x+n\rfloor=\lfloor x\rfloor+n,\lceil x+n\rceil=\lceil x\rceil+n,可以将整数项挪入和挪出底或顶,但像\lceil nx\rceil\neq n\lceil x\rceil,\lfloor nx\rfloor\neq n\lfloor x\rfloor则不可以

同样可以总结出以下几个不等式
x<n\Leftrightarrow \lfloor x\rfloor<n\tag{3}
n<x\Leftrightarrow n<\lceil x\rceil\tag{4}
x\leq n\Leftrightarrow \lfloor x\rfloor\leq n\tag{5}
n\leq x\Leftrightarrow n\leq \lceil x\rceil\tag{6}

我们把x,\lfloor x\rfloor间的差称为x的分数部分\{x\}=x-\lfloor x\rfloor,同时称\lfloor x\rfloorx的整数部分

x=\lfloor x\rfloor+\{x\}y=\lfloor y\rfloor+\{y\},有
\lfloor x+y\rfloor=\lfloor x\rfloor+\lfloor y\rfloor+\lfloor {\{x\}}+{\{y\}}\rfloor
0\leq{\{x\}} +{\{y\}}<2,故有

\lfloor x+y\rfloor等于\lfloor x\rfloor+\lfloor y\rfloor\lfloor x\rfloor+\lfloor y\rfloor+1
\lceil x+y\rceil等于\lceil x\rceil+\lceil y\rceil\lceil x\rceil+\lceil y\rceil-1

底和顶的应用

任意一个整数写成二进制表示需要多少位?
经过简单的验证,我们可以通过\lfloor \lg n\rfloor+1\lceil \lg(n+1)\rceil两种位数表示(这里默认的底显然是2)

而对于多个底或者顶的表达式,形如\lfloor \lceil x\rceil \rfloor这样的内层是底或者顶外层多个底或者顶的表达式,可以把外层的底或者顶省略掉而不改变表达式的值

我们尝试证明以下命题
\lfloor \sqrt{\lfloor x\rfloor} \rfloor=\lfloor \sqrt x\rfloor,x\geq 0

在证明其存在或不存在时,我们可以首先猜测一个可能的值,试图找一个反例去否定命题,一是因为否定更加容易,二是因为在寻找反例中,我们会有机会寻找到证明的方法。这个例子中,无论怎么尝试,是找不出反例来的。

如果我们借助微积分来证明,首先将x分解为整数和分数部分,用牛顿二项式定理将其展开,但展开后过于复杂不好处理

我们换一种方式,先去掉原式左部分中外部的底和根号,然后去掉内层的底,最后将外层的符号还原回去最后得到右部分

首先设m=\lfloor \sqrt{\lfloor x\rfloor} \rfloor,根据性质1,有m\leq \sqrt{\lfloor x \rfloor}<m+1
由于不等式三个值都是正的,将其平方,得m^2\leq \lfloor x \rfloor<(m+1)^2
对这个不等式左边使用性质6,右边使用性质3,则有m^2\leq x <(m+1)^2
再同时开方得m\leq \sqrt x<m+1,利用性质1,\lfloor \sqrt x\rfloor=m
即左式等于右式,命题得证

在以上证明中,并没有严重依赖平方根的性质,我们把这个命题推广:
f(x)是任意一个具有如下性质且在实数区间连续的单调递增函数
f(x)=整数\quad \Rightarrow\quad x=整数

只要f(x),f(\lfloor x\rfloor),f(\lceil x\rceil)都有定义,则有
\lfloor f(x)\rfloor=\lfloor f(\lfloor x\rfloor)\rfloor,\lceil f(x)\rceil=\lceil f(\lceil x\rceil)\rceil

下面是对顶的证明,底的证明类似

x=\lceil x\rceil,显然是成立的,否则x<\lceil x\rceil,由于f(x)单调递增,\lceil \rceil非减,于是f(x)<f(\lceil x\rceil),\lceil f(x)\rceil\leq \lceil f(\lceil x\rceil)\rceil

如果\lceil f(x)\rceil<\lceil f(\lceil x\rceil)\rceil,因为f(x)的连续性以及其必备的性质,必然存在一个整数y,使得x\leq y<\lceil x\rceil,f(y)=\lceil f(x)\rceil成立,但显然这样的数并不存在,于是命题得证

这个定理有如下一个应用特例
如果m,n为整数且分母n为正,则有
{\left\lfloor\frac{x+m}{n}\right\rfloor}={{\left\lfloor\frac{\lfloor x\rfloor+m}{n}\right\rfloor}}, {\left\lceil\frac{x+m}{n}\right\rceil}={{\left\lceil\frac{\lceil x\rceil+m}{n}\right\rceil}}
例如令m=0,则\Big\lfloor\big\lfloor\lfloor x/10\rfloor/10\big\rfloor/10\Big\rfloor=\lfloor x/1000 \rfloor,三次用10来除并抛弃个位数字,与用1000来除并抛弃余数,结果是一样的
\lfloor x/1000 \rfloor=\lfloor \frac{x/100}{10} \rfloor=\Big\lfloor\frac{\lfloor x/100 \rfloor}{10}\Big\rfloor=\cdots重复下去即可得到左式结果

image.png

image.png

在了解上面对于数学问题水平的定义之上,我们研究一下以下等式等号成立的条件
\lceil \sqrt{\lfloor x\rfloor}\rceil{\stackrel{?}{=}} \lceil \sqrt x \rceil ,x\geq 0
我们在尝试几个数后发现,有时等号成立,有时不成立,以水平4的角度去寻找等号成立的条件会发现:
m^2<x<m^2+1时,等号左边为m,右边则为m+1,等号不成立
m^2+1\leq x \leq (m+1)^2时,等号成立
因此我们可以说等号成立的充要条件为:x为整数或者\sqrt{\lfloor x\rfloor}不为整数

现在我们从区间的角度数一数其中的整数个数。我们知道开区间(a,b)表示满足a<x<b的所有x取值,闭区间[a,b]表示满足a\leq x\leq b的所有x取值,而半开半闭区间同理。事实上,两个同类型的半开半闭区间可以很方便的相加,但显然开区间和闭区间不能随便这么做。于是我们先从半开半闭区间研究。

a,b都为整数时,显然在区间[a,b)内的整数有a,a+1,\dots,b-1b-a个;区间(a,b]内的整数有a+1,\dots,bb-a个。
a,b为任意实数时,根据我们之前了解到的底和顶的性质,有
a\leq n<b \Leftrightarrow \lceil a\rceil\leq n<\lceil b\rceil
a< n\leq b \Leftrightarrow \lfloor a\rfloor< n\leq\lfloor b\rfloor

从而得出[a,b)包含\lceil b\rceil-\lceil a\rceil个整数,(a,b]包含\lfloor b\rfloor-\lfloor a\rfloor个整数,类似的[a,b]包含\lfloor b\rfloor-\lceil a\rceil+1个整数,(a,b)包含\lceil b\rceil-\lfloor a\rfloor-1个整数

这里规定一个习惯,对[a,b)用顶来表示,对(a,b]用底来表示,用表格来总结一下

区间 包含整数的个数 条件
[a,b] \lfloor b\rfloor-\lceil a\rceil+1 a\leq b
[a,b) \lceil b\rceil-\lceil a\rceil a\leq b
(a,b] \lfloor b\rfloor-\lfloor a\rfloor a\leq b
(a,b) \lceil b\rceil-\lfloor a\rfloor-1 a<b

下面我们看一个具体的例子来验证我们所总结的内容
计算1~1000中(包含两端)的整数个数,其满足\lfloor \sqrt[3]{n}\rfloor \Big|n,也就是一个数n能被它的立方根的底整除的条件
我们把个数设为S,则有
\begin{align}S&=\sum_{1\leq n\leq 1000}[\lfloor \sqrt[3]{n}\rfloor \Big|n]\\&=\sum_{k,m,n}[k^3\leq n<(k+1)^3][n=km][1\leq n\leq 1000]\\ &=1+\sum_{k,m}[k^3\leq km<(k+1)^3][1\leq k<10]\quad\text{这里将n=1000的情况单独列出}\\ &=1+\sum_{k,m}[m\in[k^2,\frac{(k+1)^3}{k})][1\leq k<10]\\ &=1+\sum_{1\leq k<10}(\lceil k^2+3k+3+\frac{1}{k}\rceil-\lceil k^2\rceil)\\ &=1+\sum_{1\leq k<10}\lceil 3k+3+\frac{1}{k}\rceil\\ &=1+\sum_{1\leq k<10}(3k+4)\\ &=1+\frac{7+31}{2}\times 9=172 \end{align}
注意到注释部分,之所以这么做是想要使得k的取值范围变成一个半开半闭的区间,把n=1000单独列出来后,就可以做到这一点,之后使用上面表格中的性质就很方便了。

下面我们把1000这个具体的数字变成代数N,同样的条件,我们来计算一下结果

我们设K^3\leq N<(K+1)^3,也就是说K=\lfloor \sqrt[3]{N}\rfloorK是小于或等于N的立方根最大的整数,则根据上面我们计算的经验
\begin{align}S'&=\sum_{1\leq k<K}(3k+4)+\sum_m [K^3\leq Km\leq N]\\ &=\frac{(7+3K+1)(K-1)}{2}+\sum_m\big[m\in[K^2,\frac{N}{K}]\big]\\ &=\frac{3}{2}K^2+\frac{5}{2}K-4+\sum_m\big[m\in[K^2,\frac{N}{K}]\big] \end{align}
后面的和式等于\lfloor \frac{N}{K}\rfloor-\lceil K^2\rceil +1=\lfloor \frac{N}{K}\rfloor-K^2+1
故最后的答案为
S'=\lfloor \frac{N}{K}\rfloor+\frac{1}{2}K^2+\frac{5}{2}K-3,K=\lfloor \sqrt[3]{N}\rfloor

这样就得出了一个一般性的答案

观察这个公式前两项近似于N^\frac{2}{3}+\frac{1}{2}N^\frac{2}{3}=\frac{3}{2}N^\frac{2}{3},而其余项可记做O(N^\frac{1}{3}),在N足够大的情况下,是可以忽略的,但在取一些不够大的值时,如果需要精确的数据,不可以随便忽略

下面我们讲一个新的概念:

一个实数a的谱是整数组成的一个无限多重(元素可重复,数论里有讲)集合
Spec(a)=\{\lfloor a\rfloor,\lfloor 2a\rfloor,\lfloor 3a\rfloor,\dots\}
例如1 \over 2的谱就是\{0,1,1,2,2,3,3,\dots\}
谱有一个基本的性质,就是当a\neq b时,Spec(a)\neq Spec(b),其证明如下:

假设a<b,则存在一个正整数m使得m(b-a)\geq 1,即mb-ma\geq 1\lfloor mb\rfloor>\lfloor ma\rfloor,显然Spec(b)有少于m个元素\leq \lfloor ma\rfloor,而Spec(a)至少有m个这样的元素

下面我们看一下谱一个有趣的性质,比如观察下面两个谱
\begin{align}Spec(\sqrt 2)&=\{1,2,4,5,7,8,9,11,12,14,15,16,18,19,21,22,24,\dots\}\\ Spec(2+\sqrt 2)&=\{3,6,10,13,17,20,23,27,30,34,37,40,44,47,51,\dots\} \end{align}

观察到Spec(2+\sqrt 2)的第n个元素恰好比Spec(\sqrt 2)的第n个元素大2n,同时更惊人的是全体正整数是Spec(2+\sqrt 2)Spec(\sqrt 2)的不相交并集,我们称这两个谱构成了正整数的一个划分

其证明思路就是对任意正整数n,我们计算Spec(\sqrt 2)中有多少个元素是\leq n的,以及Spec(2+\sqrt 2)中有多少个元素是\leq n的,然后将两个值相加,如果等于n,则命题得证

\alpha是正数,Spec(\alpha)\leq n的元素个数是
\begin{align}N(\alpha,n)&=\sum_{k>0}\big[\lfloor k\alpha \rfloor\leq n\big]\\ &=\sum_{k>0}\big[\lfloor k\alpha \rfloor< n+1\big]\\ &=\sum_{k>0}\big[ k\alpha < n+1\big]\\ &=\sum_k [0<k<\frac{n+1}{\alpha}]\\ &=\lceil \frac{n+1}{\alpha}\rceil-1 \end{align}
在上面的推导中,有两处值得注意,首先有
m\leq n \Leftrightarrow m<n+1,m,n均为整数
这一步将\leq改为<,根据性质3,可以将底去掉
同时我们限定k>0求和而非k\geq 1,这是因为(0,\frac{n+1}{\alpha})[1,\frac{n+1}{\alpha})区别的地方是\frac{n+1}{\alpha}有可能小于1,前者更加准确

下面我们套用这个公式,计算N(\sqrt 2,n)+N(2+\sqrt 2,n)的结果
\Bigg\lceil\frac{n+1}{\sqrt 2}\Bigg\rceil-1+\Bigg\lceil\frac{n+1}{2+\sqrt 2}\Bigg\rceil-1
注意到\frac{n+1}{\sqrt 2}在n为整数时必定不为整数,于是顶减1正好为底,于是可以化为
\Bigg\lfloor\frac{n+1}{\sqrt 2}\Bigg\rfloor+\Bigg\lfloor\frac{n+1}{2+\sqrt 2}\Bigg\rfloor

进一步化为
\frac{n+1}{\sqrt 2}-\{ \frac{n+1}{\sqrt 2} \}+\frac{n+1}{2+\sqrt 2}-\{\frac{n+1}{2+\sqrt 2}\}
由于有恒等式
\frac{1}{\sqrt 2}+\frac{1}{2+\sqrt 2}=1
所以原式可以化为
n+1-\{ \frac{n+1}{\sqrt 2} \}-\{\frac{n+1}{2+\sqrt 2}\}
也就是说只要我们证明
\{ \frac{n+1}{\sqrt 2} \}+\{\frac{n+1}{2+\sqrt 2}\}=1
原式也就等于n了
我们设两个非整数a=\frac{n+1}{\sqrt 2},b=\frac{n+1}{2+\sqrt 2},显然有a+b=n+1,这两个数的整数部分的和显然是n,分数部分的和显然就是1了,故命题得证

底和顶的递归式

含有底或顶的递归关系经常在计算机科学中出现,因为很多以分而治之为基础的算法,会把一个大小为n的问题转化为n的几分之一(取整)的多个小问题。例如给n个记录排序的一种方法是把它们分为两个近乎相等的部分,一部分大小为\lceil \frac{n}{2}\rceil,另一部分大小为\lfloor \frac{n}{2}\rfloor,显然我们知道n=\lceil \frac{n}{2}\rceil+\lfloor \frac{n}{2}\rfloor。在每一部分被分别排序后(切分过的部分自然也可以循环的切分为两部分),通过每一步做至多n-1次比较,最后将这些记录合并成最后的排序,这样一来,我们设最终的比较次数最多为f(n),则有

  • f(1)=0
  • f(n)=f(\lceil \frac{n}{2}\rceil)+f(\lfloor \frac{n}{2}\rfloor)+n-1,n>1

这里稍微解释一下为什么两个已排序的几乎等长(其实以最坏情况考虑,等长不等长结果是一样的)数组(为了叙述的习惯,叫数组比较顺口)需要至多n-1次比较才能将两者合并为一个已排序的数组。我们惯用的方法是将两个数组两端(或者是最大或者是最小,这里举例用最小的)的元素进行比较,较小的放入新的存储结果的数组并改变这个数组的端点(角标向后移一位),较大的其数组端点保持不变,重复以上步骤直至两个数组中有一个没有元素,将另一个的数组中所有剩余的元素依次序放入新数组,结束整个步骤。显然每次比较会在新数组中填入一个元素,至多n-1次比较后,一定会有一个数组元素为空,此时不再需要比较,直接将最后的元素填入新数组就结束了。

这个递归式的解在习题34中,我们提前把答案写出来
f(n)=\sum_{k=1}^{n}\lceil \lg k\rceil
其封闭形式的计算如下:
我们设m=\lceil \lg n\rceil,则f(2^m)=\sum_{k=1}^{2^m}\lceil \lg k\rceil,显然当k\in(2^{i-1}+1,2^i]时,\lceil \lg k\rceil=i,这个区间有2^{i-1}个整数,故和式可改写为
f(2^m)=\sum_{k=1}^{2^m}\lceil \lg k\rceil=\lceil \lg 1\rceil+\lceil \lg 2\rceil+\sum_3^4\lceil \lg k\rceil+\cdots+\sum_{2^{m-1}+1}^{2^m}\lceil \lg k\rceil
\sum_{2^{m-1}+1}^{2^m}\lceil \lg k\rceil可以化为m\times 2^{m-1},故原式可进一步化为
f(2^m)=\sum_{k=1}^{m}k2^{k-1}
这个和式我们第二章有讲,这里直接给出答案
f(2^m)=\sum_{k=1}^{m}k2^{k-1}=(m-1)2^m+1

现在我们反过来计算f(n)
要知道2^m\geq n的,所以我们有
f(n)=f(2^m)-(2^m-n)m
注意这里(2^m-n)m式中的(2^m-n)表示我们多计算了多少次,m代表此时对应的\lceil \lg k\rceil
所以最后化简得到
f(n)=mn-2^m+1,m=\lceil \lg n\rceil
也就是说最终是一个比较次数为n\lg n复杂度的算法

如果感兴趣的话,我们再来看一下如何证明这个答案就是我们需要的答案


image.png

绕了这么大一圈,我们回头看一下第一章的约瑟夫问题

  • J(1)=1
  • J(2n)=2J(n)-1,n>0
  • J(2n+1)=2J(n)+1,n>0

此时我们可以更准确的将最基本的情况归纳为以下递归式

  • J(1)=1
  • J(n)=2J(\lfloor \frac{n}{2}\rfloor)-(-1)^n,n>1

同时如果我们把条件变成每隔2人杀死一人,那么我们最终得到递归式

J_3(n)=\Bigg(\bigg\lceil\frac{3}{2}J_3\Big(\Big\lfloor \frac{2}{3}n\Big\rfloor\Big)+a_n\bigg\rceil \mod n\Bigg)+1
n\mod 3=0,1,2a_n=-2,1,-\frac{1}{2}
这个递归式有着分数、底和顶,想要化简不是一件容易的事,我们在下面给出一种更好的解决方案,同时附上其相应的java代码

我们规定每当循环中,一个人幸存了,就把他的号码替换为最大的号码加1,这样1号,2号跳过,于是变成了n+1,n+2号,3号被杀,4号5号变成了n+3,n+4,以此类推...3k+13k+2号变成n+2k+1,n+2k+2号。最终是3n号被处死,比如当n=10时,有下图

image.png

所以如果我们能算出标号为的人最初的号码,就可以获得我们想要的答案

当某时刻任意一个还活着的人的号码为N时,如果N>n,则他必定有一个以前的号码,则根据我们上文的规定,有N=n+2k+1或者N=n+2k+2,于是有k=\lfloor (N-n-1)/2\rfloor,而这个人之前的号码分别可能为3k+13k+2,用一个式子来表示这两种情况可以通过3k+(N-n-2k)=k+N-n
再把kN,n表示,则上式可以写做\lfloor (N-n-1)/2\rfloor+N-n,之后只需要不断把这个之前的号码以如上步骤循环迭代下去,直至这个号码\leq n,则这个号码就是最后活下去的人刚开始的编号
综上我们可以写出伪代码

\begin{split}&N=3n;\\ &while \quad &N>n\\ &do\quad &N=\lfloor (N-n-1)/2\rfloor+N-n\\ &J_3(n)=N \end{split}

虽然我们以上面的方式去设计算法,肯定是可以解出最后的答案的,但这个式子还是太复杂,我们尝试去简化这个算法
我们用D=3n+1-N来替换N作为迭代的值,有N=3n+1-D,则我们根据上文中N的迭代式从而写出D的迭代式
D=3n+1-\bigg(\bigg\lfloor\frac{(3n+1-D)-n-1}{2}\bigg\rfloor+(3n+1-D)-n\bigg)\\=n+D-\bigg\lfloor\frac{2n-D}{2}\bigg\rfloor=D-\bigg\lfloor\frac{-D}{2}\bigg\rfloor=D+\bigg\lceil\frac{D}{2}\bigg\rceil=\bigg\lceil\frac{3}{2}D\bigg\rceil

此时我们将算法改写为:
\begin{split}&D=1;\\ &while &D\leq 2n\\ &do &D=\bigg\lceil\frac{3}{2}D\bigg\rceil\\ &J_3(n)=3n+1-D \end{split}

在上一种算法中,N3n迭代减到小于等于n,算法结束
而现在这种算法,D从1迭代增到大于2n,算法结束

事实上,我们可以通过类似的推理获得一个结论:
当每隔q-1个人就杀掉一人,幸存者J_q(n)可以使用以下方式计算
\begin{split}&D=1;\\ &while &D\leq (q-1)n\\ &do &D=\bigg\lceil\frac{q}{q-1}D\bigg\rceil\\ &J_3(n)=qn+1-D \end{split}
注意到这种算法的复杂度为
\log_{\frac{q}{q-1}}(q-1)n
使用换底公式可以化为
\frac{\ln(q-1)n}{\ln\frac{q}{q-1}}=\frac{\ln(q-1)+\ln n}{\ln q-\ln (q-1)}
显然除了\ln n之外,其余都是常数,所以复杂度是\ln n

下面我们看一下常见的解约瑟夫问题的算法,同时我们对其复杂度进行分析
这里我们用m表示数到几的人被杀,n表示一共多少人
先看一种最普通的解法:通过对环形单向链表的节点进行删除获得最后结果,其具体步骤如下:

  1. 如果链表节点数为1,或者m的值小于1,则直接返回
  2. 在环形单向链表中不断循环遍历每个节点,在此过程中,让节点报数
  3. 当报数从1到m时,删除报数为m的节点
  4. 删除节点后,注意要保持链表的环形状态

我们看一下具体的代码实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容