廣東工業大學程式設計競賽決賽 tmk找三角

2022-06-01 20:36:12 字數 1214 閱讀 3223

提供了乙個演算法,判邊集s,o(|s|)找能存在構成三角形的3條邊(用了priority_queue,jp提供)

提供了找樹中節點路勁的方法o(h),就是找公共祖先,深度深的往上

用map陣列做到了即時訪問邊值o(logn)(雖然後來覺得可以存在節點上,改用vector+pair,優化成o(1)),並利用node.d做訪問標記,同時利用map[vi]迭代器來遍歷(vi,vw)

#include#include#include#include#include#includeusing namespace std;

const int mn=100000+5000;//father

mapvi[mn];

struct node;

node t[mn];

int cntt;

priority_queuelens;

const int root=1;

int node[mn];

void inp();//輸入

void bui(int ,int,int );//建樹

void tbui();//測試建樹

const char ans[10]=;

int n;

int que(int ,int );//查詢兩節點間初級路勁,並加入lens

void dea();//處理邊集lens

int main()

scanf("%d%d", &a,&b);

que(a,b);

//printf("%d %d -> %d \n",a,b,que(a,b));

dea();

} }// printf("%d",tcase);

}void dea()

int a,b,c;

while(lens.size()>=3)

lens.push(b),lens.push(c);

} printf("%s",ans[0]);

}int que(int a,int b)

else

} return a;

}void tbui()

}void bui(int d,int f,int cur)

}void inp()

for(int i = 0; i< n-1;i++)

// for(int i=1;i<=n;i++)

// }

}

廣東工業大學程式設計競賽決賽 C

小時候,我只能一階一階得爬樓梯,後來,我除了能一次爬一階,還可以一次爬兩階,到現在,我最多一次可以爬三階。那麼現在問題來了,我想爬上 n層樓,相鄰樓層之間有一段樓梯,雖然我一次可以爬 1個台階 2個台階和 3個台階,但是我在i與 i 1層之間的樓梯上時,我不能跨越到 i 1與 i 2層之間的樓梯。現...

2017廣東工業大學程式設計競賽決賽 E(倒水)

problem e 倒水 water description 一天,cc買了n個容量可以認為是無限大的瓶子,開始時每個瓶子裡有1公升水。接著 cc發現瓶子實在太多了,於是他決定保留不超過k個瓶子。每次他選擇兩個當前含水量相同的瓶子,把乙個瓶子的水全部倒進另乙個裡,然後把空瓶丟棄。不能丟棄有水的瓶子 ...

2017廣東工業大學程式設計競賽決賽 等凹數字

定義一種數字稱為等凹數字,即從高位到地位,每一位的數字先非遞增再非遞減,不能全部數字一樣,且該數是乙個回文數,即從左讀到右與從右讀到左是一樣的,僅形成乙個等凹峰,如 543212345 5544334455 是合法的等凹數字,543212346 123321,111111 不是等凹數字。現在問你 l...