437 – The Tower of Babylon

描述:給出n種長方體,每種長方體無數個,將這些長方體按照長和寬依次遞減的趨勢依次增加高度,求最大的高度是多少#include <cstdio>#include <cstdlib>int n,m,t,sum;int arr[100][3];int max(int x,int y){ return x>y?x:y;}void swap(int &x,int &y){ if(x>y) { int temp=x;

POJ 2186 popular cow 有向圖的強聯通問題 Tarjan演算法

參考:http://hi.baidu.com/1093782566/blog/item/e5a0e9229913bd048b82a175.htmlhttp://www.cppblog.com/IronOxide/archive/2010/08/16/123622.html?opt=admin題目簡述:n頭奶牛,給出若干個歡迎關係a b,表示a歡迎b,歡迎關係是單向的,但是是可以傳遞的。另外每個奶牛都是歡迎他自己的。求出被所有的奶牛歡迎的奶牛的數目。模型轉換:N個頂點的有向圖,有M條邊(N≤100

HDU 4009 Transfer water 最小樹形圖 朱劉演算法

/*很裸的朱劉演算法,後悔昨天比賽前沒看過朱劉演算法,掩面大哭~~抽象一個超級起點,連改點到每個點的單向邊,邊權為點自身的建井的代價如果可以從i連水管到v,建一條i到v的單項邊,邊權為修水管的代價然後就是用朱劉演算法求最小樹形圖了。朱劉演算法詳見:http://blog.csdn.net/wsniyufang/article/details/6747406*/#include <cstdio>#include <iostream>#include<queue>

POJ 2154 Color Polya定理+歐拉函數

/*題目要求:給出兩個整數n和p,代表n個珠子,n種顏色,要求不同的項鏈數,並對結果mod(p)處理。置換隻有旋轉一種方式,那麼共有n個置換基本知識:環的個數為gcd(n , i) , 長度L=n / gcd(n , i) 其中 i 為轉的位子數普通求法: ∑n^( gcd(n,i) ) 0<=i<n 複雜度過高最佳化:枚舉環的長度L枚舉最佳化: L可以從1取到sqrt(n) ,因為L|n , n/L | n對於每個L,我們再看有幾個i滿足條件n/L = gcd(n , i)

hdu 4109 Instrction Arrangement 拓撲排序 關鍵路徑

/*給定一個關係網,A B C表示B必須在A後,間隔為C,允許多線程同時操作最後求最短的時間把所有任務完成解法:關鍵路徑topsort維護每個節點最早可以完成的時間*/#include<cstdio>#include<iostream>#include<vector>#include<queue>#include<cstring>using namespace std;struct node{ int y,t;}edge[1000

最小樹形圖模版——朱劉演算法

/*最小樹形圖圖模版-朱劉演算法模版說明:點標號必須0-(N-1) 必須去除到自身的點(到自身的邊的邊權賦無限大)*/#define M 109#define type intconst type inf=(1)<<30;struct Node{int u , v;type cost;}E[M*M+5];int pre[M],ID[M],vis[M];type In[M];int n,m; type Directed_MST(int root,int NV,int NE)

poj 3164 && tju 2248 最小樹形圖 朱劉演算法

個人覺得這個部落格把這個演算法說的比較詳細了,直接搬過來吧,我再闡述一遍的話沒有人家說的好,還容易說錯。========================== 分割線之下摘自Sasuke_SCUT的blog==================================================最 小樹形圖,就是給有向帶權圖中指定一個特殊的點root,求一棵以root為根的有向產生樹T,並且T中所有邊的總權值最小。最小樹形圖的第一個演算法是 1965年朱永津和劉振宏提出的複雜度為O(VE

839 – Not so Mobile

描述:這是物理上的一個槓桿問題,就是重物與力矩相乘,看一下兩邊是否相等,才開始我沒有採用建樹方法,後來又用建樹的方法做了一下,不過很慚愧,建樹時出現了問題,結果好幾次wa……代碼一:不建樹代碼#include <iostream>#include <cstring>#include <cstdio>using namespace std;int flag;int creat_recursion(int w1,int d1,int w2,int d2){

729 – The Hamming Distance Problem

描述:和前面的幾道水題一樣,還是兩種代碼,使用庫函數的話耗時比較少一點,用劉汝佳的產生可重集排列的方法耗時多,沒什麼難度代碼一:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main(){ //freopen("a.txt","r",stdin); char s[20]; int

10020 – Minimal coverage

描述:問題就是劉汝佳書上的的區間選擇問題,如果不會的話就看看書吧#include <cstdio>#include <cstdlib>#include <cstring>int n,m;int cmp(const void *p1,const void *p2){ int a=((int *)p1)[0],b=((int *)p1)[1],c=((int *)p2)[0],d=((int *)p2)[1]; if(a<0) a=0;

10131 – Is Bigger Smarter?

描述:題意很簡單,先快排一下,然後從中選擇即可,因為我覺得只用數組有些麻煩,所以用了結構體#include <cstdio>#include <cstdlib>struct Ele{ int We; int Iq; int sum; int next; int pos;};Ele count[1010];int cmp(const void *p1 ,const void *p2){ int p1_We=((Ele *)p1)->

HDU 3887 Counting Offspring 樹狀數組

/*題意:1-n在一棵樹上,給定邊的關係。要求得到每一個頂點的後繼節點中比它值小的個數題解:樹狀數組。dfs過程中,進入一個節點x前求一次sum(x-1),然後add操作,遞迴返回節點x後再求一次sum(x-1) 兩次sum操作的差值就是比x小的個數本題資料量大,遞迴太深可能爆棧,一般用while+人工棧類比遞迴的過程,當然c++可以設定棧的大小,這樣就不會爆棧了 */#include <cstdio>#include <iostream>#include &

10003 – Cutting Sticks

描述:題目難度為 2,將一條長為n的木棍切成m+1塊,但是切割順序不同,尋找狀態方程s[x][y]=min(s[x][y],s[x][i]+s[i][y]+s[y]-s[x]);然後就可以敲代碼了代碼一(遞迴,耗時較多):#include <cstdio>#include <cstring>int num[55],s[55][55];int min(int a,int b){ if(a>b) return b; else return a;}int

HDU 2121 Ice_cream’s world II 無固定點的最小樹形圖 朱劉演算法

/*本題為不是固定根的最小樹形圖,我們可以虛擬出一根來,然後在把這個根跟每個點相連,相連的點可以設為無窮大,或者設為所有邊和大一點,比如為r,然後就可以利用最小樹形圖進行計算了,計算出的結果減去r,如果比r還大就可以認為通過這個虛擬節點我們連過原圖中兩個點,即原圖是不連通的,我們就可以認為不存在最小樹形圖。關於輸出最小根也挺簡單,在找最小入弧時,如果這條弧的起點是虛擬根,那麼這條弧的終點就是要求的根。*/#include <cstdio>#include

By Recognizing These Guys, We Find Social Networks Us第36屆ACM國際大學生程式設計競賽亞洲區預賽北京邀請賽bupt 197 tarjan+割邊

/*題目地址:http://w.boj.me/onlinejudge/newoj/showProblem/show_problem.php?problem_id=197題意:給你一個人際關係網(雙向的),讓你求關鍵的關係,既如果這條關係斷了,就會有某兩個或以上的人失去聯絡了求這樣的關係解法:tarjan演算法 求割邊dfn[v]記錄到達點v 的時間,low[v]表示通過它的子結點可以到達的所有點中時間最小值,即low[i]=min(low[i],low[u]),u 為v 的了孫,初始化時low[

GoAgent + chrome 實現代理智能切換

Part

699 – The Falling Leaves

描述:這道題內容是通過構造一個二叉樹,看一下那些葉子在樹上時垂直位置是重合的,重合的就加在一塊求和,然後水平輸出就可以了,關鍵是在dfs中的優先遍曆統計葉子在垂直位置的數目和,然後就可以AC了#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct Tnode{ int c; Tnode *left,*right; Tnode ()

10453 – Make Palindrome

描述:把一個字串通過增加操作變成迴文,然後把這個迴文輸出#include <cstdio>#include <cstdlib>#include <cstring>char str[1010];int p[1010][1010];int v[1010][1010];int min(int x,int y){ return x>y?y:x;}int dp(int x,int y){ if(v[x][y]!=-1) return v[x][y];

10700 – Camel trading

描述:先加後乘還是先乘後加問題,注意要用long long int#include <cstdio>#include <cstdlib>#include <cstring>char s[1010];int main(){ // freopen("a.txt","r",stdin); int n; scanf("%d\n",&n); while(n--) { gets(s); long long

146 – ID Codes

描述:這道題很簡單,就是找當前排列的下一個產生可重集排列,用庫函數可以,我根據自己發現的一個規律也寫了另一種代碼,耗時一樣,不過要用劉汝佳書上寫的那種方法做居然逾時了,搞不懂,可能是50個字元太多,2^50次方會逾時吧代碼一:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main(){

總頁數: 61357 1 .... 13822 13823 13824 13825 13826 .... 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.