鋪石板,輸入n x m的廣場,和a x a的石板,求最少需要多少石板?
/*
演算法思想:沒啥。。。。
理解向上取整就行
*/num=
((n+a-1)
/a)*
((m+a-1)
/a);
用的0-1揹包
找鋪水管一共有多少種鋪法?
//演算法思想:dfs
#include
#include
int n,m;
char maze[
105]
[105];
int vis[
105]
[105];
int sum=0;
int dx[4]
=;int dy[4]
=;void
dfs(
int x,
int y)
if(x<
0||x>=n||y<
0||y>=m)
return;if
(vis[x]
[y]==1)
return
;for
(int i=
0;i<
4;i++)}
intmain()
}printf
("%d\n"
,sum)
;return0;
}
將n個村莊連線起來(可以是間接連線),求最低成本
/*
演算法思想:建立最小生成樹,用prim或者克魯斯卡爾演算法
自己的問題:不知道如何使用,對於圖的演算法,還有資料結構形式,不是很熟悉
*/int
getroot
(int a,
int set)
intlowcost
(road road)
//本演算法返回最小花費
}/*假設函式sort()已經定義,即對road中的m條道路按照花費進行遞增排序*/
sort
(road,m)
;/*下面這個迴圈從road陣列中逐個挑出應修的道路*/
for(i=
0;ireturn min;
//返回最小花費
}
從陣列l[1…n]中找到第k小數值
/*
演算法思想:在進行快速排序的過程中,每輪遍歷,之後,對於樞軸元素進行判斷
這種思想很新,自己要學會掌握。主要對於題目如果有要求,時間複雜度要盡可能低的時候。
*/int
kth_elem
(int a,
int low,
int high,
int k)
a[low]
=pivot;
//上面即為快速排序中的劃分演算法
//以下就是本演算法思想中所述的內容
if(low==k)
//由於與k相同,直接返回pivot元素
return a[low]
;else
if(low>k)
//在前一部分表中遞迴尋找
return
kth_elem
(a,low_temp,low-
1,k)
;else
//在後部分表中遞迴尋找
return
kth_elem
(a,low,high_temp,k-low)
;}
求二叉樹的高度
/*
演算法思想:
1、遞迴
2、層次遍歷的時候
*///方法一:採用遞迴的手段來做
intheight
(bitree bt)
//求二叉樹bt的深度
}
//方法二:採用層次遍歷來做
intbtdepth
(bitree t)
//採用層次遍歷的非遞迴方法求解二叉樹的高度
}}
GDOI第三輪模擬總結
t1沒有想到乙個性質 插入點的父親是它的前驅和後繼中深度較大的那個。然後感覺十分不可做啊,於是就是打了個模擬spaly,結果有個地方忘記update。t2思路再在一次陷在莫隊中,以為資料會有梯度,就直接上了,一番卡常之後,還是只有暴力分。t3沒有什麼思路,就棄了。t4,30分暴力也需要計算幾何基礎,...
GDSOI2017第三輪模擬4 21 總結
第一題看著就覺得獵奇,於是就想著打暴力就跑。但是很嚴重的問題就是。d 和 b 打反了,都不知道當時在幹什麼?原本可以拿35。第二題看著就覺得套路,於是想著今天就攻這題。但是很嚴重的問題就是。發現了ban的區間是dfs序上的一段後,就開始yy套路,結果居然想著線段樹合併。而且還把決策單調性推錯了。事實...
JSTSC2015第三輪省隊選拔賽 後記
結束了啊.並不知道該寫些什麼才好 最終還是沒進隊.差了5分.10個人.然後thu和pku的初審也沒有過.果然沒進隊沒人權 好在是有d了 省選犯了不知道多少錯誤不過去後悔也沒用了 總之這幾天稍微休息一下吧 兩天的考試第一天t3把檔案注釋掉了。最後發現結果忘記重新打包.不過也就30分 看到第二題的時候我...