青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜

MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋    

 

題目地址:

http://acm.hdu.edu.cn/showproblem.php?pid=1512

題目描述 :

代碼
Monkey King

Time Limit: 
10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 
914    Accepted Submission(s): 426


Problem Description
Once 
in a forest, there lived N aggressive monkeys. At the beginning, they each does things in its own way and none of them knows each other. But monkeys can't avoid quarrelling, and it only happens between two monkeys who does not know each other. And when it happens, both the two monkeys will invite the strongest friend of them, and duel. Of course, after the duel, the two monkeys and all of there friends knows each other, and the quarrel above will no longer happens between these monkeys even if they have ever conflicted.

Assume that every money has a strongness value, which will be reduced to only half of the original after a duel(that 
is10 will be reduced to 5 and 5 will be reduced to 2).

And we also assume that every monkey knows himself. That 
is, when he is the strongest one in all of his friends, he himself will go to duel.
 

Input
There are several test cases, and each 
case consists of two parts.

First part: The first line contains an integer N(N
<=100,000), which indicates the number of monkeys. And then N lines follows. There is one number on each line, indicating the strongness value of ith monkey(<=32768).

Second part: The first line contains an integer M(M
<=100,000), which indicates there are M conflicts happened. And then M lines follows, each line of which contains two integers x and y, indicating that there is a conflict between the Xth monkey and Yth.

 

Output
For each of the conflict, output 
-1 if the two monkeys know each other, otherwise output the strongness value of the strongest monkey in all friends of them after the duel.
 

Sample Input
5
20
16
10
10
4
5
2 3
3 4
3 5
4 5
1 5
 

Sample Output
8
5
5
-1
10
 

 

 

題目分析:

/*
Mail to   : miyubai@gamil.com
My Blog   : www.baiyun.me
Link      : http://www.cnblogs.com/MiYu  || http://m.shnenglu.com/MiYu
Author By : MiYu
Test      : 1
Complier  : g++ mingw32-3.4.2
Program   : HDU_1512
Doc Name  : Monkey King
    
    
題目意思: 

有N只猴子, 每只都有一個力量值. 開始的時候互不認識, 它們之間會發生M次斗爭. 每次發生a, b的斗爭時, a, b都會從各自的朋友圈里拉出一個最強的, 之后兩只猴子打, 打完后這兩只猴子的力量值各減半. 并且打完后, 兩只猴子的朋友圈的所有人都互相認識(也就是不會再打).

你的任務就是對于每個斗爭, 若a, b是朋友, 那么輸出-1, 否則輸出打完后它們的朋友圈的最強猴子的力量值.

 使用 普通 優先隊列的話 估計會超時, 因為數據量很大 100000 ! !, 等下有空試試看. 

對于每一個節點, 定義dis 表示X節點到最右邊的空節點的距離的最小值

對于每個節點X, 要求X的左兒子的dis >= 右兒子的dis, 那么容易發現, 對于N個節點的左偏樹, 其右兒子最多只有logN個節點.

合并操作就是讓復雜度落在右兒子上, 從而達到logN的合并復雜度.

首先對于兩個堆, 若其中一個為空, 返回另一個.

否則(這里以大根堆為例), a指向堆頂較大的堆, b指向另一個. 讓a的右兒子和b合并, 合并后的子樹作為a的右兒子.

接下來, 檢查a的兩個兒子是否滿足dis, 不滿足就交換兩個兒子.

最后, 更新a的dis.

這樣就容易實現堆的其他操作 ( 比如插入, 刪除頂等 ).

另外 還需要用到 并查集.    
    
    
*/
//#pragma warning( disable:4789 )
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <utility>
#include <queue>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
using namespace std;
const int MM = 100010;
struct left {
        int l,r,dis,val,dad;
} heap[MM];

int N, M;

inline int max ( const int &a, const int &b) {
       return a > b ? a : b;
}

inline int find ( int &x ) {
    return heap[x].dad == x ? x : heap[x].dad = find ( heap[x].dad );
}

inline void swap(int &a, int &b) {
     a ^= b ^= a ^= b;
}

inline int merge ( int x, int y ) {
    if ( x == 0 ) return y;
    if ( y == 0 ) return x;
    if ( heap[y].val > heap[x].val ) swap ( x, y );    
    heap[x].r = merge ( heap[x].r, y );
    heap[heap[x].r].dad = x;
    if ( heap[ heap[x].l ].dis < heap[ heap[x].r ].dis ) 
         swap ( heap[x].l, heap[x].r );
    if ( heap[x].r == 0 ) heap[x].dis = 0;
    else heap[x].dis = heap[ heap[x].r ].dis + 1;
    return x;
}

inline int push ( int x, int y ) {
       return merge ( x, y );       
}

inline int pop ( int &x ) {
       int l = heap[x].l; 
       int r = heap[x].r; 
       heap[l].dad = l;
       heap[r].dad = r;
       heap[x].l = heap[x].r = heap[x].dis = 0;   
       return merge ( l, r );  
}

inline bool scan_d(int &num) {
        char in;bool IsN=false;
        in=getchar();
        if(in==EOF) return false;
        while(in!='-'&&(in<'0'||in>'9')) in=getchar();
        if(in=='-'){ IsN=true;num=0;}
        else num=in-'0';
        while(in=getchar(),in>='0'&&in<='9'){
                num*=10,num+=in-'0';
        }
        if(IsN) num=-num;
        return true;
}

int main() {
    while ( scan_d ( N ) ) {
         for ( int i = 1; i <= N; ++ i ) {
              scan_d ( heap[i].val );
              heap[i].l = heap[i].r = heap[i].dis = 0;
              heap[i].dad = i;    
         }
         scan_d ( M );
         int a, b, x, y;
         while ( M -- ) {
                scan_d (a); scan_d (b);
                x = find ( a );
                y = find ( b ); 
                if ( x == y ) {
                    puts ( "-1" );     
                } else {
                    heap[x].val /= 2;
                    int xx = push ( pop ( x ), x );  
                    heap[y].val /= 2;
                    int yy = push ( pop ( y ), y );  
                    
                    printf ( "%d\n", heap[ merge ( xx, yy ) ].val );      
                }    
         } 
    }
    return 0;
}


 

 

 


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品韩国| 欧美激情在线狂野欧美精品| 99国产精品久久久久久久久久 | 亚洲色无码播放| 久久久999精品视频| 亚洲宅男天堂在线观看无病毒| 久久久久久久综合| 性久久久久久| 欧美午夜一区二区福利视频| 亚洲国产欧美日韩| 精品99一区二区三区| 亚洲专区国产精品| 亚洲欧美日韩直播| 欧美三级在线| 亚洲免费电影在线| 一级日韩一区在线观看| 欧美不卡视频一区| 欧美韩国日本一区| 亚洲国产日本| 牛牛影视久久网| 欧美成人一区二区| 亚洲欧洲日产国码二区| 久久亚洲二区| 亚洲大片在线| 日韩视频免费观看| 欧美美女福利视频| 亚洲免费观看| 亚洲欧美国产视频| 国产精品一区二区三区免费观看| 一区二区三区www| 亚洲欧美日韩国产中文| 国产精品男人爽免费视频1 | 久久国产一区二区三区| 久久美女性网| 亚洲国产高潮在线观看| 欧美福利一区| 一区二区91| 欧美一级网站| 一区二区三区在线免费观看| 久久躁狠狠躁夜夜爽| 亚洲大胆视频| 亚洲一二三区精品| 国产欧美日韩在线视频| 久久精品视频在线观看| 欧美激情精品久久久久久黑人| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美成人精品一区二区三区| 亚洲高清三级视频| 欧美日韩国产片| 亚洲欧美在线免费| 美日韩丰满少妇在线观看| 亚洲日韩欧美视频一区| 欧美午夜视频一区二区| 欧美一区二区三区播放老司机 | 久久久免费精品视频| 亚洲国产视频直播| 国产精品日韩在线| 久久久欧美一区二区| 亚洲黄网站在线观看| 欧美在线观看视频| 亚洲精品黄色| 国产情人节一区| 免费中文日韩| 亚洲在线播放| 亚洲精品乱码久久久久久久久 | 亚洲欧美在线x视频| 免费日本视频一区| 亚洲在线1234| 亚洲精品欧洲| 国户精品久久久久久久久久久不卡| 久久综合久久综合久久综合| 亚洲一区二区三区涩| 欧美高清视频一区| 久久精品五月婷婷| 在线视频亚洲| 亚洲国产高潮在线观看| 国产精品手机在线| 欧美日韩成人免费| 老司机免费视频一区二区| 亚洲少妇在线| 91久久久久久久久| 免费观看在线综合| 久久激情视频久久| 在线视频精品一| 亚洲欧洲日产国产综合网| 国产亚洲一区在线播放| 国产精品mm| 欧美日韩在线观看一区二区| 六月天综合网| 久久久久久伊人| 欧美在线看片a免费观看| 正在播放日韩| 999在线观看精品免费不卡网站| 亚洲电影免费在线| 欧美成人午夜激情视频| 久久久99爱| 欧美中文字幕视频| 亚洲欧美日韩天堂| 亚洲免费婷婷| 亚洲图片欧洲图片av| 正在播放亚洲| 一区二区三区产品免费精品久久75 | 欧美在线日韩在线| 欧美影院久久久| 性色一区二区三区| 性欧美暴力猛交69hd| 午夜精品久久久久久久白皮肤| 亚洲午夜羞羞片| 亚洲视频综合在线| 在线视频欧美精品| 亚洲午夜在线| 亚洲欧美精品伊人久久| 午夜精品久久久久久久男人的天堂 | 尤妮丝一区二区裸体视频| 黄色国产精品| 亚洲成在线观看| 亚洲精品一区在线| 这里只有精品丝袜| 亚洲一区在线视频| 香蕉亚洲视频| 久久九九国产精品| 欧美插天视频在线播放| 亚洲电影在线看| 99国产精品99久久久久久| 亚洲一区二区三区四区五区黄| 国产精品99久久久久久宅男 | 欧美日本在线观看| 国产精品xnxxcom| 国产日韩在线播放| 一区二区在线观看视频在线观看 | 日韩亚洲视频在线| 亚洲一二三区视频在线观看| 欧美伊久线香蕉线新在线| 久久综合久久综合九色| 欧美激情视频一区二区三区不卡| 亚洲精品国产精品国自产在线 | 欧美一区二区视频97| 久久蜜臀精品av| 亚洲国产美女久久久久| 在线一区免费观看| 久久这里有精品视频| 欧美视频观看一区| 精品电影一区| 亚洲图色在线| 免费欧美在线| 亚洲午夜一二三区视频| 免费精品99久久国产综合精品| 国产精品porn| 亚洲电影网站| 欧美一区视频在线| 91久久香蕉国产日韩欧美9色| 亚洲视频精品在线| 老司机一区二区三区| 国产精品国产自产拍高清av王其| 韩国成人精品a∨在线观看| 99视频超级精品| 老司机精品视频网站| 99视频超级精品| 久久婷婷国产综合精品青草| 欧美午夜视频在线观看| 亚洲高清一区二区三区| 亚洲欧美日韩精品久久亚洲区| 亚洲第一福利在线观看| 亚洲欧美制服另类日韩| 欧美日韩国产不卡在线看| 樱花yy私人影院亚洲| 午夜视频一区| 亚洲精品视频在线观看免费| 久久精品国产亚洲一区二区| 欧美午夜在线| 日韩视频在线观看国产| 欧美mv日韩mv国产网站| 久久国产高清| 国产日韩亚洲欧美精品| 亚洲欧美日韩区| 99国产精品久久久| 欧美区一区二| 日韩视频一区二区在线观看 | 欧美aa国产视频| 国产伊人精品| 午夜在线电影亚洲一区| 夜夜嗨av一区二区三区| 欧美精品自拍偷拍动漫精品| 在线欧美小视频| 久久综合狠狠综合久久综青草| 性欧美video另类hd性玩具| 国产精品午夜久久| 亚洲欧美日韩国产一区二区| 一区二区日韩精品| 欧美午夜视频在线| 亚洲女女做受ⅹxx高潮| 日韩视频在线一区二区三区| 欧美大片一区二区| 亚洲美女视频网| 亚洲精品小视频| 欧美日产一区二区三区在线观看| 99视频+国产日韩欧美| 亚洲日韩第九十九页| 欧美日韩国产三级| 亚洲一区二区精品视频|