XL生男孩用什么体位好用?

请问姿势摆好了吗?我插了阿? - 歌单 - 网易云音乐
请问姿势摆好了吗?我插了阿?
网易云音乐多端下载
同步歌单,随时畅听320k好音乐
网易公司版权所有(C)杭州乐读科技有限公司运营:助你高潮 罕见体位大揭秘
核心提示:女性将膝盖打开坐在男性身上,使上半身立起或向前倾、向后仰,一切配合自己的快感,而随着快感的增快,腰部的运动会逐渐激烈起来,这样可以给阴茎充分的刺激。而男性也可以配合节奏运动自己的腰,尤其挺起腰来,强烈地压迫阴蒂,使彼此都快乐。
  骑乘体位法及其应用
  配合女性的性运动,主权有时也掌握在女性手中。男方仰卧,女方则屈膝坐在上面,这种类似骑马的方式,叫做骑乘体位法。
  方法是女性将膝盖打开坐在男性身上,使上半身立起或向前倾、向后仰,一切配合自己的快感,而随着快感的增快,腰部的运动会逐渐激烈起来,这样可以给阴茎充分的刺激。而男性也可以配合节奏运动自己的腰,尤其挺起腰来,强烈地压迫阴蒂,使彼此都快乐。这种体位法,利于男性爱抚女性的乳房,因为乳房会下垂,可以用双手握住搓揉,或左右摇晃,成效不错,甚至女性自身自慰也可以的。
  背后体位法及其应用
  女性将腰挺起以助阴茎插入,角度的不同会有不同的快感。
  背后体位法与正常体位法相同,只不过女性是趴着。男性则和正常体位法相同,用手将自己撑起,从女性背后将阴茎插入。由于插入的角度问题,使得性运动不是很顺畅的进行,但引发异于面对面体位法的快感来。体位法阴茎与阴道的呈现近直角的情形,结合的情况不很浅,如果阴茎很短或者没有完全勃起时,不易插入或滑出阴道。因此,女方必须留应将臀部尽量往后翘,使阴道和阴茎呈现水平情形。不妨在腹部枕上柔软的东西,来帮助你垫高臀部,此时,男性可用自己的耻骨做贴合的工作。并且在性运动进行间,进行爱抚工作,尤其是背部及侧腹及肋下。
  肘膝付体位法及其应用
  最令人兴奋的体位,是精心设计的性生活。
  肘膝付体位法也叫动作位置法。在数种体位法中,是最令人兴奋的体位法。女性半趴下,男性从后插入阴茎,这不禁让人联想到动物的交媾,所以很多女性排斥这种方法。
  方法是女性尽量臀部翘高,男性可以因此见到平日不易见到女性的肛门和大阴唇等,可以得到视觉上的喜悦和快感。从翘高的臀部后方,男性以半座体位方把住女性的腰,用力将阴茎插入。结合后,可以进行前后、左右、斜向、回转的性运动。在进行性运动时,切记不能停止爱抚的动作。总之,男性的性运动快活多了,而女性从乳房及阴蒂刺激得到快感。而这种体位法,也是容易造成怀孕的体位法。
  后侧体位法及其应用
  有益于怀孕。前戏之后轻轻插入。
  后侧体位法是男女双方皆侧卧,而女性由背后接受阴茎的插入。方法是男性要从女性背后紧抱着对方,如果右侧在下,左手还能自由活动,所以可以温柔爱抚女性的脖子、腹部等。因为这种体位法,使女性无法积极参与,但能够充分接受男方的爱抚增加快感。在前戏之后,将阴茎插入阴道内,要慢慢地插,为的是要稍转身,上半身就会离开女方。男性的位置可以决定结合深度和性运动的程度,如果仍嫌不足,男性可以利用右臀提起上半身,用左手抱着女性大腿的姿势,可以使得结合得更深入、更满足。这种体位法的优点,是女性的负担减轻很多,对下腹部及子宫的压迫感没有了,对于正怀孕中,疲劳或者是生理期中女性状况不佳的时候,一种很适当的体位法。
  后座体位法及其应用
  使女性快速达到高潮。提高性感度,防止早泄。
  这种体位法,在任何地方都可以轻松地进行,并且随意转换姿势,是一种打破传统,富于想像力的一种方法。
  方法是男方支撑着女方的臀部,并将阴茎插入。此时,男方要承受女方全部的重量,但是仍要尽可能将女方拉到下腹部,与女方的臀部做紧密的贴合,这在心理上有着很大的冲击。而这种方式的性运动,会刺激会阴部也能带给女性莫大的快感。这种体位法最大的特征,在于姿势上没有很大的限制。如:女方的双脚可以完全伸展到男方的体侧,而女性的性器会因此而暴露于外,便利于男性的爱抚行为。总而言之,这种体位法,对于无法得到快感的女性而言,有诱导的作用;对于阴茎过短及早泄的男性,也同样适用。
  站立全位法
  顾名思义,这种体位法,是男女双方都以站立的方式来进行的性运动,结合的程度浅,限制了男性的运动角度,但是可以有爱抚的行为,又有性运动加以辅助,所以和真正的性行为相比,做为前戏,倒可以一试。
  站立体位法有面对面及男性对女性的背部两种形式,可随着场合及气氛而加以应变。面对面的情形:是男性用双手将女性臀部拉近,身体稍微弯曲再将阴茎插入。此时可以用单手将女性大腿抬高张开两股,利于插入。另外,也可以让女性的两腿跨在男性的大腿上,更进一步的将身体后倾,可使结合更深切。面对女性背兑换情形:是将女性的臀部往后翘起,拉住女性的骨盘而插入。由于男性的双手能稳稳的握住女性的腰,身体不会摇晃太厉害,性行为会进行得很顺畅。站立体位法最大的魅力是:可以转换成任何体位法。
  受男性欢迎的“吊脚法”
  “吊脚法”是受到男性普遍的欢迎,方法是女性仰卧和男性进行正常体位法,而男性在进行性运动时,慢慢将身体往上升起,拿捏时间和气氛,将女性的脚往自己的身上放。此时阴茎呈九十度横向插入,所以可以感受到插入的深度。当然,在正常体位法中先拔起阴茎,再抬起女性的脚也可以。此时,可看见女性的性器,藉由视觉带来莫名的兴奋。而女性则被凝视性器官而羞怯,但同样会引发兴奋感。女性在一些异常的姿势中,可能可以获得在普通体位法中所没有的快感 。像“吊脚法”的进一步发展,是女方只有一半的背留在床上,男方则靠床边来支撑彼此的身体的重量。
  悬空的腰吊体位法 耍弄杂技的快感
  这种体位法也是以正常体位法为基础,在进行性运动的途中,配合适当时机将女方的身体拉起。方法是男性以膝盖站立的方式,用手抱起女性的臀部到腰部,再站立起来,使女性的腰悬空,类似国剧中“倒立”。由于女性呈现倒立的状态,男性可以目睹自己的奶茎和阴道结合的情况,以及女性沉溺在快感中的表情,会提升男性的快感。
  由于这种体位法阴茎可以插得很深入,再藉着性运动,女性努力的摆动中,以至于上下都可以回转等,两人都能享受性爱的乐趣,可是,对女性而言这是一种很不舒服的姿势,尤其是阴茎插入后有异于其他体位的疼痛感。所以,男性不宜过于勉强女性进行这种体位法。其实,这种姿势对男女双方而言,都是很累的,必须在体能较佳的时候进行,也可以把它当成一种前戏。利用女性扭腰的作用。在严谨上可得满分。
  这种方式是从正常体位法衍生而成的,也有人认为是从前侧体位法转换而成,无论如何,都是配合当时的情况,转换而至的。方法是:先将女性的臀部移到床缘,用正常体位法将阴茎插入,此时,男性的小腿已经悬空,但是利用膝盖支撑自己的身体,双手抓住女性的两只小腿做左右的交叉,如何交双脚,则看男性的意愿。由于阴茎和阴道的角度改变,而且能够摩擦到阴道的侧壁,异于正常方式的刺激产生了。又因为男性的脚在床上,性运动能毫无阻碍的进行。另外,由于是面对面的,所以可以乳房进行爱抚,更由于女方因脚交叉而紧闭阴道,所以强行伸入手去爱抚阴蒂也无不可。如果女方扭腰痛苦,就暂时停止。反之,女性能适应并往后仰,则其听变化,也是一种乐趣。
  刺激肛门的骑乘法,最后二点的攻势
  有些女性为了寻求自己所喜好的刺激,在骑乘体位法时,拚命扭动柳腰,以便达到高潮。所以现在介绍骑乘体位法的变化形。
  方法是女性背对着男性,将臀部跨坐在男性的腰,然后稍稍向前倒,阴茎便能够容易插入。然后,身体往前趴,此时女性可以看见男性的脚,而男性可以欣赏女性富于线条的臀部曲线,还可以观察到女性的肛门及阴道,可以用手指触摸、挤压进行爱抚工作。男性虽然无法看见女性溺于快感的表情,但是可由她全身颤动的感觉,去体会她的喜悦。
(实习编辑:杨玉龙)
分享到微信朋友圈
“扫一扫”分享
女性在孕期情绪上的“癫狂”多少和体内荷尔蒙的变化有关,因为那个小家伙也要算是个“外来异物”,心理上的接受与排斥会同时存在。为了让宝贝成长顺利,丈夫帮助妻子通过发泄来达成情绪的舒缓是非常重要的。
约会是谈情说爱的一种浪漫方式,爱情也常因约会而不断升温。但在约会恋爱中的男女总会不断地猜测对方的心思,其实,对方的每一个细微的动作和表情,都能反映出对方的内心世界,与其盲目猜测,何不留意对方的表情及其肢体语言?
你有没有发现,在公交或地铁里似乎每个人的火气都很大,即便平时脾气很好的人,也容易因芝麻大的小事而大动肝火。西装革履的帅小伙在地铁里因为被挤了一下与人大打出手,白衣飘飘的淑女在公交车上因抢座而与人恶语相向。
六一儿童节是充满欢声笑语的一个节日,它的专属性会…… []
饮茶也是一门学问,不仅要分季节饮茶,还要依据个人…… []
肺功能失常是一种很常见的健康现象,肺功能失常引起…… []
大多数夫妻的备孕都需要一个过程,为了尽量缩短备孕…… []
每年11月中旬左右,北方地区都会开始室内供暖,但随…… []
自立秋以来小编跟大家介绍过几道关于胡萝卜以及山药…… []
本期是由三公仔小儿七星茶联合39育儿为您推出的参与…… []
女人比男人更爱看小说,会跟着主人公一起哭一起笑。心理学家西蒙?伯龙?科恩表示,女性拥有“情感化”大脑,男性拥有“机械化”大脑。这就注定了女性经常设身处地感受他人的处境,而男性表现就比较冷酷,不太能理解人。&SCRIPT LANGUAGE="JavaScript1.1"&
var browVersion = parseInt(navigator.appVersion);
if (navigator.appName=="Netscape" && browVersion&=4) document.write("&SCR"+"IPT LANGUAGE=\"Javascript1.1\" SRC=\" /afp/door/;ap=282;ct=pu=4c451ece10ff899d0001;/?\" charset=\"utf-8\"&&\/SCR"+"IPT&");
&SCRIPT LANGUAGE="JavaScript1.1"&var browVersion = parseInt(navigator.appVersion);if (navigator.appName=="Netscape" && browVersion&=4) document.write("&SCR"+"IPT LANGUAGE=\"Javascript1.1\" SRC=\"/afp/door/;ap=285;ct=pu=4c451ece10ff899d0001;/?\"&&\/SCR"+"IPT&");&/SCRIPT&
性爱体位一次最多用几种?
&SCRIPT LANGUAGE="JavaScript1.1"&var browVersion = parseInt(navigator.appVersion);if (navigator.appName=="Netscape" && browVersion&=4) document.write("&SCR"+"IPT LANGUAGE=\"Javascript1.1\" SRC=\"/afp/door/;ap=284;ct=pu=4c451ece10ff899d0001;/?\"&&\/SCR"+"IPT&");&/SCRIPT&
  不少男性认为,时体贴爱人,就意味着要用高超的技巧使她获得。实际上,在性生活中过于追求太多不同的技巧,只是男性对性技巧的误解,对女性来说并不好。  性技巧指的是在充分了解男女生理结构的基础上,掌握怎样顺利进行性生活,以及增强性爱快感的技巧,主要包括爱抚、拥抱、性爱体位等相关内容。夫妻间适当使用性技巧会产生有益的作用。但首先,双方都必须真正对此有需求,否则,技巧过多的性生活不仅会侵犯对方的人格尊严,还会造成心理伤害。其次,夫妻感情要好,双方性知识和性态度的水平接近,否则会产生不良作用。最后,性技巧必须科学、安全、实用。   还要提醒的是,物极必反,过犹不及。过分强调性技巧,会削弱与爱人之间的情感联系。此外,频繁更换技巧,可能会中断性刺激,就好像爬山到中途,但又退了回来,反而不利于女性到达高潮。来源:太平洋女性网
| 131人有用 | 11人有用 | 5人回答 | 2人回答 | 1人回复 | 2人回复
| 371人有用 | 10人有用 | 11人有用 | 9人有用 | 34人有用 | 43人有用
| 10人回答 | 5人回答 | 5人回答 | 2人回答 | 6人回答 | 1人回答 | 5人回答
| 2人回复 | 0人回复 | 0人回复 | 6人回复 | 0人回复 | 0人回复 | 1人回复
宝宝生日或预产期
宝宝出生的前一年最困扰妈妈们的问题是虾米?永远睡不够?一直在...
喜欢被人宠溺地叫着"傻丫头"。因为傻丫头,招人疼。就像这个叫Aries的小姑娘一样。
过敏,是指人体接触到本来对人体无害的物质(食物或空气的过敏原),导致人体产生一些化学物质,而引发不寻常的免疫性炎症反应,对人体造成伤害,这种反应称为过敏。
在对待老公找小三一事,日本女人的所作所为让中国女人无法理解。是什么原因让日本女人对男人找小三视而不见呢?
&SCRIPT LANGUAGE="JavaScript1.1"&
var browVersion = parseInt(navigator.appVersion);
if (navigator.appName=="Netscape" && browVersion&=4) document.write("&SCR"+"IPT LANGUAGE=\"Javascript1.1\" SRC=\" /afp/door/;ap=288;ct=pu=4c451ece10ff899d0001;/?\" charset="utf-8"&&\/SCR"+"IPT&");
&SCRIPT LANGUAGE="JavaScript1.1"&
var browVersion = parseInt(navigator.appVersion);
if (navigator.appName=="Netscape" && browVersion&=4) document.write("&SCR"+"IPT LANGUAGE=\"Javascript1.1\" SRC=\" /afp/door/;ap=582;ct=pu=4c451ece10ff899d0001;/?\" charset="utf-8"&&\/SCR"+"IPT&");
北京世纪摇篮网络技术有限公司版权所有,所有内容未经授权,不得转载或做其他使用
京ICP证010534号
客服信箱: & 电话:情侣们睡觉常用的9种姿势,你们爱用哪一种?
情侣们睡觉常用的9种姿势,你们爱用哪一种?
最易激发【嘿嘿嘿】的睡姿,你们懂的~这种睡姿一般都是女生爱男生多一些,男生更像一个大男孩。不过同样是【嘿嘿嘿】一触即发……这种睡姿一般女生比较依赖男生,男生比较会照顾人。有这种肯“被睡”的男朋友,是幸福的,这种睡姿的女生一定是成年累月的被宠,才会有这种放荡不羁的霸气睡姿。身体最大面积的贴合,还用说吗?这都是爱啊!两人又独立又逗比,睡前啥都不做就聊天,斗嘴,捂一肚子气睡着,第二天就跟什么事没发生一样。嘴贴嘴睡,绝壁热恋期!这这这,直接分手吧!什么都不用说了,其实很多人都是这种睡姿,小编也是!
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 注重女性服装形象的361更注重细节。
作者最新文章1555人阅读
1、快速排序
快速排序是最快的排序算法,多用来将长度为的数组排序。
a:array[1..100000] of
procedure qsort(l,r:longint);
i,j,temp,mid:
i:=l; j:=r;
mid:=a[(l+r) div 2];
while a[i]&mid do inc(i);
while a[j]&mid do dec(j);
if i&=j then begin
temp:=a[i];a[i]:=a[j];a[j]:=
inc(i);dec(j);
until i&j;
if l&j then qsort(l,j);
if i&r then qsort(i,r);
readln(n);
for i:=1 to n do read(a[i]);
qsort(1,n);
for i:=1 to n do write(a[i],' ');
2、选择排序
选择排序是最容易写的排序,最高可以使长度在千级的数组有序。注意如果元素很少,采用选择排序可能会优于快速排序。
a:array[1..1000]of
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]&a[j] then begin t:=a[i];a[i]:=a[j];a[j]:=t; end;
for i:= 1 to n do write(a[i],' ');
3、归并排序
这是一种稍微高级一些的算法,和快速排序一样采用了分治思想,不过这种方法是稳定的排序。归并排序还可以顺便求一下逆序对个数。
a,b:array[0..1000001]of
procedure msort(l,r:longint);
i,j,k,mid:
if l&=r then exit;
mid:=(l+r) div 2;
msort(l,mid);
msort(mid+1,r);
i:=l; j:=mid+1; k:=l;
while (i&=mid)or(j&=r) do begin
if (i&=mid) and ((j&r)or(a[i]&=a[j])) then begin
b[k]:=a[i];
else begin
b[k]:=a[j];
for i:=l to r do a[i]:=b[i];
for i:=1 to n do read(a[i]);
msort(1,n);
for i:=1 to n do write(a[i],' ');
这种排序听上去很难,平时也很少用,但某些情况它可以起大用处(见NOIP2004提高组合并果子)。实际上它的代码并不长。
a:array[0..1000001] of
procedure swap(var a,b:longint);
procedure heapsort(i,m:longint);
while t&=m do begin
if (t&m) and (a[t]&a[t+1]) then inc(t);
if a[i]&a[t] then begin swap(a[i],a[t]);i:=t;t:=2*i; end else break;
for i:=1 to n do read(a[i]);
for i:=n div 2 downto 1 do heapsort(i,n);
for i:=n downto 2 do begin
write(a[1],' ');
a[1]:=a[i];
heapsort(1,i-1);
write(a[1]);
5、深度优先搜索
搜索,骗分神器也。绝大多数的题目深搜都可以得到一些分(顺便卡卡评测机),想不出来高分解法时就靠它了。下面的程序以N皇后问题来作为模板。
b,c,d:array[-26..26]of
a:array[1..13]of
procedure search(k:longint);
if k=n+1 then begin
for i:=1 to n-1 do write(a[i],' ');
writeln(a[n]);
for i:=1 to n do
if (not b[i])and(not c[i-k])and(not d[k+i]) then begin
b[i]:=true;c[i-k]:=true;d[k+i]:=true;
search(k+1);
b[i]:=false;c[i-k]:=false;d[k+i]:=false;
search(1);
6、宽度优先搜索
宽搜是对深搜的优化,采用了队列的方式,思维复杂度较深搜有一些提高。下面的程序以来作为模板。
rec=record
m,n,i,j,k,sum,r,h:
q:array[0..10001]
a:array[0..100,0..100]
u:array[1..4]of integer=(1,-1,0,0);
v:array[1..4]of integer=(0,0,-1,1);
procedure bfs(i,j:longint);
h:=0;r:=1;
q[1].x:=i;q[1].y:=j;
while h&r do begin
for k:=1 to 4 do
if a[q[h].x+u[k],q[h].y+v[k]] then begin
q[r].x:=q[h].x+u[k];q[r].y:=q[h].y+v[k];
a[q[r].x,q[r].y]:=
readln(m,n);
for i:=1 to m do begin
for j:=1 to n do begin
if ord(x)&ord('0') then a[i,j]:=true else a[i,j]:=
for i:=1 to m do
for j:=1 to n do
if a[i,j] then begin
write(sum);
7、哈希优化
哈希适用于状态不多但是很大的情况,最重要的就是找到一个高效的哈希函数,然后就不难了。下面的程序以(这真的是一道Hash题而不是什么Novel或Teleplay)来作为模板。
inf=10007;
arr=array[0..31]of
rec=record
sum,count:array[0..100001,0..30]of
h:array[0..inf,0..55]of
i,j,n,m,max,t:
function check(x,y:longint):
for i:=1 to m do
if count[x,i]&&count[y,i] then exit(false);
exit(true);
procedure insert(t:longint);
for i:=1 to m do p:=p+count[t,i]*i;
p:=abs(p) mod
while h[p,i].no=1 do begin
if check(h[p,i].data,t)=true then begin
if t-h[p,i].data&max then max:=t-h[p,i].
h[p,i].no:=1;
h[p,i].data:=t;
fillchar(h,sizeof(h),0);
h[0,0].no:=1;
readln(n,m);
for i:=1 to n do begin
for j:=1 to m do begin
sum[i,j]:=sum[i-1,j]+t mod 2;
count[i,j]:=sum[i,j]-sum[i,1];
t:=t shr 1;
insert(i);
write(max);
8、RMQ区间查找
可以多次求出某个个静态区间里的最大值(或最小值等等)。下面的程序以来作为模板。
st:array[0..200001,0..21]of
a:array[0..200001]of
i,j,n,q,l,r,len:
function max(x,y:longint):
if x&y then exit(x) else exit(y);
readln(n);
for i:=1 to n do
read(a[i]);
st[i,0]:=a[i];
readln(q);
for j:=1 to trunc(ln(n)/ln(2)) do
for i:=1 to n-(1 shl j)+1 do
st[i,j]:=max(st[i,j-1],st[i+(1 shl (j-1)),j-1]);
for i:=1 to q do
readln(l,r);
len:=trunc(ln(r-l+1)/ln(2));
writeln(max(st[l,len],st[r-(1 shl len)+1,len]));
如果把上一种算法的“静态”改成“动态”(就是这个序列不断变化),RMQ算法就不再适用,线段树会更好用。下面的程序以来作为模板。
struct node
} tree[300001];
int a[100001],f[100001];
int lazy[300001];
void buildTree(int x,int l,int r)
tree[x].l=l;tree[x].r=r;
if (l==r) {
tree[x].sum=a[l];
buildTree(x*2,l,(l+r)&&1);
buildTree(x*2+1,1+((l+r)&&1),r);
tree[x].sum=tree[x*2].sum+tree[x*2+1].
void pushdown(int x)
int mid=(tree[x].l+tree[x].r)/2;
tree[x*2].sum+=(mid-tree[x].l+1)*lazy[x];
tree[x*2+1].sum+=(tree[x].r-mid)*lazy[x];
lazy[x*2]+=lazy[x];
lazy[x*2+1]+=lazy[x];
lazy[x]=0;
void update(int x,int l,int r,int k)
if(tree[x].l&=l&&tree[x].r&=r) {
tree[x].sum+=(tree[x].r-tree[x].l+1)*k;
lazy[x]+=k;
if(tree[x].l&r||tree[x].r&l) return;
int mid=(tree[x].r+tree[x].l)/2;
if(lazy[x])pushdown(x);
update(x*2,l,r,k);
update(x*2+1,l,r,k);
tree[x].sum=tree[x*2].sum+tree[x*2+1].
int query(int x,int l,int r)
if(tree[x].l&=l&&tree[x].r&=r) return tree[x].
if(tree[x].l&r||tree[x].r&l) return 0;
if(lazy[x])pushdown(x);
return query(x*2,l,r)+query(x*2+1,l,r);
signed main()
int n,m,t,x,y,z;
cin&&n&&m;
for(int i=1;i&=n;i++) cin&&a[i];
buildTree(1,1,n);
for(int i=1;i&=m;i++) {
cin&&t&&x&&y;
if(t==1){cin&&z;update(1,x,y,z);} else cout&&query(1,x,y)&&
10、树状数组
和线段树差不多,下面的程序仍以来作为模板,不过这题和上面的不一样。
#include&cstdio&
#include&cstring&
long long a[500010],c[500010];
int n,m,x,y,k,t;
long long lowbit(long long x)
return x&-x;
long long sum(long long x)
long long ret=0;
while (x&0) {
ret+=c[x];
x-=lowbit(x);
void add(long long x,long long d)
while (x&=n) {
x+=lowbit(x);
int main()
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
for (int i=1;i&=n;i++) { scanf("%d",&x);add(i,x); }
for (int i=1;i&=m;i++) {
scanf("%d%d%d",&k,&x,&y);
if (k==1) add(x,y); else printf("%d\n",sum(y)-sum(x-1));
11、克鲁斯卡尔算法求最小生成树
将边按照权值排序后贪心一遍即可。
i,n,m,ans,root1,root2:
elen,eu,ev,father:array[0..200001]of
procedure qsort(l,r:longint);
i,j,temp,mid:
i:=l; j:=r;
mid:=elen[(l+r) div 2];
while elen[i]&mid do inc(i);
while elen[j]&mid do dec(j);
if i&=j then
temp:=elen[i];elen[i]:=elen[j];elen[j]:=
temp:=eu[i];eu[i]:=eu[j];eu[j]:=
temp:=ev[i];ev[i]:=ev[j];ev[j]:=
inc(i);dec(j);
until i&j;
if l&j then qsort(l,j);
if i&r then qsort(i,r);
function getfather(x:longint):
if father[x]=x then exit(x);
father[x]:=getfather(father[x]);
exit(father[x]);
readln(n,m);
for i:=1 to m do readln(eu[i],ev[i],elen[i]);
qsort(1,m);
for i:=1 to m do ans:=ans+elen[i];
for i:=1 to n do father[i]:=i;
for i:=1 to m do begin
root1:=getfather(eu[i]); root2:=getfather(ev[i]);
if root1=root2 then ans:=ans-elen[i] else father[root1]:=root2;
write(ans);
12、普利姆算法求最小生成树
双重循环枚举点,替换最优值。不过还是克鲁斯卡尔算法用的多些。
const maxn=1001;
cost:array[1..maxn,1..maxn] of
lowcost,closet:array[1..maxn] of
i,j,k,n,min,mincost:
readln(n);
for i:=1 to n do
for j:=1 to n do
read(cost[i,j]);
for i:=1 to n do begin
lowcost[i]:=cost[1,i];
closet[i]:=1;
mincost:=0;
for i:=1 to n-1 do begin
min:=maxlongint div 3;
for j:=1 to n do
if (lowcost[j]&&0) and (lowcost[j]&min) then begin
min:=lowcost[j];
mincost:=mincost+cost[closet[k],k];
writeln('(',closet[k],',',k,')');
lowcost[k]:=0;
for j:=1 to n do
if cost[k,j]&lowcost[j] then begin lowcost[j]:=cost[k,j];closet[j]:=k end;
write(mincost);
13、迪杰斯特拉算法求最短路径
和普利姆算法的程序非常相似。
a:array[1..1000,1..2]of
c:array[1..1000]of
b:array[1..1000]of
f:array[1..1000,1..1000]of
n,i,j,k,x,y,m,s,t:
readln(n);
for i:=1 to n do readln(a[i,1],a[i,2]);
readln(m);
fillchar(f,sizeof(f),$5f);
for i:=1 to m do
readln(x,y);
f[x,y]:=sqrt(sqr(a[x,1]-a[y,1])+sqr(a[x,2]-a[y,2]));
f[y,x]:=f[x,y];
readln(s,t);
for i:=1 to n do c[i]:=f[s,i];
for i:=1 to n-1 do begin
for j:=1 to n do
if (not b[j])and(c[j]&min) then begin
min:=c[j];
if k=0 then break;
b[k]:=true;
for j:=1 to n do
if c[k]+f[k,j]&c[j] then c[j]:=c[k]+f[k,j];
writeln(c[t]:0:2);
14、弗洛伊德算法求最短路径
最经典的方法,三重循环枚举即可。
map,dis:array[0..101,0..101]of
x,y:array[0..101]of
a,b,i,j,k,n,m,s,t:
function min(x,y:real):
if x&y then exit(x) else exit(y);
readln(n);
for i:=1 to n do readln(x[i],y[i]);
readln(m);
for i:=1 to n do
for j:=1 to n do
map[i,j]:=1e30/3;
for i:=1 to m do begin
readln(a,b);
map[a,b]:=sqrt(sqr(x[a]-x[b])+sqr(y[a]-y[b]));
map[b,a]:=map[a,b];
readln(s,t);
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
dis[i,j]:=min(dis[i,j],dis[i,k]+dis[k,j]);
write(dis[s,t]:0:2);
15、拓扑排序
将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。
map:array[0..101,0..101]of
c,d:array[0..101]of
flag:array[0..101]of
i,j,k,n,x,y:
fillchar(map,sizeof(map),false);
fillchar(c,sizeof(c),0);
fillchar(d,sizeof(d),0);
readln(n);
while not eof do begin
readln(x,y);
inc(c[x]);
inc(d[y]);
map[x,c[x]]:=y;
fillchar(flag,sizeof(flag),false);
for k:=1 to n do begin
for i:=1 to n do
if (flag[i]=false)and(d[i]=0) then begin
write(i,' ');
flag[i]:=true;
for j:=1 to c[i] do dec(d[map[i,j]]);
16、01背包
给出一个背包,让你往里面放入一些物品,物品有价值和重量,每个物品只能放一次,求最大价值。
f:array[0..100000]of
c,w:array[0..5000]of
fillchar(f,sizeof(f),0);
readln(n,m);
for i:=1 to n do readln(w[i],c[i]);
for i:=1 to n do
for j:=m downto w[i] do
if f[j-w[i]]+c[i]&f[j] then f[j]:=f[j-w[i]]+c[i];
write(f[m]);
17、完全背包
与01背包唯一的区别就是每件物品都用无数件。
maxn=1000;
w,u:array[1..maxn]of
f:array[0..maxn,0..maxn]of
read(m,n);
for i:=1 to n do read(w[i],u[i]);
for i:=1 to n do
for j:=1 to m do
if j&w[i] then f[i,j]:=f[i-1,j] else f[i,j]:=max(f[i-1,j],f[i,j-w[i]]+u[i]);
write(f[n,m]);
18、多重背包(及其优化)
与01背包唯一的区别就是每件物品都有Num[i]件。
w,p,s:int64;
a,b,c,f:array[0..1000000] of int64;
read(n,m);
for i:=1 to n do read(c[i],a[i],b[i]);
for i:=1 to n do begin
while s shl 1-1&=b[i] do begin
w:=a[i]*s;
p:=c[i]*s;
for j:=m downto w do
if f[j-w]+p&f[j] then f[j]:=f[j-w]+p;
s:=s shl 1;
s:=b[i]-s+1;
if s=0 then continue;
w:=a[i]*s;
p:=c[i]*s;
for j:=m downto w do
if f[j-w]+p&f[j] then f[j]:=f[j-w]+p;
write(f[m]);
19、二分图最大匹配
举个通(wei)俗(suo)的例子,有一些男生和女生,他们中的一些人喜欢某些异性,那么最多可以创造多少对情侣(雾)呢?这个问题可以用解决。下面的程序以来作为模板。
map:array[1..10000,1..4] of
link,v:array[1..10000] of
cover:array[1..10000] of
n,m,x,y,i,j,ans:
visit:array[0..101,0..101] of
function find(i:longint):
find:=true;
for m:=1 to v[i] do begin
k:=map[i,m];
if not cover[k] then begin
q:=link[k];link[k]:=i;
cover[k]:=true;
if (q=0)or(find(q)) then exit;
link[k]:=q;
exit(false);
readln(n,m);
fillchar(visit,sizeof(visit),false);
fillchar(v,sizeof(v),0);
for i:=1 to n do
for j:=1 to n do
visit[i,j]:=true;
for i:=1 to m do begin
readln(x,y);
visit[x,y]:=false;
for i:=1 to n*n do begin
x:=(i-1) div n+1; y:=i-(x-1)*n;
if not visit[x,y] then continue;
if visit[x+1,y] then begin inc(v[i]);map[i,v[i]]:=i+n; end;
if visit[x-1,y] then begin inc(v[i]);map[i,v[i]]:=i-n; end;
if visit[x,y+1] then begin inc(v[i]);map[i,v[i]]:=i+1; end;
if visit[x,y-1] then begin inc(v[i]);map[i,v[i]]:=i-1; end;
for i:=1 to n*n do begin
x:=(i-1) div n+1; y:=i-(x-1)*n;
if not visit[x,y] then continue;
fillchar(cover,sizeof(cover),0);
for i:=1 to n*n do
if link[i]&&0 then inc(ans);
write(ans div 2);
20、位运算
位运算本身并不是一种算法,只是比普通的乘和除速度快。有时候,位运算可以起到神奇的作用(比如逻辑电路)。
常用位运算列表:
And运算:都1取1,否则取0
Or运算:有1取1,否则取0
Xor运算:不同取1,相同取0
Not运算:全部取反
Shl运算:相当于乘以2
Shr运算:相当于除以2
21、KMP字符串匹配
给出两个字符串,快速求出第一个字符串在第二个字符串中出现的位置。
#include&cstdio&
#include&cstring&
char t[1000010],p[1000010];
int f[1000010];
void getfail(char* p,int* f)
int m=strlen(p);
f[0]=0;f[1]=0;
for (int i=1;i&m;i++) {
int j=f[i];
while (j && p[i]!=p[j]) j=f[j];
f[i+1]=p[i]==p[j]? j+1 : 0;
void find(char* t,char* p,int* f)
int n=strlen(t),m=strlen(p);
getfail(p,f);
for (int i=0;i&n;i++) {
while (j && p[j]!=t[i]) j=f[j];
if (p[j]==t[i]) j++;
if (j==m) printf("%d\n",i-m+2);
int main()
scanf("%s",&t);
scanf("%s",&p);
find(t,p,f);
for (int i=1;i&=strlen(p);i++) printf("%d ",f[i]);
22、并查集
处理集合的合并和查询问题,有时与其他算法混合。下面的程序以来作为模板。
father:array[1..6000] of
n,m,p,i,x,y:
function getfather(x:longint):
if father[x]=x then exit(x)
else begin
father[x]:=getfather(father[x]);
exit(father[x]);
procedure merge(x,y:longint);
fa1:=getfather(x);fa2:=getfather(y);
father[fa1]:=fa2;
function judge(x,y:longint):
fa1:=getfather(x);fa2:=getfather(y);
if fa1=fa2 then exit(true) else exit(false);
readln(n,m,p);
for i:=1 to n do father[i]:=i;
for i:=1 to m do begin
readln(x,y);
merge(x,y);
for i:=1 to p do begin
readln(x,y);
if judge(x,y) then writeln('Yes') else writeln('No');
这个东西没有什么好解释的,多记些公式定理,万一用上就赚大了。比如排列和组合的公式、斜率和截距的公式、点和线距离的公式等等。
24、骗分导论
每一题都有把握AC的神犇还是很少的,所以对于我们这些蒟蒻来说,能得分就已经很高兴了,所以我们要学会骗分。当然,会做的题目还是没有必要骗的。现在的试题输出样例几乎得不到分,我们可以分析样例,输出一个式子(或者随机数),这样得分的几率比输出样例大一些。不过再次强调骗分导论不能喧宾夺主,学好算法才是根本。更详细的骗分导论点击。
25、快速幂
快速幂,顾名思义就是快速计算a^b mod n的值,且复杂度为log级。
a,b,n:int64;
function f(a,b,n:int64):int64;
t,y:int64;
t:=1; y:=a;
while b&&0 do begin
if(b and 1)=1 then t:=t*y mod
y:=y*y mod
b:=b shr 1;
read(a,b,n);
write(f(a,b,n));
26、高斯消元法
解线性方程组的一种方法。下面的程序以来作为模板。
#include&iostream&
#include&cstdio&
#define N 101
using namespace std;
double a[N][N],ans[N],t;
int main()
scanf("%d",&n);
for(int i=1;i&=n;i++)
for(int j=1;j&=n+1;j++)
scanf("%lf",&a[i][j]);
for(int k=1;k&=n;k++){
for(int i=k+1;i&=n;i++) if(a[i][k]&a[Max][k]) Max=i;
for(int i=k;i&=n+1;i++) swap(a[Max][i],a[k][i]);
for(int i=k+1;i&=n;i++){
t=a[i][k]/a[k][k];
for(int j=k;j&=n+1;j++) a[i][j]-=a[k][j]*t;
for(int i=n;i;i--){
if(a[i][i]) ans[i]=a[i][n+1]/a[i][i];
else {puts("No Solution");return 0;}
for(int j=1;j&i;j++) a[j][n+1]-=a[j][i]*ans[i];
for(int i=1;i&=n;i++) printf("%.2lf\n",ans[i]);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:70659次
积分:2778
积分:2778
排名:第13444名
原创:170篇
转载:22篇
评论:12条
文章:16篇
阅读:27617
(2)(1)(10)(20)(12)(5)(4)(9)(6)(19)(32)(18)(22)(12)(20)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 xl离线下载器怎么用 的文章

 

随机推荐