演算法競賽入門經典(第八章)

2022-06-01 08:27:13 字數 2949 閱讀 1633

習題8-1 uva1149  11.8  

#include #include using namespace std;

int main()

sort(w+1, w+n+1);

l = 1 , r = n;

num = 0;

while(l<=r)

if(mi - w[l] >= 0) l++;

num++;

}cout《習題8-2 uva1610  11.8

#include #include #include #include #include using namespace std;

string qz(string a, string b)

for(int i = 0; i < len; i++) }

return a;

} int main()

} }cout《習題8-4 uva11491  11.8

#include #include #include #include #include using namespace std;

int main()

else

return;

}int main()

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

else

else

i--;}}

cout《習題8-7 uva11925  11.10

#include #include #include #include #include #include #include #include using namespace std;

vectornum;

bool pd(int n)

return false;

} int main()

while(pd(n))

dot[100005];

bool cmp(node a, node b)

sort(dot, dot+n, cmp);

int cur = 0;

int tmp = 1;

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

}cout《習題8-13 uva10570  11.10

#include #include #include #include #include using namespace std;

int tmp[1005];

int num[1005];

int cur[1005];

int n, m;

int main()

int ans = 1000;

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

for(int j = 1; j <= n; j++)

}if(key < ans) ans = key;

} cout《習題8-14 uva10570  11.10

#include #include #include #include #include using namespace std;

struct node

num[100005];

int n, m = 0;

bool cmp(node a, node b)

return true;

}int main()

sort(num+1, num+1+n, cmp);

int l = 0;

int r = m;

while(r - l != 1)

cout《習題8-21 uva1621  11.13  

/*感謝slo,提供的**,我菜是想了好久都沒想到好辦法,得到指點真是太好了

構造的題感覺和數學題目差不多了,都是要找一種方法來解決問題

這道題目就是先把3步的走完,然後在走1,2步的,牛逼啊

深受影響啊

*/#include #include #include #include using namespace std;

int ans[5005*3],n;

int main()

if((c+2)%3==0)

if(c%3==0)

} else

} }}int solve()

al = k;

tmp = ri[r];

k = 0;

for(int i = r; i > xr; i--)

ar = k;

return (xl+xr+1)*ml+min(ar,al);

} else if(ml > mr)

for(int i = 0; i < l; i++)

return k;

} else

for(int i = 0; i < r; i++)

return k;

} }int main()

num[1000005];

int link[100005];

int tmp[100005];

bool cmp(edge a, edge b)

} sort(num, num+mi, cmp);

for(int i = 1; i <= m; i++)

else

}if(flag || ni != mi) cout<<"no"《習題8-18 uva1619  11.20

#include #include #include #include using namespace std;

int li[100005];

int ri[100005];

int tmp[100005];

int sum[100005];

int main()

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

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

cout

}

演算法入門經典第八章學習筆記(上)

教學內容相關章節 8.1演算法分析初步 8.2再談排序與搜尋 8.3遞迴與分治 8.4貪心法 教學目標 加粗表示基本掌握 1 理解 基本操作 漸近時間複雜度的概念和大o記號的含義 2 掌握 最大連續和 問題的各種演算法及其時間複雜度分析 3 正確認識演算法分析的優點和侷限性,能正確使用分析結果 4 ...

演算法入門經典第八章學習筆記(中)

有乙個2 k 2 k個方格棋盤,恰有乙個方格是灰色的,其他為白色,你的任務是用包含3個方格的l型骨牌覆蓋所有白色方格。灰色方格不能被子覆蓋,且任意乙個白色方格不能同時被兩個或更多骨牌覆蓋。如圖8 3所示為l型骨牌 三格板 的4種旋轉方式。方法也是分治法,總牌數 4 k 1 3 劃分成下面 a 這樣,...

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...