Time of Update: 2018-12-04
裸的劃分樹,直接上代碼了。如果不懂劃分樹:http://blog.csdn.net/shiqi_614/article/details/8041390#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define MID(a,b) (a+((b-a)>>1))typedef long long
Time of Update: 2018-12-04
//***********************************BinaryTree.h********************************************//此代碼只實現了二叉樹先序遍曆的遞迴以及非遞迴演算法,再就是層次遍曆演算法#include <iostream>#include <stack>
Time of Update: 2018-12-04
(本人是使用的PHP指令碼語言,配合apache伺服器操作,如果大家用jsp或者asp,.net等,或者不用apache,就可以基本忽略如下詳細內容。。。。。。) 昨天花了大半天時間去實驗如何讓PHP調用sybase的介面操作資料庫,Sybase真是夠噁心的,我和“大師”先後試了用擴充模組的方式(無法被appche伺服器載入)、ODBC方式(連上了,但是操作不了,增刪改查都有問題),ADO方式(也是不好用,對象集有點複雜)。一般串連資料庫只有這三個方式,最簡單的當屬用擴充模組的方式,
Time of Update: 2018-12-04
思路:dp(1):dp[N][M]表示取N個後剩下M個的機率;(2):利用N很大時的收斂性: if(N>1000) N=1000+N%2;狀態轉移方程:dp[N+1][M+1]=dp[N][M]*(C-M)/C; if(M+1<=C)dp[N+1][M-1]=dp[N][M]*M/C; if(M-1>=0)dp[N][M]=0; if((N+M)%2!=0) CODE:/*DP+機率*//*
Time of Update: 2018-12-04
題目大意:給你一幅圖,上面有一些“街道”和“標記邊”組成。問你某兩點之間的最短路徑。(“標記邊”用來規定“街道”的方向)。 街道:表示兩點之間有邊相連。標記邊:標記邊的一端懸空,令一端和一條道路相交(相交一定在中間,不會在道路端點處)。標記規則:假設街道的向量為(a,b);標記邊的向量為(c,d).且c線上段[a,b]上。如果向量(a,b)於向量(c,d)的夾角<=90,則<a,b>方向不可行。反之<a,b>方向可行。 注意:(1):一條標記邊有且且僅標記一條街道。
Time of Update: 2018-12-04
//---------------------------------------ClassArrList.h-------------------------------------------------- template <class T>class arrList{ // 順序表,向量private: // 線性表的取實值型別和取值空間
Time of Update: 2018-12-04
>Qt的meta-object system提供了signals-slots的機制; 它可以可以進行對象間通訊, 支援運行時類型的資訊和動態屬性dynamic properties系統;基於3個方面 1) QObject類 - 為所有能利用meta-object system的對象提供一個基類;2) Q_OBJECT宏 - 放在類聲明的private部分, 可以使類能使用meta-object的特性, 比如動態屬性, signals-slots;3) moc(Meta-Object Com
Time of Update: 2018-12-04
題意:有 n 個人,可任意分成若干組,然後每個人各提供一個資訊,表示他們組前面有多少個人,後面有多少個人。問最多有多少個資訊是不衝突的。可以用DP,也可以轉化成求最長路。DP,設這n個人的編號是從1到n,則每個的提供的資訊可以轉化成一段區間[a+1,n-b]。那麼問題就可以轉化成有最多有多少個區間是互不相交的。將區間按終點排序後跑DP。dp[i]=max(dp[j]+num[i]) (0<=j<i)。其中num[j]表示這個區間i出現的次數。最長路,同樣是轉化成區間[a+1,n-b]
Time of Update: 2018-12-04
字串DP dp[i][j]表示在區間i j範圍內構成迴文的最小花費應為刪除一個字元和添加一個字元時等價的,所以考慮最小的一種即可如果當前匹配的兩個字元相等,即str[i] == str[j] 那麼dp[i][j] = dp[i+1][j-1](顯而易見)如果不等則把左邊添加刪除一個右邊的值 或者在右邊添加刪除一個左邊的值 ,取一個最小的即可 CODE:/*DP*//*注意:插入和刪除是等效的,去較小的一個即可*//*AC代碼:79ms*/#include <iostream>#
Time of Update: 2018-12-04
題意:Ax+By=C;求一組解x,y使abs(x)+abs(y)最小,若abs(x)+abs(y)相等,則使(A*abs(x)+B*abs(y))最小 解法:在有解的情況下先得到一組解使x為最小正數,然後分別向上和向下枚舉直到x,y異號停止,中間不停更新答案。每次x-dx則y+dy CODE:/*擴充歐幾裡德*//*AC代碼:0ms*/#include <iostream>#include <cstdio>#include
Time of Update: 2018-12-04
//------------------------------------------ClassLinkList.h------------------------------------------template <class T> class linkList;template <class T>class Link{friend class linkList<T>;private: T data;
Time of Update: 2018-12-04
今天給Outlook做了一個根據郵件的Subjects移動郵件到指定檔案夾的小東西。剛開始使用C#,對於很多東西也是現用現學,再寫自己的Outlook類的時候直接使用了VS自動產生的一些代碼(類聲明),結果編譯的時候除了問題: Error 1 Inconsistent accessibility: property type 'MoveMailBasedOnName.Outlook' is less accessible than property 'MoveMailBasedOnName.
Time of Update: 2018-12-04
題目大意:一共有p1+p2個人,分成兩組,一組p1,一組p2。給出N個條件,格式如下:x y yes表示x和y分到同一組x y
Time of Update: 2018-12-04
Polya定理:設G={a1,a2,...,a|G|}是N={1,2,...,N}上的置換群,現用m種顏色對這N個點染色,則不同的染色方案數為S=(mc1+mc2+...+mc|G|)/|G| 旋轉:n個點順時針(或逆時針)旋轉i個位置的置換,輪換個數為gcd(n,i)翻轉:n為偶數且對稱軸不過頂點:輪換個數為n/2n為偶數且對稱軸過頂點:輪換個數為n/2+1n為奇數:輪換個數為(n+1)/2 CODE:/*Polya定理*//*置換群:旋轉+翻轉*//*AC代碼:0ms*/#include &
Time of Update: 2018-12-04
題意:給你n個數,m個查詢,對於每個查詢,問在區間[a,b]內找到一個數x,使得最小。同樣是劃分樹,只是多記錄了一個sum域,表示進入左子樹的數的和。如果不懂劃分樹:http://blog.csdn.net/shiqi_614/article/details/8041390#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using
Time of Update: 2018-12-04
//---------------------------arrStack.h-----------------------------------template <class T> class arrStack{private: // 棧的順序儲存int mSize; // 棧中最多可存放的元素個數int top;
Time of Update: 2018-12-04
高手給的訓練計劃 一般要做到50行以內的程式不用調試、100行以內的二分鐘內調試成功.acm主要是考演算法的,主要時間是花在思考演算法上,不是花在寫程式與debug上。下面給個計劃你練練:第一階段:練經典常用演算法,下面的每個演算法給我打上十到二十遍,同時自己精簡代碼,因為太常用,所以要練到寫時不用想,10-15分鐘內打完,甚至關掉顯示器都可以把程式打出來.1.最短路(Floyd、Dijstra,BellmanFord)2.最小產生樹(先寫個prim,kruscal要用並查集,不好寫)3.大數(
Time of Update: 2018-12-04
題意:平面上有N個點,每個點u可以向其他v連邊,只要點u的y座標大於點v的y座標,要求將這些點連成一棵二叉樹,即樹中的每個節點最多連出去兩條邊,問連成的二叉樹的邊權和最小為多少。二分圖的最小費用流,每個點拆成出點和入點,由超級源點到所有的入點建容量為2,費用為0的邊,由所有的出點到超級匯點建容量為1,費用為0的邊,當點u可以向點v連邊的時候,將點u的入點向點v的出點連容量為1,費用為距離的邊。最後判斷如果流量不為n-1,那麼就輸出-1,否則輸出最小費用。#include <stdio.h&
Time of Update: 2018-12-04
題意:兩個六邊形,第一個六邊形由前6個字元表示,後一個六邊形由後6個字元表示。問第一個六邊形與第二個六邊形是否相同(可以旋轉)。(位置的編號見題目)把每個面旋轉到第一個面,然後第一個面與它對應的面不動再進行四次旋轉,判斷。#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=20;char str[N],str1[N],str2[N];int
Time of Update: 2018-12-04
*************************************************SparseMatrix.h***********************************************#include <iostream>using namespace std;const int maxNum=100;template <class T>class Trituple{public:int row;int col;T