Ural_1119. Metro(DP)

  /*dp很明顯,參見吳文虎老先生的《程式設計基礎》。不過這道題卡記憶體,直接開1000*1000的數組會超的。然後看到Discuss裡有人說dp[2][1000]就可以,然後就按著這個思路寫。if(diagonally[i-1][j-1])  dp[1][j] = min (min (dp[0][j], dp[1][j-1]) + 100, dp[0][j-1] + 100*sqrt(2.0));else  dp[1][j] = min(dp[0][j], dp[1][j-1]) + 100

HDU_2795 Billboard(線段樹)

  /*題意:輸出每次貼上的海報所在的行號,行號為1...h;開始拿到這題沒思路,後來問了問本校的大牛,終於找到思路。這題是按high建樹,結構體中定義一個len變數,存放當前該結點的空閑長度。某結點的父結點存放其子結點的最大空閑長度值;比如(len = 10): 1 len = max(len2,len3) /   \

HDU_1760 A New Tetris Game(dfs + 博弈)

  用dfs搜尋每種情況所對應的sg值(這裡也就是對應的是N位還是P位),若下一步為P位,則當前一步為N位。。。代碼:#include <iostream>#include <cstdio>using namespace std;const int N = 55;char map[N][N];int m, n;int judge(int i, int j){if(map[i][j] == '0' && map[i][j+1] == '0'

HDU_2069 Coin Change(產生函數)

  沒有看到Your program should be able to handle up to 100 coins. WA了n次。。。處理起來有點麻煩,看到大牛的思路是開一個二維數組c[i][j],表示用j個硬幣組成大小為i的數。把j限定在100以下(有點dp的感覺,呵呵)。就可以了。詳見代碼:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const

HDU_2544 最短路(Dijkstra)

很裸的最短路徑問題,這裡用Dijkstra做的,前邊已經寫過Floyd和SPFA演算法SPFA:http://www.cnblogs.com/vongang/archive/2011/08/16/2141334.htmlFloyd:http://www.cnblogs.com/vongang/archive/2011/08/16/2141019.htmlMy Code:#include <iostream>#include <cstring>#include

ZOJ_3501 Roman Order

  這題應該是個水題,可是我比題還水。。。TT,用map寫的,存對應的roma數字時存錯啦。。。正好在比賽,我暈,WA了兩次,我的排名啊。。。TT#include <iostream>#include <cstdio>#include <cstdlib>#include <map>using namespace std;map<int, string> m;struct roma{int x;string s;}roma[10010];

Ural_1026.Ministy (DP)

  /*昨天看這題,沒思路。今天開始做這題,WA到爆了!NND, 把M和N的大小整反了。一遍一遍的盯著我的程式看,蒼天啊!浪費生命啊!思路:  轉移方程:dp[i][j] = min(dp[i-1][j], dp[i][j+1], dp[i][j-1]) + a[i][j];然後把j從前往後,和從後往前分別走一遍。(只一遍的話實現不了轉移方程)另外開一個數組記錄到達(i, j),這個位置時過來的方向。最後順著過來的方向,入隊列,輸出。我是直接從後往前推的,輸出方便。*///My

HDU_1171 Big Event in HDU(產生函數)

  比1085多了一些變化,見代碼。My Code:#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 250007;struct node {int val;int num;} a[55];int c1[N], c2[N];int main() {//freopen("data.in", "r", stdin);int n, i, j,

鄰接表的兩種實現(鏈表和數組類比)

鏈表實現:struct node{int v; //邊的結束頂點int w; //邊的長度 node* next; //指向以同一起點的下一條邊的指標}*first[N]; //first[u]指向以u為起始點的第一條邊void init(){ memset(first,NULL,sizeof(first));}void add(int u, int v, int w)//添加邊{ node* p =new node; p->v = v; p->w = w;

Ural_1036. Lucky Tickets(DP + 高精度)

  糾結的高精度,終於拿下了。。。轉移方程很簡單 dp[i][j] = dp[i-1][j-k] {k| 0, 1, 2 .... , 9},高精度整了一下午。悲劇,各種wa。。。重新敲了一遍,終於過了。#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 550;const int M = 50;const int inf = 10000

Ural_1146. Maximum Sum (DP)

  /*題意是求最大子矩陣,表示線代沒學好,好在不影響這道題。這題的主要思路就是二維化成一維。把二維數組前一列的元素累加到後邊一列上,例如: 0 -2 -7 0 9 2 -6 2-4 1 -4 1-1 8 0 -2處理後就是:0 -2 -9 -99 11 5 7-4 -3 -7 -6-1 7 7 5然後就是dp[i][j] = max(dp[i][j-1], 0) + sum[j];My Code:*/#include

HDU_1711 Number Sequence(KMP)

第一道kmp的題目,沒想到糾結在上邊這麼多時間,也不知道哪錯了,反正改著改著就對了。。。#include <iostream>#include <cstdio>using namespace std;const int maxn = 1000000;const int maxm = 10000;int a[maxn+10], b[maxm+10];int next[maxm+10];void get_next(int num[], int m){ next[0] =

HDU_1524 A Chess Game (sg函數)

  /*今天一翻以前做的sg函數的題,這題原來的代碼居然跑781MS, 我暈!又重新寫了一遍,開始vis數組定義成全域變數了,WA。。。T_TMy Code(78+MS):*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 1005;struct node{int num;int edg[N];}e[N];int sg[N];int

並查集學習筆記

  並查集(Union-Find Sets),字面意思理解——合并,尋找。給出一個集合,將其合并後用一個點代替一個集合的元素。例如:1    22    34    3合并後就是        2    /        \1             3                 \                    

HDU_1709 The Balence (產生函數)

  /*用砝碼秤重量,按照左物右碼的話,砝碼的值可以取負。因為砝碼最多就一個,所以不許要一般模板裡的k 那一重迴圈,直接去砝碼個數為0, 1的兩種情況就行。開始把重量取負時那種情況想錯了,WA了好幾次。。。T_T*///My Code:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 10007;int c1[N],

HDU_1548 A strange lift(最短路 Dijkstra解法)

把與某個樓成相連的上下樓層為邊建立一個圖,邊的權值為1.如:3 3 1 2 5可建成圖:map[1][4] = 1;map[2][5] = 1;map[3][2] = 1;map[3][4] = 1;map[4][2] = 1;然後用最短路經的解法Floyd, Bellman_Ford, SPFA, Dijkstra...這裡用的是Dijkstra解法My Code:#include <iostream>#include <cstring>#include

Ural_1031.Railway Ticket (DP)

  /*思路:定義dp[i]表示到達第i站的最小花費。所以 dp[i] = min(dp[i-1] + Cx, dp[i-1] + Cx, dp[i-3] + Cx...(直到i 和 (i-x) 兩站的距離大於L3);*//*My Code:*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 10007;const int inf =

HDU_1381 Crazy Search

Crazy Search                                                                                                                       Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)                                   

HDU_2955 Robberies(01背包問題)

  ps:這兩天忙著搬宿舍都快忙暈了,今天終於有空複習一下01背包問題。對動態規劃不熟,方法還是看的解題報告。還是根據01背包的動態轉移方程:dp[j] = max{dp[j], dp[j-c[i]] + w[i]}。只不過這裡要做一下轉變,將銀行的總錢數作為背包容量V,每個銀行的錢數作為c[i],搶每個銀行不被抓住的機率作為w[i]。結構體定義struct node{  int money;  double p;}r[N]動態轉移方程改為:dp[j] = max{dp[j],

HDU_2019 選課時間(題目已修改,注意讀題)(產生函數)

  貌似跟1171一樣的,呃。。。My Code: #include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 100;struct node {int val;int num;} a[55];int c1[N], c2[N];int main() {//freopen("data.in", "r", stdin);int t, n, i, j,

總頁數: 61357 1 .... 9429 9430 9431 9432 9433 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.