(转载)常用音频协议介绍

会议电视常用音频协议介绍及对比白皮书

一、数字化音频原理:声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。通常人耳可以听到的频率在20Hz到20KHz的声波称为为可听声,低于20Hz的成为次声,高于20KHz的为超声,多媒体技术中只研究可听声部分。

可听声中,话音信号的频段在80Hz到3400Hz之间,音乐信号的频段在20Hz-20kHz之间,语音(话音)和音乐是多媒体技术重点处理的对象。

由于模拟声音在时间上是连续的,麦克风采集的声音信号还需要经过数字化处理后才能由计算机处理。通常我们采用PCM编码(脉冲代码调制编码),即通过采样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。

1、采样

采样,就是每隔一段时间间隔读一次声音的幅度。单位时间内采样的次数称为采样频率。显然采样频率越高,所得到的离散幅值的数据点就越逼近于连续的模拟音频信号曲线,同时采样的数据量也越大。

为了保证数字化的音频能够准确(可逆)地还原成模拟音频进行输出,采样定理要求:采样频率必须大于等于模拟信号频谱中的最高频率的2倍。

常用的音频采样率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz。

例如:话音信号频率在0.3~3.4kHz范围内,用8kHz的抽样频率(fs),就可获得能取代原来连续话音信号的抽样信号,而一般CD采集采样频率为44.1kHz。

2、量化

量化,就是把采样得到的声音信号幅度转换成数字值,用于表示信号强度。

量化精度:用多少个二进位来表示每一个采样值,也称为量化位数。声音信号的量化位数一般是 4,6,8,12或16 bits 。

由采样频率和量化精度可以知道,相对自然界的信号,音频编码最多只能做到无限接近,在计算机应用中,能够达到最高保真水平的就是PCM编码,通常PCM约定俗成了无损编码。

3、编码

一个采样率为44.1kHz,量化精度为16bit,双声道的PCM编码输出,它的数据速率则为 44.1K×16×2 =1411.2 Kbps,存储一秒钟需要176.4KB的空间,1分钟则约为10.34M,因此,为了降低传输或存储的费用,就必须对数字音频信号进行编码压缩。

到目前为止,音频信号经压缩后的数码率降低到32至256kbit/s,语音可以低至8kbit/s以下。

对数字音频信息的编码进行压缩的目的是在不影响人们使用的情况下使数字音频信息的数据量最少。通常用如下6个属性来衡量:

—比特率;

—信号的带宽;

—主观/客观的语音质量;

—延迟;

—计算复杂度和对存储器的要求;

—对于通道误码的灵敏度;

为使编码后的音频信息可以被广泛地使用,在进行音频信息编码时需要采用标准的算法。传统会议电视设备主要采用ITU-T推荐的G.711、G.722、G.728和AAC_LD等音频标准。

二、常用音频协议简介:

1、    ITU-T G.728

1992年ITU-T发布的电话声音信号编码方式推荐标准。采用LD-CELP编码方式,采样率为8KHz,以16kb/秒的速度传送声音信号,传送延迟时间极短,仅有0.625 ms 的算法编码延迟。

2、    ITU-T G.711

标准公布于1972年,其语音信号编码是非均匀量化PCM。语音的采样率为8KHz,每个样值采用8bit量化,输出的数据率为64kbps。这种窄带编码支持对300到 3,400赫兹的音频进行压缩。但虽然压缩质量不错,但是消耗的带宽相对较大,主要用于数字PBX/ISDN上的数字式电话。

3、    ITU-T G.722

ITU-T G.722标准是第一个用于 16 KHZ 采样率的标准化宽带语音编码算法,1984年被CCITT定义为标准,而且现今还在使用。.G.722 编解码器在 16 kHz 频率上接收 16 位数据(带宽从 50 Hz 至 7 kHz),并将其压缩为 64、56 与 48 Kbit/s,其总延迟约 3 ms,能够提供更好的通话质量。

G.722的优点是延时和传输位误差率非常低,且没有任何的专利技术,费用低廉。因此G.722在无线通信系统,VoIP生产商,个人通信服务,视频会议应用等广泛应用。

4、    G.722.1

G.722.1基于 Polycom 的第三代 Siren 7 压缩技术,1999年被ITU-T批准为G.722.1标准。G.722.1采用16 KHZ 采样频率,16 位数据量化,支持从 50 Hz 至 7 kHz频率范围的音频采样,并将其压缩为 32 与 24 Kbit/s。它采用20 ms封帧,提供40ms的算法延迟。

G722.1可实现比 G.722 编解码器更低的比特率以及更大的压缩。目标是以大约一半的比特率实现与 G.722 大致相当的质量。这种编码使用许可需要获得Polycom公司的授权。

5、    G722.1 Annex C

G722.1 Annex C基于 Polycom 的Siren 14 压缩技术, 采用32kHz采样频率,支持从 50 Hz 至 14 kHz频率范围的音频采样,并将其压缩为 24、32或48 kbps。采用20ms封帧,提供40毫秒演算延迟。

2005年中,国际电信联盟(ITU)批准Polycom Siren 14™    技术为14 kHz超宽带音频编码新标准。同时进入作为ITU-T建议的G.722.1 Annex C。    G722.1 Annex C具有低运算能力,低带宽的优点。适于处理语音、音乐与自然界声音。

6、    AAC-LD

AAC(Advanced Audio Coding,高级音频编码)是由Fraunhofer研究院(MP3格式的创造者)、杜比(DOLBY)试验室和AT&T(美国电话电报公司)共同研发出的一种音频压缩格式,是MPEG-2规范的一部分,并在1997年3月成为国际标准。随着MPEG-4标准在2000年成型后,MPEG2 AAC也被作为核心编码技术,并增加了一些新的编码特性,又叫MPEG-4 AAC。

MPEG-4 AAC家族目前共有九种编码规格,AAC-LD(Low Delay,低延迟规格)是用在低码率下编码。它支持8K~48K采样率的,可以64Kbps的码率输出接近 CD 音质的音频,并支持多声音通道,AAC-LD 算法延迟仅为 20ms。

AAC因为其模块化设计,功能更为强大。本身的框架结构能够被不断的新的东西填充,这就使得不同发展方面的内核相互融合,彼此吸收精华成为可能。

7、   各种音频协议的主要参数对比:

采样频率   支持音频带宽    输出码率    最低算法延迟

G711   8KHz    300 Hz ~ 3,400 Hz    64 Kbps    <1ms

G722   16kHz    50 Hz ~ 7 kHz    64 Kbps    3ms

G722.1   16kHz    50 Hz ~7 kHz    24、32 Kbps    40ms

G722.1 C   32kHz    50 Hz~14 kHz    24、32、48Kbps    40ms

AAC-LD   48kHz    20 Hz-20kHz    48~64 Kbps    20ms

三、AAC_LD与G722. Annex C优缺点对比:

G722.1 C   AAC_LD

采样音频频率范围支持50 Hz~14 kHz,接近CD音质,但丢失了高频部分。

支持20 Hz-20kHz全频段的采样,音频更加接近CD音质。

输出码率24、32、48Kbps,带宽低于AAC-LD,但是以牺牲高频为代价的。

48~64 Kbps,并支持大于64Kbps的输出,为更好的音频质量提供了可能。

算法复杂性算法复杂度低,CPU占用率略好于AAC-LD   模块化设计,功能更为强大,有TI等专用芯片支持

最低延迟采用20ms封帧,40ms算法延迟   20ms算法延迟,好于G722.1 C

多声道可以支持双声道   AAC支持多达48个音轨、15个低频音轨

标准通用性G722.1-C 由Polycom制定开发,使用需要Polycom授权,目前只有Polycom和极少数会议电视厂商使用。   作为MPEG4核心标准,受到Apple、诺基亚、松下等支持,并被泰德等众多会议电视厂商所采用,应用前景更广阔。

由Fraunhofer研究院的调查对比图可以知道,在相同的采样频率下,AAC-LD可以提供比G722.1 C、MP3等更好的音质。AAC-LD实现了超宽频音频编码中最短的延时,并保证接近CD的音质,达到音质、比特率和延时三者的最佳组合,是会议电视领域的最优选择。

========================================

(转载)有关音频编码的知识与技术参数

自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。
1、什么是采样率和采样大小(位/bit)?
  声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。光有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度。量化电平数为2的整数次幂,我们常见的CD位16bit的采样大小,即2的16次方。采样大小相对采样率更难理解,因为要显得抽象点,举个简单例子:假设对一个波进行8次采样,采样点分别对应的能量值分别为A1-A8,但我们只使用2bit的采样大小,结果我们只能保留A1-A8中4个点的值而舍弃另外4个。如果我们进行3bit的采样大小,则刚好记录下8个点的所有信息。采样率和采样大小的值越大,记录的波形更接近原始信号。
2、有损和无损
  根据采样率和采样大小可以得知,相对自然界的信号,音频编码最多只能做到无限接近,至少目前的技术只能这样了,相对自然界的信号,任何数字音频编码方案都是有损的,因为无法完全还原。在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用。因此,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近。我们而习惯性的把MP3列入有损音频编码范畴,是相对PCM编码的。强调编码的相对性的有损和无损,是为了告诉大家,要做到真正的无损是困难的,就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。
  3、为什么要使用音频压缩技术
  要算一个PCM音频流的码率是一件很轻松的事情,采样率值×采样大小值×声道数 bps。一个采样率为44.1KHz,采样大小为16bit,双声道的PCM编码的WAV文件,它的数据速率则为 44.1K×16×2 =1411.2 Kbps。我们常说128K的MP3,对应的WAV的参数,就是这个1411.2 Kbps,这个参数也被称为数据带宽,它和ADSL中的带宽是一个概念。将码率除以8,就可以得到这个WAV的数据速率,即176.4KB/s。这表示存储一秒钟采样率为44.1KHz,采样大小为16bit,双声道的PCM编码的音频信号,需要176.4KB的空间,1分钟则约为10.34M,这对大部分用户是不可接受的,尤其是喜欢在电脑上听音乐的朋友,要降低磁盘占用,只有2种方法,降低采样指标或者压缩。降低指标是不可取的,因此专家们研发了各种压缩方案。由于用途和针对的目标市场不一样,各种音频压缩编码所达到的音质和压缩比都不一样,在后面的文章中我们都会一一提到。有一点是可以肯定的,他们都压缩过。
  4、频率与采样率的关系
  采样率表示了每秒对原始信号采样的次数,我们常见到的音频文件采样率多为44.1KHz,这意味着什么呢?假设我们有2段正弦波信号,分别为20Hz和20KHz,长度均为一秒钟,以对应我们能听到的最低频和最高频,分别对这两段信号进行40KHz的采样,我们可以得到一个什么样的结果呢?结果是:20Hz的信号每次振动被采样了40K/20=2000次,而20K的信号每次振动只有2次采样。显然,在相同的采样率下,记录低频的信息远比高频的详细。这也是为什么有些音响发烧友指责CD有数码声不够真实的原因,CD的44.1KHz采样也无法保证高频信号被较好记录。要较好的记录高频信号,看来需要更高的采样率,于是有些朋友在捕捉CD音轨的时候使用48KHz的采样率,这是不可取的!这其实对音质没有任何好处,对抓轨软件来说,保持和CD提供的44.1KHz一样的采样率才是最佳音质的保证之一,而不是去提高它。较高的采样率只有相对模拟信号的时候才有用,如果被采样的信号是数字的,请不要去尝试提高采样率。
  5、流特征
  随着网络的发展,人们对在线收听音乐提出了要求,因此也要求音频文件能够一边读一边播放,而不需要把这个文件全部读出后然后回放,这样就可以做到不用下载就可以实现收听了。也可以做到一边编码一边播放,正是这种特征,可以实现在线的直播,架设自己的数字广播电台成为了现实。
四、各种主流音频编码(或格式)的介绍
  1、PCM编码
  PCM 脉冲编码调制是Pulse Code Modulation的缩写。前面的文字我们提到了PCM大致的工作流程,我们不需要关心PCM最终编码采用的是什么计算方式,我们只需要知道PCM编码的音频流的优点和缺点就可以了。PCM编码的最大的优点就是音质好,最大的缺点就是体积大。我们常见的Audio CD就采用了PCM编码,一张光盘的容量只能容纳72分钟的音乐信息。
  2、WAVE
  这是一种古老的音频文件格式,由微软开发。WAV是一种文件格式,符合 PIFF Resource Interchange File Format规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。很多朋友没有这个概念,我们拿AVI做个示范,因为AVI和WAV在文件结构上是非常相似的,不过AVI多了一个视频流而已。我们接触到的AVI有很多种,因此我们经常需要安装一些Decode才能观看一些AVI,我们接触到比较多的DivX就是一种视频编码,AVI可以采用DivX编码来压缩视频流,当然也可以使用其他的编码压缩。同样,WAV也可以使用多种音频编码来压缩其音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV中,和AVI一样,只要安装好了相应的Decode,就可以欣赏这些WAV了。 在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美支持,由于本身可以达到较高的音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。因此,基于PCM编码的WAV被作为了一种中介的格式,常常使用在其他编码的相互转换之中,例如MP3转换成WMA。
  3、 MP3编码
  
  4、OGG编码
  网络上出现了一种叫Ogg Vorbis的音频编码,号称MP3杀手!Ogg Vorbis究竟什么来头呢?OGG是一个庞大的多媒体开发计划的项目名称,将涉及视频音频等方面的编码开发。整个OGG项目计划的目的就是向任何人提供完全免费多媒体编码方案!OGG的信念就是:OPEN!FREE!Vorbis这个词汇是特里·普拉特柴特的幻想小说《Small Gods》中的一个"花花公子"人物名。这个词汇成为了OGG项目中音频编码的正式命名。目前Vorbis已经开发成功,并且开发出了编码器。   Ogg Vorbis是高质量的音频编码方案,官方数据显示:Ogg Vorbis可以在相对较低的数据速率下实现比MP3更好的音质!Ogg Vorbis这种编码也远比90年代开发成功的MP3先进,她可以支持多声道,这意味着什么?这意味着Ogg Vorbis在SACD、DTSCD、DVD AUDIO抓轨软件(目前这种软件还没有)的支持下,可以对所有的声道进行编码,而不是MP3只能编码2个声道。多声道音乐的兴起,给音乐欣赏带来了革命性的变化,尤其在欣赏交响时,会带来更多临场感。这场革命性的变化是MP3无法适应的。   和MP3一样,Ogg Vorbis是一种灵活开放的音频编码,能够在编码方案已经固定下来后还能对音质进行明显的调节和新算法的改良。因此,它的声音质量将会越来越好,和MP3相似,Ogg Vorbis更像一个音频编码框架,可以不断导入新技术逐步完善。和MP3一样,OGG也支持VBR。
  5、MPC 编码
  MPC是又是另外一个令人刮目相看的实力派选手,它的普及过程非常低调,也没有什么复杂的背景故事,她的出现目的就只有一个,更小的体积更好的音质!MPC以前被称作MP+,很显然,可以看出她针对的竞争对手是谁。但是,只要用过这种编码的人都会有个深刻的印象,就是她出众的音质。
  6、mp3PRO 编码
2001年6月14日,美国汤姆森多媒体公司(Thomson Multimedia SA)与佛朗赫弗协会(Fraunhofer Institute)于6月14日发布了一种新的音乐格式版本,名称为mp3PRO,这是一种基于mp3编码技术的改良方案,从官方公布的特征看来确实相当吸引人。从各方面的资料显示,mp3PRO并不是一种全新的格式,完全是基于传统mp3编码技术的一种改良,本身最大的技术亮点就在于SBR(Spectral Band Replication 频段复制),这是一种新的音频编码增强算法。它提供了改善低位率情况下音频和语音编码的性能的可能。这种方法可在指定的位率下增加音频的带宽或改善编码效率。SBR最大的优势就是在低数据速率下实现非常高效的编码,与传统的编码技术不同的是,SBR更像是一种后处理技术,因此解码器的算法的优劣直接影响到音质的好坏。高频实际上是由解码器(播放器)产生的,SBR编码的数据更像是一种产生高频的命令集,或者称为指导性的信号源,这有点駇idi的工作方式。我们可以看到,mp3PRO其实是一种mp3信号流和SBR信号流的混合数据流编码。有关资料显示,SBR技术可以改善低数据流量下的高频音质,改善程度约为30%,我们不管这个30%是如何得来的,但可以事先预知这种改善可以让64kbps的mp3达到128kbps的mp3的音质水平(注:在相同的编码条件下,数据速率的提升和音质的提升不是成正比的,至少人耳听觉上是这样的),这和官方声称的64kbps的mp3PRO可以媲美128kbps的mp3的宣传基本是吻合的。
  7、WMA
  WMA就是Windows Media Audio编码后的文件格式,由微软开发,WMA针对的不是单机市场,是网络!竞争对手就是网络媒体市场中著名的Real Networks。微软声称,在只有64kbps的码率情况下,WMA可以达到接近CD的音质。和以往的编码不同,WMA支持防复制功能,她支持通过Windows Media Rights Manager 加入保护,可以限制播放时间和播放次数甚至于播放的机器等等。WMA支持流技术,即一边读一边播放,因此WMA可以很轻松的实现在线广播,由于是微软的杰作,因此,微软在Windows中加入了对WMA的支持,WMA有着优秀的技术特征,在微软的大力推广下,这种格式被越来越多的人所接受。
  8、RA
  RA就是RealAudio格式,这是各位网虫接触得非常多的一种格式,大部分音乐网站的在线试听都是采用了RealAudio,这种格式完全针对的就是网络上的媒体市场,支持非常丰富的功能。最大的闪烁点就是这种格式可以根据听众的带宽来控制自己的码率,在保证流畅的前提下尽可能提高音质。RA可以支持多种音频编码,包括ATRAC3。和WMA一样,RA不但都支持边读边放,也同样支持使用特殊协议来隐匿文件的真实网络地址,从而实现只在线播放而不提供下载的欣赏方式。这对唱片公司和唱片销售公司很重要,在各方的大力推广下,RA和WMA是目前互联网上,用于在线试听最多的音频媒体格式。
  9、APE
  APE是Monkey's Audio提供的一种无损压缩格式。Monkey's Audio提供了Winamp的插件支持,因此这就意味着压缩后的文件不再是单纯的压缩格式,而是和MP3一样可以播放的音频文件格式。这种格式的压缩比远低于其他格式,但能够做到真正无损,因此获得了不少发烧用户的青睐。在现有不少无损压缩方案种,APE是一种有着突出性能的格式,令人满意的压缩比以及飞快的压缩速度,成为了不少朋友私下交流发烧音乐的唯一选择。

常用音频协议介绍&&有关音频编码的知识与技术参数的更多相关文章

  1. java web开发中常用的协议的使用和java-web 常见的缓冲技术

    一.DNS协议 作用将域名解析为IP   类似于我们只需要知道中央一台,中央二台,而不需要知道它的频率,方便记忆. java dns 域名解析协议实现 1 域名解析,将域名可转换为ip地址InetAd ...

  2. SDL开发笔记(二):音频基础介绍、使用SDL播放音频

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. DirectShow音频采集pcm,实时编码AAC,附源码

    定期送福利,今天给大家送上Windows中利用DirectShow采集microphone音频,并将采集到的pcm数据,利用FAAC库编码成AAC,进行本地存储或者网络传输. 直接贴代码,解析看注释: ...

  4. [转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

    [转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls) http://blog.csdn.net/tttyd/article/details/12032357 RTP       ...

  5. Android音频开发(1):基础知识

    Android音频开发(1):基础知识 导读 人的说话频率基本上为300Hz~3400Hz,但是人耳朵听觉频率基本上为20Hz~20000Hz. 对于人类的语音信号而言,实际处理一般经过以下步骤: 人 ...

  6. 流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

    RTP           参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细 ...

  7. C++实现RTMP协议发送H.264编码及AAC编码的音视频

    http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP ...

  8. C++实现RTMP协议发送H.264编码及AAC编码的音视频(转)

    C++实现RTMP协议发送H.264编码及AAC编码的音视频(转) RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia ...

  9. 常用bluetooth协议

    HFP: HFP(Hands-free Profile),让蓝牙设备可以控制电话,如接听.挂断.拒接.语音拨号等,拒接.语音拨号要视蓝牙耳机及电话是否支持. HSP: HSP 描述了 Bluetoot ...

随机推荐

  1. you must restart adb and eclipse的相关解决办法

    问题是5037端口被占用: C:\>netstat -aon|findstr "5037" 看到了吗,端口被进程号为5037的进程占用,继续执行下面命令(也可以去任务管理器中 ...

  2. 牛客网数据库SQL实战(21-25)

    21.查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序CREATE TABLE `employees` (`emp_no` i ...

  3. 用Navicat for Mysql导入.sql文件

    1.在左边右键新建一个数据库 2.字符集选gbk(不 题) 3.打开数据库,把它变成绿色. 4.把.sql文件拖到这数据库上.会出现下边的运行SQL文件对话框,按开始,等运行完后就可以关掉了. 5.最 ...

  4. Selenium 15: How to Run Parallel Tests Using Selenium Grid and JUnit

    In this post, I will give two techniques and describe how to run your selenium tests in parallel by ...

  5. FBX SDK在vs 2010下面的配置

    1.下载FBS SDK.地址.因为我是vs2010,所以我下载的是FBX SDK 2016.1.2 VS2010.如果没有了,你可以找博主直接要,QQ1240957820. 2.下载下来的是一个exe ...

  6. Oracle使用——Linux系统下使用命令实现oracle数据库数据导入

    背景 在工作当中,数据库的备份及数据导入是必不可少的操作,在完全无界面的Linux操作系统中,我们应该怎样实现oracle数据库的导入呢 前提 服务器已配置ftp 模拟环境 一台linux应用服务器上 ...

  7. C语言goto语句的使用

    不使用goto语句: 使用goto语句: 使用goto语句时需要注意以下原则:1) 不要过份地使用.比如图2中的60行就没有采用goto语句跳到程序的最后面,之所以这里不使用goto是为了阅读方便.因 ...

  8. C# lock 关键字的一些理解

    C# lock 关键字的一些理解 问题1:谁是锁? lock 这个关键字,并不是“锁”,真正的“锁”是那个被lock的Object类型的“对象”,请注意,这里为“对象”加了双引号着重强调被lock的是 ...

  9. 4514: [Sdoi2016]数字配对 费用流

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=4514 思路 EK直接贪心做 <0的时候加上剩余返回 二分图a->b的时候 把b- ...

  10. hdu5628 Clarke and math

    题目地址 题目链接 题意 求 \[ g(i)=\sum_{i1|i}\sum_{i_2|i_1}\sum_{i_3|i_2}...\sum_{i_k|i_{k-1}}f(i_k)\space mod\ ...