Time of Update: 2018-12-03
#include <iostream>#include <algorithm>#include <string.h>using namespace std;struct tim{int b;int e;};bool v_sort(tim a, tim b){return a.b<b.b?true:false;}int max(int a, int b){return a>b?a:b;}int main(){tim arr[101];int
Time of Update: 2018-12-03
#include <stdio.h>#include <stdlib.h> //從n個元素的數組a中,取m個元素的組合bool zuhe(int a[],int n,int m){//p[x]=y 取到的第x個元素,是a中的第y個元素 int index,i,*p; p=(int*)malloc(sizeof(int)*m); if(p==NULL) return false; index=0;
Time of Update: 2018-12-03
首先我們來講三塔問題。遞推公式是f(n) = 2f(n-1)+1首先我們來講下這個式子是怎麼推出來的。 我們要把第一個塔上的盤子全部移動到最後一個塔上面。假設有n個盤子。那麼,就需要先把n-1個盤子移動到第二個塔上面,然後把最大的一個盤子移動到第3個塔上面。最後再把n-1個盤子移動到第三個塔上面。 所以這樣就得出了f(n) = f(n-1) + 1 + f(n-1)也就是f(n) =
Time of Update: 2018-12-03
簡單形式:若n+1個物體放進n個盒子,那麼至少有一個盒子包含兩個或更多的物體。應用:給定m個整數A1,A2,...,Am,存在整數k和l, 0 <= k < l <= m,使得Ak+1 + Ak+2 + ... + Al能夠被m整除。即在A1,A2,。。。,Am中存在連續個a,這些a的和能夠被m整除。即在序列A1,A2,......Am中存在連續個a的和能被m整除。解:考慮m個和A1,A1+A2,A1+A2+A3,。。。。
Time of Update: 2018-12-03
這次是用Folye演算法實現的。發現由於使用Folye求多點最短路只要調用一次函數。如果用Dijkstra求則要多次調用函數,初始化數組,會使程式已耗用時間變長。所以說,求多點最短路,最好還是使用Folye演算法。#include <iostream>using namespace std;#define NUMOFPOINT 301#define INFINITE 99999999void Folye(int Way[][NUMOFPOINT], int n){int i,j,k;
Time of Update: 2018-12-03
#include <cstdio>#include <iostream>#include <vector>#include <cmath>#include <cstring>#include <cstdlib>using namespace std;struct node { int l, v; node(int vv = 0, int ll = 0): l(ll), v(vv) {
Time of Update: 2018-12-03
一、tcpdump簡明用法Usage: tcpdump [-adeflnNOpqRStuvxX] [ -c count ] [ -C file_size ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -T type ] [ -U user ] [ -w file ] [ -E algo:secret ] [ expression ]-c 捕獲指定數量的報文 -
Time of Update: 2018-12-03
DP,最大子矩陣和:先按列壓縮為一維i,如將每一列從左至右遞加至一個一位元組,再用最大連續子序列和來求。/*最大子矩陣和,先壓縮為一維再求最大子序列和,時間複雜度O(n^3)*/#include <cstdio>#include <cstring>#define N 1100#define INF 0x3f3f3f3fint a[N][N],s[N],n;void get_sum(int x ,int y){ for(int i=0; i<n; i++)
Time of Update: 2018-12-03
1259. Sum of Consecutive PrimesDescriptionSome positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representations does a given positive integer have? For example, the integer 53 has two
Time of Update: 2018-12-03
首先用 字串最小(大)標記法 解決第一個問題然後用 KMP求迴圈節 解決第二個問題 #include <cstdio>#include <cstring>#define NUM 1000005void getnext(char str[],int next[]){ next[0] = -1; int i=0; int j=-1;int len = strlen(str); while (i<len) { if (j==-1
Time of Update: 2018-12-03
給定一個數組,求M連續的和的最大值。用到的資料結構是單調隊列。#include <cstdio>#include <deque>using namespace std;struct Node { int value, index;}; //儲存每個元素的數值和下標int main(){ int m; scanf("%d", &m); Node node;
Time of Update: 2018-12-03
重寫做大流。。。。雖然以前做過了,,,但是又複習了一遍。在做的過程中,Flow數組意外的改變了(程式中沒有改變它),弄的我很鬱悶。後來想到了一種調試方法。由於出錯的地方是在n次迴圈之後,要想單步調試會死人的。VC又沒有提供記憶體資料下斷點的功能。(OD就好很多) 所以我們只能手動在程式中添加__asm int 3來作為斷點。比如出錯地方是在i迴圈100次的時候,那麼我們就這樣寫if(i == 99){ __asm int
Time of Update: 2018-12-03
最長公用遞增子序列O(n^2)模板——ZOJ2432解題報告- - ZOJ2432——最長公用遞增子序列 WA*2 AC*4 // 時間複雜度 O(n^2), 空間複雜度 O(n^2)/* l1為a的大小, l2為b的大小 結果在ans中 f記錄路徑,DP記錄長度
Time of Update: 2018-12-03
一開始掃描數組,時間複雜度O(n),然後找最大值用max_element,時間複雜度O(mlogm),總的時間複雜度O(nmlogm),直接TLE2,後來上網查到要用線段樹或者單調隊列才能過,學一下單調隊列。http://wenku.baidu.com/view/f88397a50029bd64783e2c5c.html一個挺好的單調隊列的課件,有助於理解。單調對列:單調隊列是特殊的雙端隊列,元素是單調遞減或者單調遞增的,並且元素下標是單調遞增的。(單調隊列需要兩端刪除,隊尾插入)常用操作:(1
Time of Update: 2018-12-03
上次學習到了利用Fibonacci恒等式在log(n)時間內計算出F(n)的方法。這種方法也適用於任何常係數線性齊次遞推數列的計算。在這裡把能想到的東西小結一下。例一:擴充Euclid演算法。兩個整數a,b的最高公因數為gcd(a,b)。擴充Euclid演算法在計算出gcd(a,b)的同時計算出gcd(a,b)=sa+tb中的係數s,t。因為:這樣,只要計算出中間那些矩陣的乘積,就很容易計算出係數s,t。其妙處就在於將(a,b)和(b,r1)通過矩陣聯絡起來。例二:Fibonacci數。F(n)
Time of Update: 2018-12-03
1031. CampusDescriptionAt present, Zhongshan University has 4 campuses with a total area of 6.17 square kilometers sitting respectively on both sides of the Pearl River or facing the South China Sea. The Guangzhou South Campus covers an area of 1.17
Time of Update: 2018-12-03
Description棧是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後一個進棧的資料被第一個讀出來)給出兩個字串s1和s2,請判斷s1能否通過棧的類比(即進棧和出棧)得到s2?Input輸入有多組測試資料,每組輸入佔兩行,s1和s2各佔一行。為了簡化問題,s1和s2保證僅由小寫字母組成,不會出現其它字元;s1和s2等長,且長度不大於100;s2是s1的一種排列,不會在s2中出現s1裡沒有的字元
Time of Update: 2018-12-03
"學動態規劃要從經典問題開始" --By lrj 答應了小Q要寫這個的.......哎...... 先說那個什麼01背包..... 為什麼叫背包呢?因為這些問題的原型是說有很多東西,每個東西都有體積,也有價值,你要去春遊,要選一些東西放到背包裡.問題是要怎麼選才能在總體積不超過背包的體積的前提下,讓總價值最大.
Time of Update: 2018-12-03
此題就是求合格數。首先要打出10000以內的素數表。 為什麼是10000以內??應為根據題目條件,我們只需要 n考慮大於10000的某個質數,不妨設為Q,另一個質數為P,則: n如果P<10,P/Q<0.001 n如果P>10,P*Q>100000 n而考慮到a,b的取值範圍(1<=a<=b<=1000) n可知min(a/b)=0.001 n同時,要求: p*q<=m<=100000 n所以無論如何質數都不能超過10000
Time of Update: 2018-12-03
動態規劃是用空間換時間的一種方法的抽象。其關鍵是發現子問題和記錄其結果。然後利用這些結果減輕運算量。比如01背包問題。/* 一個旅行者有一個最多能用M公斤的背包,現在有N件物品,它們的重量分別是W1,W2,...,Wn,它們的價值分別為P1,P2,...,Pn.若每種物品只有一件求旅行者能獲得最大總價值。輸入格式:M,NW1,P1W2,P2......輸出格式: X