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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu4829 带权并查集(题目不错)

發(fā)布時間:2025/6/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu4829 带权并查集(题目不错) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題意:


Information

Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 275 Accepted Submission(s): 33


Problem Description 軍情緊急,我們需要立刻開發(fā)出一個程序去處理前線偵察兵發(fā)回的情報,并做出相應(yīng)的分析。現(xiàn)在由你負責(zé)其中的一個子模塊,你需要根據(jù)情報計算出敵方坦克的位置。
當(dāng)敵方坦克靜止時,偵察兵會盡力估算出它們之間的位置,而每當(dāng)敵方坦克移動時,偵察兵都會記錄下坦克新的位置并向你報告。每個坦克的位置可以由一個二維整數(shù)坐標來描述。
前線發(fā)回的情報有四種格式:
1 A B X Y
表示A坦克移動到了與B坦克的相對位置是(X,Y)的地方,即XA = XB + X, YA=YB+Y。
2 A X Y
表示A坦克移動到了絕對位置是(X,Y)的地方,即XA = X, YA = Y。
3 A B X Y
表示發(fā)現(xiàn)了A坦克與B坦克的相對位置是(X,Y),即XA = XB + X, YA=YB+Y。
4 A X Y
表示發(fā)現(xiàn)了A坦克的絕對位置是(X,Y),即XA = X, YA = Y。
我們需要你對于如下兩種詢問及時做出回應(yīng):
5 A B
表示詢問A坦克與B坦克的相對位置是多少,即分別求出XA - XB 以及YA -YB
6 A
表示詢問A坦克的絕對位置是多少,即求出XA 和YA
其中A和B代表的是任意的一個坦克的編號,(X,Y)表示了坦克的二維坐標。你可以假設(shè)初始時刻我們對于敵方任何坦克的位置都一無所知,在此之后坦克的每一次移動都被偵察兵偵察到了。
請注意兩個坦克的坐標有可能相同。

Input 輸入的第一行是一個整數(shù)T(T < 1000),表示共有T組數(shù)據(jù)。
對于每組數(shù)據(jù),第一行有一個整數(shù)N,表示這組數(shù)據(jù)有N次查詢。接下來的每行表示一次查詢,每次查詢第一個數(shù)字代表是哪種詢問,詢問的格式詳見上文。
數(shù)據(jù)范圍:
0 < N <=100000, 0<A,B<=N 且 A<>B, X和Y都是整數(shù)且 0 <=X,Y<=10000 .
測試數(shù)據(jù)中98%的數(shù)據(jù)N不超過50。

Output 對于每組數(shù)據(jù),首先需要輸出單獨一行”Case #?:”,其中問號處應(yīng)填入當(dāng)前的數(shù)據(jù)組數(shù),組數(shù)從1開始計算。
對于每一個類型(1)或者(2)的詢問,請把它們加入到你的記錄中。
對于每一個類型(3)或者(4)的詢問,如果與之前記錄的內(nèi)容有矛盾,請輸出”REJECT”并將這個情報忽略掉,如沒有矛盾,請把它們加入到你的記錄中。
對于每一個類型(5)或者(6)的詢問,如果根據(jù)之前的記錄能推出結(jié)論,請輸出兩個整數(shù)X和Y,兩個整數(shù)之間有一個空格;如果不能推出結(jié)論,請輸出”UNKNOWN”。輸出的所有信息都不包括引號。

Sample Input 2 7 1 1 2 3 4 2 3 4 5 3 4 5 2 1 4 6 2 2 3 2 4 6 2 5 4 1 6 3 6 6 3 4 3 2 2 6 3 2 4 2 3 5 3 4 3 3 4 1 2
Sample Output Case #1: -9 -6 4 5 Case #2: UNKNOWN 2 2 0 -1 REJECT
思路:
? ? ? ?這個題目做了好久了,各種糾結(jié),原因是自己吧自己繞道圈子里面了,越繞越復(fù)雜
,看到這個題目直接就想到帶權(quán)并查集,這個毫無疑問,同時還想到1,2都是創(chuàng)建先的節(jié)點,但關(guān)鍵是在hash節(jié)點和判斷當(dāng)前這個集合時候是已知點的時候sb了,后來蒙了,當(dāng)時我是標記父親節(jié)點,每次要是有個點是已知的,那么就直接吧他的當(dāng)前父親節(jié)點標記上,結(jié)果各種wa,就這樣不知wa了多久,后來看了別人的處理方式,哎!真的是先想好在敲啊,思路直接敲有的時候會死的很慘的啊,對于1,2,是要建立新的節(jié)點的,其余的不用,對于已知的點,直接把他父親連接到0節(jié)點上,0節(jié)點就表示是已知的(可以是別的自己隨意),這樣寫的時候就簡單多了,對于hash點的時候,我是來一個hash一個,不來不用,具體看代碼。


#include<stdio.h>#define N 200000 int mer[N] ,X[N] ,Y[N] ,hash[N];int finds(int x) {if(x == mer[x]) return x;int t = mer[x];mer[x] = finds(mer[x]);X[x] += X[t];Y[x] += Y[t];return mer[x]; }int main () {int t ,n ,cas = 1;int key ,a ,b ,x ,y;scanf("%d" ,&t);while(t--){scanf("%d" ,&n);printf("Case #%d:\n" ,cas ++);for(int i = 0 ;i <= n * 2 ;i ++)mer[i] = i ,X[i] = Y[i] = 0 ,hash[i] = -1;int nown = 0;hash[0] = 0;while(n--){scanf("%d" ,&key);if(key == 1 || key == 2){if(key == 1) scanf("%d %d %d %d" ,&a ,&b ,&x ,&y);else {scanf("%d %d %d" ,&a ,&x ,&y);b = 0;}hash[a] = ++nown;if(hash[b] == -1) hash[b] = ++nown;int ra = finds(hash[a]) ,rb = finds(hash[b]);mer[ra] = rb;X[ra] = X[hash[b]] - X[hash[a]] + x;Y[ra] = Y[hash[b]] - Y[hash[a]] + y;}if(key == 3 || key == 4){if(key == 3)scanf("%d %d %d %d" ,&a ,&b ,&x ,&y);else{b = 0;scanf("%d %d %d" ,&a ,&x ,&y);}if(hash[a] == -1) hash[a] = ++nown;if(hash[b] == -1) hash[b] = ++nown;int ra = finds(hash[a]) ,rb = finds(hash[b]);if(ra == rb){if(X[hash[a]] - X[hash[b]] != x || Y[hash[a]] - Y[hash[b]] != y)printf("REJECT\n");}else {mer[ra] = rb;X[ra] = X[hash[b]] - X[hash[a]] + x;Y[ra] = Y[hash[b]] - Y[hash[a]] + y;}}if(key == 5 || key == 6){if(key == 5) scanf("%d %d" ,&a ,&b);else {scanf("%d" ,&a);b = 0;}if(hash[a] == -1) hash[a] = ++nown;if(hash[b] == -1) hash[b] = ++nown;int ra = finds(hash[a]) ,rb = finds(hash[b]);if(ra != rb) printf("UNKNOWN\n");else printf("%d %d\n" ,X[hash[a]] - X[hash[b]] ,Y[hash[a]] - Y[hash[b]]);}}}return 0; }
?


總結(jié)

以上是生活随笔為你收集整理的hdu4829 带权并查集(题目不错)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产又黄又粗又长 | 日韩一级免费片 | 天堂网视频 | 欧美精品第二页 | 理论av| 国产精品丝袜黑色高跟 | 好色先生视频污 | 免费av手机在线观看 | 日韩在线精品视频一区二区涩爱 | 99精品在线播放 | 久久久久久91亚洲精品中文字幕 | 柠檬av导航 | 97公开免费视频 | 婷婷丁香在线 | 在线免费av网 | 日本xxxx免费 | 亚洲国产日韩欧美一区二区三区 | 高h捆绑拘束调教小说 | www日本在线观看 | 国产精品久久久毛片 | www.youjizz.com国产| 性感少妇在线观看 | av在线激情 | 伊人网址 | 日本做爰全过程免费看 | 国内精品小视频 | 少妇高潮a一级 | 国产黄色片子 | 日本中文字幕有码 | 久久精品一区二区免费播放 | 久草综合网 | 久久亚洲AV无码 | 99精品欧美一区二区蜜桃免费 | 亚洲精品aaa | 桃谷绘里香在线播放 | 亚洲综合色一区二区 | 蜜桃av免费看 | 天堂а√在线最新版中文在线 | 黄色美女免费网站 | 男人视频网 | 一区二区三区视频网 | 一级视频在线观看 | 青青草原亚洲视频 | 99色图| 综合久久激情 | 高清久久久久久 | 色婷婷777 | 噜噜吧噜噜色 | 91免费视频网址 | 少妇av一区二区三区 | 国产一区二区免费在线 | 国产精品一线天粉嫩av | 成人夜色| 青青草污| 亚洲天堂影院在线观看 | 兔费看少妇性l交大片免费 日韩高清不卡 | missav | 免费高清av在线看 | 免费看国产一级片 | 性自由色xxxx免费视频 | 俺来也俺也啪www色 欧洲一区二区视频 | 人妻体内射精一区二区三区 | 一级黄色免费片 | 91片黄在线观 | 高清乱码毛片 | 性生活一级大片 | 黄色1级大片 | 欧美一区二区三区激情视频 | 国产精品1000部啪视频 | 刘玥91精选国产在线观看 | 人人草人人爽 | 日朝毛片 | 亚洲精品人人 | 在线看黄网站 | 91精品欧美一区二区三区 | 色久婷婷| 蜜桃成人无码区免费视频网站 | a级网站在线观看 | 美女黄色在线观看 | 免费成人深夜夜行网站视频 | 蜜桃在线一区二区三区 | 亚洲理论中文字幕 | 波波野结衣 | 成人午夜激情视频 | 国产成人一区二区三区影院在线 | 成年人福利网站 | 国产 中文 字幕 日韩 在线 | 俄罗斯黄色录像 | 中文字幕免费一区 | 久久精品无码毛片 | 一本一道久久 | 亚洲美女免费视频 | 日本一级大毛片a一 | wwwjavhd| 一级黄色片一级黄色片 | 天堂在线资源网 | 亚洲女同视频 | 天天5g天天爽免费观看 | 国产粉嫩白浆 | 被警察猛c猛男男男 |