今天整理最近的考試題
發現乙個東西叫做優先佇列
priority_queue(說白了就是大根堆)
但是我對堆的了解還是很少的
所以我決定手寫乙個堆
於是我寫了乙個簡單的堆
手寫的堆說白了就是個二叉樹
能不更新維護的二叉樹,每次維護的時間為logn
但是各種查詢(empty,top什麼的)時間為1;
感覺這個堆還寫的像模像樣
於是興沖沖的去ac特別簡單題合併果子
沒a;改了好久才ac
現在貼一下這個**
來,上**:
#includeusingnamespace
std;
int heap[200000],num,jkl,cur,n,ans=0
;char
ch;void swap(int &a,int &b)//
交換函式
void qread(int &x)//
讀入優化
while(ch>='
0'&&ch<='9')
x*=jkl;
}void heap_up(int now)//
向上維護(新增元素時)
}void heap_push(int kol)//
新增元素同時維護
void heap_down(int now)//
向下維護(刪除元素時)
else
}else}}
else
}}void heap_pop()//
刪除元素
int heap_top()//
查詢堆頂元素
bool heap_empty()//
查詢是否為空
intmain()
for(int i=1;i)
printf(
"%d\n
",ans);
return0;
}
AC日記 單詞翻轉 1 7 27
總時間限制 1000ms 記憶體限制 65536kb 描述輸入乙個句子 一行 將句子中的每乙個單詞翻轉後輸出。輸入只有一行,為乙個字串,不超過500個字元。單詞之間以空格隔開。輸出翻轉每乙個單詞後的字串,單詞之間的空格需與原文一致。樣例輸入 hello world樣例輸出 olleh dlrow 思...
AC日記 單詞替換 1 7 21
總時間限制 1000ms 記憶體限制 65536kb 描述輸入乙個字串,以回車結束 字串長度 100 該字串由若干個單詞組成,單詞之間用乙個空格隔開,所有單詞區分大小寫。現需要將其中的某個單詞替換成另乙個單詞,並輸出替換之後的字串。輸入輸入包括3行,第1行是包含多個單詞的字串 s 第2行是待替換的單...
AC日記 猴子 cogs 2043
輸入檔案 monkeya.in輸出檔案 monkeya.out簡單對比 時間限制 1 s 記憶體限制 256 mb 有n只猴子,第一只尾巴掛在樹上,剩下的n 1只,要麼被其他的猴子抓住,要麼抓住了其他的猴子,要麼兩者均有。當然乙隻猴子最多抓兩隻另外的猴子,因為只有兩隻猴爪子嘛。現在給出這n只猴子抓與...