網路流 HDOJ 4292

根據題意可以構建一個網路流模型從源點到食物邊權為食物數量;從第i個人喜歡的食物到第i個人的節點1,邊權為1從第i個人節點1到第i個人節點2,邊權為1,防止一個人選擇了多次從第i個人節點2到飲料,邊權為1從飲料到匯點,邊權為飲料數量構建如#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define MAX 1001int last;int

動態規劃(DP) 之優先隊列最佳化 HDOJ 3401Trade

HDOJ 3401題目串連  告訴你 T 天裡,物品的買賣價格,和當天最多買賣數量,還有 T 天裡最多儲存物品數量,每一次買賣間隔時間必須大於 w+1 很容易想到DP【i】【j】表示,第i天結束的時候還儲存有j個物品時的最大獲利 初始化dp【i】【j】 = dp【i-1】【j】;那麼狀態方程dp【i】【j】 = MAX(dp【k】【j】),其中k<= i - w - 1;且有                 dp【i】【j】=MAX(dp【k】【z】 - (j - z) *

面試題精選(74):n個數串連得到最小或最大的多位整數(百度筆試題)

題目描述: 設有n個正整數,將它們聯結成一排,組成一個最小的多位整數。 程式輸入:n個數 程式輸出:聯結成的多位元  例如: n=2時,2個整數32,321串連成的最小整數為:32132, n=4時,4個整數55,31,312, 33 聯結成的最小整數為:312313355 [題目要求] 1. 給出虛擬碼即可,請給出對應的文字說明,並使用上面給出的例子實驗你的演算法。 2. 給出演算法的時間空間複雜度。 3. 證明你的演算法。(非常重要)

HDOJ 1525 Euclid’s Game 博弈

題目大意是給定兩個數a,b,Stan always starts.規則是,每次只能把比較大的數減去比較小的數的整數倍,最後兩個數中只要有一個數為0就結束,最後操作了的人為勝首先:對於a,b中的比較大的數max和比較小的數min,不管兩個人怎麼取,一定會到達min,max % min的狀態因為max在沒有減到比min小的時候,後續的操作依然是對max減去min的倍數,而一旦max比min小了,因為max = k*min +

ACM ICPC 長春現場賽E Conquer a New Region

  現場賽中這樣的題目真的很難想到,看了別人的報告自己做出來了,也留一下紀念吧,或者以後做題時候還有個經驗吧題意簡化就是一棵樹上所有節點到某個節點x得距離和最大,而距離則是這個節點到x節點所在路勁中權值最小的那個邊的權值;

multiset運用 HDU 1540 Tunnel Warfare

用multiset集合類的時候要包含#include<stdlib.h>#include<set>#include<iostream>using namespace std;以上一個都不能少multiset<type, compare>預設compare為升序,而且只有重載了<操作符的才能正常運用對於其他類型,我們就要自訂compare結構體struct cmp{    bool operator()(const int& a,

一個撥號方案的例子

[globals]ANSWERWAIT=1TRANSFER_CONTEXT=transfer;MONITOR_EXEC=/usr/local/bin/2wav2mp3#include phones.conf[internal]include => phonesinclude => paginginclude => outboundinclude => voicemailinclude => conferenceroomsinclude =>

POJ 1090Chain

題目大意: 一個0 1字串,要你全部變成0;變的規則是變第n個的時候第n-1個必須為1,n-1之前的全部為0,n>=3;第1個可以隨便變,第2個必須在第1個為1的情況下改變,求最小改變多少次可以讓給定0 1字串全部變成0首先個人對這類題目感想:一看資料和結果那麼大,搜尋肯定不行,那麼就應該是規律公式題了,聯想到了漢若塔,先找公式;z[n]函數表示 對於0 0 0 ……0的第n個數變成1,x[n]表示對於0 0 0 ……1 0的第n個數(1)變成0那麼有z[n]=z[n-1]

線段樹對面積的劃分 HDU 1541

題目大意是對給定的很多矩形,求出面積和,重疊的部分只能算一次可以對x和y座標進行離散化,然後對面積進行劃分,劃分成四部分,左上,右上,左下,右下與之前的線段式線段樹不同的是,每次對寬和高進行等分的時侯,xmid和ymid在各部分出現的時候不用+1,因為這裡算的是面積,面積是連續的注意浮點數的判斷大小對於x,y是否相等,只有在x+0.000001 > y && x - 0.000001 < y時成立對於x<y,只有在x+ 0.000001 <

最長迴文高效演算法 HDOJ3068

Problem Description給出一個只由小寫英文字元a,b,c...y,z組成的字串S,求S中最長迴文串的長度.迴文就是正反讀都是一樣的字串,如aba, abba等 Input輸入有多組case,不超過120組,每組輸入為一行小寫英文字元a,b,c...y,z組成的字串S兩組case之間由空行隔開(該空行不用處理)字串長度len <= 110000 Output每一行一個整數x,對應一組case,表示該組case的字串中所包含的最長迴文長度. Sample

快速求1000,000範圍內的所有素數,複雜度為O(n)

今天收穫不小啊,自創了一個快速O(n)複雜度的求1 ---- 1000,000範圍內的所有素數 註:這個方法確實是自創,如果有人想轉,請註明本文來處,否則我會很不爽的 思路:首先定義一個isPrime[1000001]的數組,初始化為0;isPrime[i] = 0表示i還沒有確定是否是素數,isPrime[i] = 1表示i一定不是素數              對於一個數,他一定是由某些素數相乘得到的,那麼假如我們得到了一個x為素數,那麼可以利用x去掉比x大的是x的倍數的數         

程式員面試題精選(12):從上往下遍曆二元樹

題目:輸入一顆二元樹,從上往下按層列印樹的每個結點,同一層中按照從左往右的順序列印。例如輸入      8    /  /   6    10  //     // 5  7   9  11輸出8   6   10   5   7   9

位元運算要注意 (對於HDOJ 1547的思考)

今天真坑爹,一個位操作x&1 == 0導致了一種奇妙的錯誤,也讓我反思頗深,乍一看這個式子我們估計大部分人都理解成了(x&1) == 0其實不然,因為&比==的優先順序更低,所以應該是這樣運算的x&(1 == 0)坑吧搞得我HDOJ 1547wa了一下午,頭痛欲裂#include<stdio.h>#include<string.h>#include<stdlib.h>char map[111][111];int h,

HDOJ 4285 circuits (插頭dp 總結)

題意:給出一個有障礙棋牌,讓我們算出有多少種包含有k個環的方案數,其中每個非障礙棋盤必須包含在一個環中,並且不能有換套環的情況(這個條件沒看到,花了幾個小時調試,坑的一逼呀!!!!!)行為n,列為m,環數k插頭dp:以列j為內迴圈,以行i為外迴圈,每次加入一個節點,那麼分割線上就有m+1個小方格邊,以這些邊的狀態計算下次的狀態形成狀態轉移,因為環不能相交所以括弧原理就剛好用得上了注意,有環數要求,我們就加一個環數的標記位,而換套環是約束條件是,每次形成環的時候左右兩邊的插頭數都為偶數才行,因為左

AC自動機的靈活運用 HDOJ 4518吉哥系列故事——最終數

HDOJ 4518題目連結 1,把合格fibonacci數按反向建立AC自動機的樹,最後一個節點標記flag = 1,表明該節點fibonacci數的尾節點;2,對於i位的所有數字,狀態在當前節點中的個數存起來num【i】3,在加入另外一個fibonacci1數字時,如果之前已經有fibonacci數是該數位首碼時,可以不用加入該fibonacci1了; 建立資料結構struct Node{ Node *son[10]; Node *fail; bool flag; LL num[13];}4,

HDOJ 1554 Pairs of integers

題目大意是:給定一個數N(10 ……10^9),求出A,B,A的開頭數字不能為0,B的開頭數字可以為0,B為A去掉一個10進位位後得到的數字及A的數位一定是B的數位+1,並且A + B = N我們可以遍曆,去掉A的第pre位後得到B,我們假設pre位前面的為x,pre位為y,pre位後為z即A 為 xyz,那麼B為xz這個時候y的權為flag = 10^pre因為A + B = N所以xy * flag  + x * flag + 2 * z = N所以一定滿足(N - 2 * z)%

矩陣相乘,快速演算法 HDOJ 4291 A Short problem

對於g(x) % mod;很明顯,x一定有一個迴圈結;證明:只要存在g(x)= g(k), g(x - 1) =  g(k - 1),那麼就會出現迴圈,而g(x)的值是在有限域(1 - mod)內變化,那麼g(x) ,g(x - 1)的排列也是有限的,而x是無限的,所以一定會出現g(x)= g(k), g(x - 1) =  g(k - 1); 那麼可以求出每層函數中的mod,依次為mod1 = 1000000007;mod2 = 222222224;mod3 = 183120;mod4 = 2

hdu 1558 Segment set(並查集+線段相交)

題目大意是依次給出線段,如果詢問第k條給出的線段就輸出與第k條線段直接相交和間接相交的所有線段條數(注意包含他本身,所以num初始化為1)典型判斷相交,用並查集My Code有個地方wa了我好久,就是在函數中,如果交換參數的值,注意參數如果是指標類型的,導致調用該函數的外部函數中的資料也交換了影響程式結果(看注釋)My Code:#include<stdio.h>#include<string.h>int father[1001];int

由K倍動態減法聯想到的一類博弈問題 HDOJ 2580

給一堆石子,數量為n,先取的人最多能取n - 1個,之後每次最多能取上次對手取的石子的數量的k倍當k = 1時必敗數列為(1, 2, 4, 8

程式員面試題精選(2):設計包含min函數的棧

題目:定義棧的資料結構,要求添加一個min函數,能夠得到棧的最小元素。要求函數min、push以及pop的時間複雜度都是O(1)。分析:這是去年google的一道面試題。我看到這道題目時,第一反應就是每次push一個新元素時,將棧裡所有逆序元素排序。這樣棧頂元素將是最小元素。但由於不能保證最後push進棧的元素最先出棧,這種思路設計的資料結構已經不是一個棧了。在棧裡添加一個成員變數存放最小元素(或最小元素的位置)。每次push一個新元素進棧的時候,如果該元素比當前的最小元素還要小,則更新最小元素

總頁數: 61357 1 .... 15638 15639 15640 15641 15642 .... 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.