日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ2843:极地旅行社

發布時間:2024/4/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ2843:极地旅行社 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

不久之前,Mirko建立了一個旅行社,名叫“極地之夢”。這家旅行社在北極附近購買了N座冰島,并且提供觀光服務。 當地最受歡迎的當然是帝企鵝了,這些小家伙經常成群結隊的游走在各個冰島之間。Mirko的旅行社遭受一次重大打擊,以至于觀光游輪已經不劃算了。旅行社將在冰島之間建造大橋,并用觀光巴士來運載游客。 Mirko希望開發一個電腦程序來管理這些大橋的建造過程,以免有不可預料的錯誤發生。 這些冰島從1到N標號。一開始時這些島嶼沒有大橋連接,并且所有島上的帝企鵝數量都是知道的。每座島上的企鵝數量雖然會有所改變,但是始終在[0, 1000]之間。你的程序需要處理以下三種命令: 1."bridge A B"——在A與B之間建立一座大橋(A與B是不同的島嶼)。由于經費限制,這項命令被接受,當且僅當A與B不聯通。若這項命令被接受,你的程序需要輸出"yes",之后會建造這座大橋。否則,你的程序需要輸出"no"。 2."penguins A X"——根據可靠消息,島嶼A此時的帝企鵝數量變為X。這項命令只是用來提供信息的,你的程序不需要回應。 3."excursion A B"——一個旅行團希望從A出發到B。若A與B連通,你的程序需要輸出這個旅行團一路上所能看到的帝企鵝數量(包括起點A與終點B),若不聯通,你的程序需要輸出"impossible"。

Input

第一行一個正整數N,表示冰島的數量。 第二行N個范圍[0, 1000]的整數,為每座島嶼初始的帝企鵝數量。 第三行一個正整數M,表示命令的數量。接下來M行即命令,為題目描述所示。 1<=N<=30000,1<=M<=100000

Output

對于每個bridge命令與excursion命令,輸出一行,為題目描述所示。

Sample Input

5
4 2 4 5 6
10
excursion 1 1
excursion 1 2
bridge 1 2
excursion 1 2
bridge 3 4
bridge 3 5
excursion 4 5
bridge 1 3
excursion 2 4
excursion 2 5

Sample Output

4
impossible
yes
6
yes
yes
15
yes
15
16
題解: LCT練習題,因為沒有cut操作,可以離線用樹鏈剖分+并查集搞。 代碼: 1 var 2 i,j,k,l,n,m,dts,y,a,b:longint; 3 fa,sm,v,rev,dt:array[0..50001]of longint; 4 ch:array[0..50001,0..1]of longint; 5 ch1,ch2:char; 6 procedure update(x:longint); 7 begin 8 if x=0 then exit; sm[x]:=v[x]; 9 if ch[x,0]<>0 then sm[x]:=sm[x]+sm[ch[x,0]]; 10 if ch[x,1]<>0 then sm[x]:=sm[x]+sm[ch[x,1]]; 11 end; 12 function isroot(x:longint):boolean; 13 begin 14 if(x=0)or(fa[x]=0)then exit(true); 15 exit((x<>ch[fa[x],0])and(x<>ch[fa[x],1])); 16 end; 17 procedure pushdown(x:longint); 18 var tt:longint; 19 begin 20 if rev[x]=1 then 21 begin 22 tt:=ch[x,1]; ch[x,1]:=ch[x,0]; ch[x,0]:=tt; rev[x]:=0; 23 if ch[x,0]<>0 then rev[ch[x,0]]:=rev[ch[x,0]]xor 1; 24 if ch[x,1]<>0 then rev[ch[x,1]]:=rev[ch[x,1]]xor 1; 25 end; 26 end; 27 procedure rotate(x:longint); 28 var a1,a2,a3,b1,b2,b3:longint; 29 begin 30 if(x=0)or(isroot(x))then exit; 31 a1:=fa[x]; a2:=fa[fa[x]]; 32 if x=ch[a1,1] then b1:=1 else b1:=0; 33 if a1=ch[a2,1] then b2:=1 else b2:=0; 34 if isroot(a1)then b3:=1 else b3:=0; a3:=ch[x,1-b1]; 35 if b3=0 then ch[a2,b2]:=x; fa[x]:=a2; ch[a1,b1]:=a3; 36 if a3>0 then fa[a3]:=a1; ch[x,1-b1]:=a1; fa[a1]:=x; 37 update(a1); update(x); if b3=0 then update(a2); 38 end; 39 procedure splay(x:longint); 40 begin 41 if x=0 then exit; dts:=0; y:=x; 42 while not isroot(y) do begin inc(dts); dt[dts]:=y; y:=fa[y]; end; 43 inc(dts); dt[dts]:=y; while dts>0 do begin pushdown(dt[dts]); dec(dts); end; 44 while not isroot(x) do 45 begin 46 if not isroot(fa[x]) then 47 begin 48 if(x=ch[fa[x],1])xor(fa[x]=ch[fa[fa[x]],1]) 49 then rotate(x) else rotate(fa[x]); 50 end; 51 rotate(x); 52 end; 53 end; 54 function access(x:longint):longint; 55 var t:longint; 56 begin 57 if x=0 then exit(0); t:=0; 58 while x>0 do 59 begin 60 splay(x); ch[x,1]:=t; update(x); 61 if t>0 then fa[t]:=x; t:=x; x:=fa[x]; 62 end; 63 exit(t); 64 end; 65 procedure cut(x,y:longint); 66 begin 67 if(x=0)and(y=0)then exit; 68 access(x); splay(x); rev[x]:=rev[x]xor 1; 69 access(y); splay(x); fa[y]:=0; ch[x,1]:=0; update(x); 70 end; 71 procedure link(x,y:longint); 72 begin 73 if(x=0)and(y=0)then exit; 74 access(x); splay(x); rev[x]:=rev[x]xor 1; fa[x]:=y; 75 end; 76 function qsum(x,y:longint):longint; 77 var a:longint; 78 begin 79 if(x=0)or(y=0)then exit(0); if x=y then exit(v[x]); 80 access(x); a:=access(y); splay(x); 81 if x=a then exit(v[a]+sm[ch[a,1]])else exit(sm[x]+v[a]+sm[ch[a,1]]); 82 end; 83 procedure change(x,y:longint); 84 begin 85 splay(x); v[x]:=y; update(x); 86 end; 87 function find(x:longint):longint; 88 begin 89 access(x); splay(x); while ch[x,0]>0 do x:=ch[x,0]; exit(x); 90 end; 91 begin 92 readln(n); for i:=1 to n do read(v[i]); sm[i]:=v[i]; readln(m); 93 for i:=1 to m do 94 begin 95 read(ch1); read(ch2); while ch2<>' ' do read(ch2); readln(a,b); 96 if ch1='b' then 97 begin 98 if find(a)=find(b) then writeln('no')else 99 begin writeln('yes'); link(a,b); end; 100 end else if ch1='p' then change(a,b) else 101 if find(a)<>find(b) then writeln('impossible')else writeln(qsum(a,b)); 102 end; 103 end. View Code

轉載于:https://www.cnblogs.com/GhostReach/p/6391777.html

總結

以上是生活随笔為你收集整理的BZOJ2843:极地旅行社的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色狠av| 国产一区二区在线免费 | 五月天六月色 | 台湾男男gay做爽爽的视频 | 亚洲精品一区久久久久久 | 黑人巨茎大战欧美白妇 | 男女在楼梯上高潮做啪啪 | 强行挺进皇后紧窄湿润小说 | 五月激情五月婷婷 | 看片免费黄在线观看入口 | 日韩色婷婷 | 日韩精品在线观看一区 | 久久国产精彩视频 | 黄色小说在线免费观看 | aaaa黄色| 韩国av在线播放 | 亚洲欧洲无码一区二区三区 | 曰韩一级片 | 91午夜精品亚洲一区二区三区 | 色噜噜亚洲 | 色丁香综合 | 日本丰满少妇做爰爽爽 | 朝桐光在线播放 | 99久久婷婷国产综合精品草原 | 天天插天天透 | 牛牛澡牛牛爽一区二区 | 一本久久精品一区二区 | 欧美另类xxx| 青青草精品视频 | 99视频导航 | 海角国产乱辈乱精品视频 | 国产91丝袜在线播放九色 | 97超碰人人| 国产性猛交xxxx免费看久久 | 香蕉免费在线视频 | 91福利视频网 | 黄色的网站在线观看 | 久草久草久草 | 欧美综合第一页 | 伊人激情综合网 | 中文字幕人妻一区二区三区 | 美女娇喘| 欧美黄色录像视频 | 国产精品视频在线看 | xxxxx在线| 国产综合视频在线 | 六月丁香综合网 | 免费人妻精品一区二区三区 | 老司机深夜免费福利 | 人妻在卧室被老板疯狂进入 | 97国产精品 | 九九精品久久 | 亚洲va在线观看 | 极品人妻videosss人妻 | 欧美日韩一区二区三区国产精品成人 | 欧美日韩亚洲综合 | 一本在线免费视频 | 夜夜天天拍拍 | 顶级毛茸茸aaahd极品 | 欧洲成人免费视频 | 欧美交换 | 中文欧美日韩 | 激情小视频在线观看 | 国产理论av | 亚洲精选久久久 | 欧美日韩国产黄色 | 乱子伦视频在线看 | 中文字幕一区二区三区人妻在线视频 | 国产精品12页 | 精品少妇一区二区三区 | 黄色3级视频 | 借种(出轨高h) | 日本电影大尺度免费观看 | 国产毛片精品国产一区二区三区 | 免费观看a毛片 | 国产精品成人一区二区 | 香蕉福利视频 | 伦理片一区二区三区 | 久久免费影院 | 超碰在线日韩 | 成人免费毛片东京热 | 欧美日韩久久精品 | 精品国产一二三 | 国产成人在线观看免费 | 久久久无码人妻精品一区 | 国产不卡在线视频 | 91性高潮久久久久久久久 | 午夜国产在线视频 | 先锋av资源 | 亚洲色图婷婷 | 亚洲成人av电影 | 免费特级黄毛片 | 精品免费一区二区三区 | 国产乱国产乱老熟300部视频 | 午夜亚洲国产 | 美女高潮在线 | 国产成人a人亚洲精品无码 在线aa | 成人福利视频在线 | 国产网站大全 |