Time of Update: 2018-12-05
將每一個分解為六個兩面的 簡單地dp 回溯輸出路徑.....#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;struct cc{ int top,bom,fa,w; void f(int a, int b, int c, int d) { top = a; bom =
Time of Update: 2018-12-05
求最長迴文串 就是將字串翻轉後求最長公子列.....#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>using namespace std;char str[1010];char re[1010];int f[1010][1010];int main(){ int t; scanf("%d",&t); getchar();
Time of Update: 2018-12-05
SkinLoad程式介面換膚工具作者:耿海增下載本文樣本工程 版本更新SkinLoad v0.3本文在VC知識庫連結說明:SkinLoad是一個給程式換膚的工具,通過幾個簡單的函數調用就可以給你的應用程式加上漂亮的皮膚,包括所有的系統對話方塊。通過SkinLoadMaker皮膚編輯工具,可以自己定製皮膚。介面如下:如何在程式中實現換膚:一、靜態連結動態庫需要三個檔案:"SkinLoadLib.h","SkinLoad.lib","SkinLoad.dll" 1、添加
Time of Update: 2018-12-05
總結:這章由僱傭問題引出了機率分析和隨機演算法。機率分析一般用於確定一些演算法的已耗用時間。而隨機化演算法用來強行使演算法的輸入符合某種機率分布,隨機化演算法的行為不僅由輸入決定,還要由一個隨機數產生器所產生的值來決定。 1. 機率分析可以利用指標隨機變數來進行機率分析,獲得事件發生的期望值。 引理:給定樣本空間S和S中的事件A,令XA=I{A},則E[XA]=Pr{A} 2.
Time of Update: 2018-12-05
題意:如果數列中沒有三個元素的子序列構成等差數列輸出yes 不然no標記每個數出現的位置 然後從0開始尋找三個元素的等差數列 如果這三個元素的位置滿足條件則原數列中存在等差數列#include<cstdio>#include<cstring>int n,num[10010];int main(){ int n; while(scanf("%d",&n) == 1 && n) { getchar();
Time of Update: 2018-12-05
dp 只有三個操作 當str[i] != str[j] 時 dp(i, j) = min(dp(i+1, j), dp(i+1, j-1), dp(i, j-1))#include <iostream>#include <cstdio>#include <cstring>#include <cstring>#include <algorithm>using namespace std;char str[1010];int f[1005
Time of Update: 2018-12-05
看了一下演算法導論,上面介紹了一種從數組中找第i小的數的方法, 對應書上的RANDOMIZED_SELECT,這種演算法在最壞情況下,複雜度為O(n^2),平均情況下,可以達到O(n)主要就是 對數組進行重新排列(類似於快排將數組按與一個數相比與之大還是小分開排),然後用遞迴找到第i小的數。 #include <iostream>using namespace std;const int N=10;int partition(int *, int,int);void
Time of Update: 2018-12-05
劉汝佳書上 143 歸併排序求逆序數對#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>using namespace std;int a[500010],b[500010];long long ans;void merge_sort(int *A, int x, int y, int *T){ if(
Time of Update: 2018-12-05
之前問的一個問題http://topic.csdn.net/u/20100430/16/3a815617-9d6f-4945-b15c-14dfecfe4b23.html?seed=1361273005&r=65129463#r_65129463 一開始覺得尋找中位元的方法已經很不錯了,後來又發現了一個更加簡單的方法,果然大家都很厲害呢,集思廣益,可以從大家這裡學到很多考慮問題的方法。 下面這些都是摘抄大家的回答,和我自己的實現。 題目:已知有一個數組Array[N],其中有一個元素在數
Time of Update: 2018-12-05
題目來源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1163 解題報告:難的DP不會做,先從簡單的入手~自底向上,f[k]儲存從底部到a[k]的所有可能路徑的和的最大值,那麼f[k]=a[k]+a[k]下兩個分支的f[]的最大值。 #include <iostream>using namespace std;int max(int a, int b){return a>b?a:b;}int main(){int N;cin
Time of Update: 2018-12-05
第十五章 動態規劃 總結:這一章通過裝配線調度問題和矩陣鏈乘法問題引出了動態規劃問題,並討論了最長公用子序列以及最優二叉尋找樹問題。 1. 動態規劃基礎動態規劃主要用於解決最佳化問題,它的步驟:1) 描述最優解結構2) 遞迴定義最優解的值3) 按自底向上的方式計算最優解的值4)
Time of Update: 2018-12-05
//轉自MFC開發指南,http://www.vchelp.net/ 在ListCtrl中進行排序 聞怡洋 wyy_cq@21cn.com http://www.vchelp.net/ 清單控制項(CListCtrl)的頂部有一排按鈕,使用者可以通過選擇不同的列來對記錄進行排序。但是
Time of Update: 2018-12-05
第十六章 貪心演算法 總結:這一章通過作用選取範圍問題引出貪心演算法,講了貪心策略的基本思想,並介紹了用了貪心策略的赫夫曼編碼。 1. 貪心策略的基本思想對有些最佳化問題可以使用貪心演算法來解決,貪心演算法期望通過所做的局部最優選擇來產生出一個全域最優解。但並不是所有最佳化問題都可通過貪心演算法來解決的。貪心演算法的步驟:1) 將最佳化問題轉化成這樣的一個問題,即先做出選擇,再解決剩下的一個子問題。2) 證明原問題總是有有一個最優解是做貪心選擇得到的,從而說明貪心選擇的安全。3)
Time of Update: 2018-12-05
簡單並查集 水水.....#include <cstdio>#include <cstring>#define maxn 30005int fa[maxn],ans[maxn],n,m;int findd( int x ){ return fa[x] == x ? x : fa[x] = findd(fa[x]);}int main(){ int t; scanf("%d", &t); while(t--) {
Time of Update: 2018-12-05
內部變數、靜態內部變數、靜態外部變數、外部變數總結: 變數有作用範圍和生命週期兩個屬性。 內部變數,是定義在函數內部(或語句塊)的變數,其儲存在棧上,在運行該函數時才分配儲存空間,作用範圍在本函數(或語句塊)內,生命週期從該變數定義處到本函數(或語句塊)結束。 靜態內部變數,定義在函數內部的靜態變數,不是儲存在棧上,在編譯時間分配儲存空間。作用範圍是在本函數內,但生命週期為從程式執行開始到程式結束為止,每次進入該函數,靜態變數的值都為上一次的值。 靜態外部變數,定義在所有語句塊外的靜態變數,不是
Time of Update: 2018-12-05
這個圖n多人都知道,它對排除和定位網路或系統故障時大有協助,但是怎樣牢牢地將這張圖刻在腦中呢?那麼你就一定要對這張圖的每一個狀態,及轉換的過程有深刻地認識,不能只停留在一知半解之中。下面對這張圖的11種狀態詳細解釋一下,以便加強記憶!不過在這之前,先回顧一下TCP建立串連的三向交握過程,以及關閉串連的四次握手過程。1、建立連線協定(三向交握)(1)用戶端發送一個帶SYN標誌的TCP報文到伺服器。這是三向交握過程中的報文1。(2)
Time of Update: 2018-12-05
計算所有點之間的權值 然後就是最小產生樹 #include<cstring>#include<string>#include<cstdio>#include<algorithm>#include<cmath>#include<map>#include<deque>using namespace std;struct point{ double x,y;};struct edge{ int u,v;
Time of Update: 2018-12-05
使用標準I/O函數庫的好處: 通常檔案I/O分為兩種,一種是由作業系統的檔案I/O,另一種是標準的檔案I/O。 由作業系統提供的基本I/O會影響程式的可移植性,因為不同的作業系統提供的檔案I/O是不同的,比如:MS DOS提供的檔案I/O是用組合語言寫的,而unix/linux提供的檔案I/O是用C語言寫的。所以在unix/linux上寫的程式到MS
Time of Update: 2018-12-05
題目來源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1836 解題報告: 設各個成員的身高的數組為h[0...n-1],n為總人數。要滿足題目條件,對0<=i<n,不妨設d[i]代表h[i]左邊滿足條件(即身高遞增)的排列中可以安排的最多的人數,p[i]代表h[i]右邊滿足條件(即身高遞減)的排列中可以安排的最多的人數。 則有遞推式:d[i]=max(d[k1]+1, d[k2]+1, ...., d[kt]+1),其中kj<i,
Time of Update: 2018-12-05
題目來源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1050 解題報告:這道題是求二維子數組之和的最大值,詳細的解釋在編程之美2.15節有講過,我的演算法就是編程之美上提到的。 演算法思路主要就是枚舉行,設b[i][j]代表第j列中前i行的資料之和。那麼,第m行到第n行間的第j列資料之和就是b[m][j]-b[n-1][j]。這樣按行枚舉後,題目就轉化為求一維子數組之和的最大值,這裡的一維子數組就是行間的各個列的資料之和所組成的數組。 #inc