POJ_3264 Balanced Lineup(線段樹練手題)

  用線段樹水過,3s多。。。不說了,上代碼:#include <stdio.h>#define inf 0x7fffffff#define N 50010struct node{int l, r;int min, max;}node[N*4];int num[N], nmax, nmin;void creat(int t, int l, int r){ node[t].l = l; node[t].r = r; node[t].min = inf;

POJ_1273 Drainage Ditches (網路流)

  /*很裸的網路流題目,看了兩天算導,今天終於A了一道網路流的題目。我的第一道網路流啊。。。^ ^My Code:*/#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;const int N = 210;const int inf = 0x6fffffff;bool vis[N];int map[N][N];int

POJ_2352 Stars(樹狀數組)

  這題剛開始沒看懂啥一個,琢磨了半天,看了看Discuss。其實就是求某個座標點(x, y)的左下放還有幾個點,很巧的是題目的資料都已經排好序了,所以根本不用考慮y的事,樹狀數組求和水過了。(注意,i = 0時死迴圈,要把資料都往後移一個!)#include <stdio.h>#define N 32010int c[N], ans[N];int lowbit(int i){return i&(i^(i-1));}void add(int i, int val){

HDU_1598 find the most comfortable road(二分+bfs)

  /*用並查集做可以,不過總覺得彆扭。明明是圖論的題嘛。今天在師兄部落格裡看到這個    解法,用二分限定所取的邊的權值。設最大與最小差為lim,最小為low。所以low <=     weight <= low + lim;所以,用二分取到lim最小的一個。ps:限定low時需與熬用到hash,否則直接存m個weight會TLE。不能抵達終點輸出-1,我暈,因為這個錯了好幾次。。。T_T*///My Code: 234+MS#include

POJ_2676 Sudoku(DFS)

  寫了整整一天,到晚上才出過範例,然後各種wa, tle ,ole !!!code:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 11;char map[N][N];int hr[N][N];int hc[N][N];int hx[3][3][N];int z;void dfs(int i, int j){int x, y, k,

POJ_2112 Optimal Milking(網路流)

  /*昨晚寫把Dinic寫錯了,一直不出結果,也沒調出來,睡覺之前猛然想起來,少了一個break,造成死迴圈了。今天把那地方改過來,交上去WA。然後又重新敲之,TLE。後來檢查了一遍,發現是Floyd寫錯了,改過後終於過了,發現網路流太容易錯了。  思路:1、用Floyd把每個奶牛到每個擠奶機的距離算出來,然後問題就變成了已知c頭奶牛到k個擠奶機的距離,求走最遠距離的牛走的路程mindis最小是多少。2、然後建網路流模型,每頭奶牛和擠奶機都是一個結點。設一個源點s,s到c頭奶牛的容量都記為1,

HDU_1848 Fibonacci again and again(SG函數應用)

  sg函數,有人說這是解決博弈論問題的王道,不過現在我還沒感覺,只是知道像這道題類型的題目用sg函數解。至於什麼是sg函數。。。  先定義mex運算,mex是對集合的運算,它表示最小不屬於該集合的非負整數。比如 mex {0} = 1; mex{0, 2} = 1;mex{1, 2, 3} = 0;sg(x) = mex{...};這裡是三堆,求得每堆的sg值,然後抑或運算,結果為0則為P-position,否則為N-position。  至於怎麼證明的,網上資料很多:sg函數入門:http:

快速排序+歸併排序

VonGang原創,轉載請註明:http://www.cnblogs.com/vongang/快排過程很簡單,就是一個二分的思想,過程如下(從小到大為例):1、取一個關鍵字;2、把序列中大於關鍵字的放在關鍵字右邊;3、把序列中小於關鍵字的放在關鍵字左邊;4、重複1-3步,直到序列有序;代碼+注釋:#include<stdio.h>#define N 100int QuickSort1 (int r[], int low, int high){ int key;

Ural_1060. Flip Game(bfs + 位壓縮)

  /*不明白為什麼Ural把這題歸到game裡邊,難到是因為這題是個遊戲。。。很水的一道題,糾結了兩天,以前沒有接觸過位壓縮,估計學過位壓縮的童鞋能夠把這題直接秒掉,Orz各位做題神速的童鞋。。。  wwww  wwww  wwwb  wwbb可以用二進位表示為:1100|1000|0000|0000;也就是說4*4方格裡所有狀態都可以用16位二進位表示,轉成十進位後為0或者65535就完成了遊戲。*///My Code:#include <iostream>#include

HDU_2577 How to Type(DP)

  這兩天快被DP整崩潰啦!!!今天拿到這道題也是無從下手,問了下高手思路才做出來。思路:開另個數組on[], off[]。分別表示開Caps Lock燈,和關Caps Lock燈時的最小按鍵次數當字串s[i]為大寫時:  on[i] = min{ on[i-1] + 1, off[i-1] + 2} //開燈時直接輸入字母,關燈時按shift+字母;  off[i] = min{ on[i-1] + 2, off[i-1] + 2}

HDU_2152 Fruit(產生函數)

  這裡可以看成給一個面值為m的錢幣,要求將它換成n種不同的面值都為1的錢幣,同時要求每種錢幣供應的上下限。然後就是產生函數模板了。。。My Code:#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 110;int c1[N], c2[N];int MIN[N], MAX[N];int main() {//freopen("data.

HDU_1517 A Multiplication Game

  找規律的題目,規律如下:2    ——   9   N-position10  —— 9*2   P-position19  ——  9*2*9   N9*2*9+1  ——   9*2*9*2   P9*2*9*2+1  ——   9*2*9*2*9   N。。。思路:將輸入的數連除18,當得到的數n小於18時,判斷如果(2 <= n <=9)則為N位,否則為P位;My Code:#include <iostream>#include <cstdio>#

求組合數(DP)

  從組合數的定義可以知道。C(n, m) = C(n-1, m) + C(n-1, m-1);所以,根據這個公式可以遞迴的求得組合數,代碼如下:long long C(int n, int m) {if(m == 0 || n == 0 || n == 1 || m == n) return 1;if(aug[n][m] != 0) return aug[n][m]; aug[n-1][m] = C(n-1, m); aug[n-1][m-1] = C(n-1,

kruskal 並查集最佳化

   這兩天搞dp搞的快暴了,想學學網路流。拿過算導來一看,最短路還沒整完呢。寫了一個用並查集最佳化的kruskal演算法,並查集是用非遞迴的狀態壓縮實現的。詳見:http://www.cnblogs.com/vongang/archive/2011/07/31/2122763.html。kruskal沒有用堆最佳化,不是我不想,而是實在不會。。。所以直接用sort按權值排了下序,時間複雜度O(n+n*logn) My Code:#include

Poj——1950 Dessert (DFS)

   /*感覺我的做法很麻煩,一個只存+-符號的數組, 一個存所有操作符的隊列,再來一個隊列存運算元(比如1,2, 1011(10.11的情況))。然後就是暴搜。。。*//*My Code: 297MS*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 50;char opr2[N];char opr[N];int

POJ_2023 Choose Your Own Adventure(DFS)

  /*簡單DFS,開始這題想複雜了,不知道用dfs還是bfs甚至都想寫dijkstra,後來一狠心寫了個dfs,1Y了,^_^ ,可能題目的資料比較若吧,呵呵,感覺主要還是把圖抽出來這地方,有點像類比題了。輸出是加了一個pre[]存放當前結點的前驅,然後把pre[]包含的結點資訊入棧,然後出棧好了。*///My Code:#include <iostream>#include <cstdio>#include <cstring>using

zoj_1610 Count tht Color

  經典的線段樹題目,包含了線段樹的插入,更新,計數,操作過程如下:1、[0,8000]遞迴建立線段樹,初始時每段的顏色為-1,表示無色;2、每次輸入,更新對應線段的顏色;3、在區間[0, 8000]上統計顏色>=0的區間(即為已經圖色的區間),將所對應的顏色映射到數組col[]中;4、對col[]進行簡單的操作,輸出得到的顏色和所對應的區間數;下面以50  4  40  3  13  4  20  2  20  2  3為例示範一下過程,這裡簡化一下,我只建立[0, 4]的線段樹:代碼+

HDU_1703 Northcott Game(博弈論)

  最近搞了一下博弈論,處於初級入門階段,找了幾個題做做,正巧碰上這題。這題是Nim博弈的一個變形,將兩座標的距離看作一堆石子中的石子數,n就是石子堆數,所以根據Nim博弈的結論:a1 ^ a2 ^ a3……^an == 0 ,則必勝。所以這題的答案就出來了。My Code:#include <iostream>#include <cstdio>using namespace std;int main(){    //freopen("data.in", "r",

HDU_1536 S-Nim(sg函數)

  類似 Fibonacci again and again貌似有點模板的感覺,就是不知到hash數組的上界是怎麼算出來的,無語,繼續研究去。。。#include <iostream>#include <cstdio>using namespace std;const int N = 10010;const int M = 110;int num[M];int vis[N];int sg[N];int n;void get_sg(){int i, j;for(i = 0;

HDU_1069 Monkey and Banana (DP)

  這個題目與最長上升子序類問題類似,剛開始想用貪心做了,但是悲劇的連題目給的資料都沒過。後來想DP,由於最近在看背包問題,思維僵化,怎麼想也想不出怎麼套背包的轉移方程。問了下高手,才猛然想起來這題的思路,我悲劇的一晚上啊。。。。代碼:#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;const int N = 31;struct blocks{int

總頁數: 61357 1 .... 9428 9429 9430 9431 9432 .... 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.