Time of Update: 2018-12-05
這是一道類比題。/*ID: guo geerPROG: fracdecLANG: C++*/#include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;int note[300000];int f(int n){ int k=0; if(n==0) return 1; while(n) {
Time of Update: 2018-12-05
所有題在A不掉之前都是難題,而當你把它A掉後,它便成了水題,而在你A掉它之前,你永遠不知道它有多水。這道題,我最先想到的是DP,覺得就是一個典型背包問題,不過是背包多了一點而已,然而再仔細一想N=50便意味著50個背包,128^50的運算量,不用細算也知道這樣的程式跑出來太陽都熄火了,所以這樣的DP是走不通的。想到這個section的主題是講搜尋最佳化的,那就試試搜尋吧,直接DFS加剪枝?嗯,想了很久沒想出來怎麼做DFS,就在這個時候ZZY看完了剛更新的日劇,坐在旁邊搖頭晃腦滿臉的意猶未盡,時不
Time of Update: 2018-12-05
題意:某人手上有一串珠子,順時針編號1--n,每次可進行三種操作:順時針旋轉一個珠子,逆時針旋轉一個珠子,將手中的珠子移去(移去後順時針方向下一個珠子進入手中),問按標號12345順序將所有珠子逐一移去,最少需要多少次操作。分析:假設當前要移除的珠子為x,x左邊的珠子用A代表,右邊的珠子用B代表即AxB,則無論左移還是右移都會得到xBA,即移去某個珠子對後面的珠子無影響,每次只需單獨考慮A和B的長度,取最小累加即可。做法:比賽時想複雜了,想維護每個珠子position的變化,一度想用伸展樹旋轉,
Time of Update: 2018-12-05
消圈演算法: 先求最大流, 再在Gf中尋找負費用圈並沿它增廣改進: 增加附加弧(s, t), 費用大於s-t最大費用路(如VC), 弧上的初始流大於s-t最大流(如s出發的弧容量和加1)消圈演算法將讓盡量多的流移出附加弧, 因此得到的流是最大流. 最後附加弧可能有餘量,應當忽略實際效果: 最小費用增廣路演算法, 因為Gf中任何s-t路和t-s一定構成負費用圈最壞情況分析: 每次找負費用圈O(VE), 每次只把費用更新1, 一共需要ECM次(M為最大費用, C為容量),
Time of Update: 2018-12-05
這是一個統計問題,大意是給定兩種操作,C A B color:將區間[A,B]塗上顏色color,P A
Time of Update: 2018-12-05
第一次在ubuntu下寫程式,鼓搗了N久終於可以寫東西了.從安裝作業系統,編譯軟體,編譯環境...感覺自己弱成渣渣了... 一道水題 調了N久...各種悲催..#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<cmath>using namespace std;struct Point2D{ double x,y; }mesh[33
Time of Update: 2018-12-05
從這組輸入範例來說明題意吧Sample test(s)input64 03 15 26 218 410000 3output3112222NoteLet's write out the divisors that give answers for the first 5 queries:1) 1, 2, 42) 33) 54) 2, 65) 9, 18第 0 行的 6 代表下面有 6 行輸入,第 1 行到第 6 行每行有兩個數 x 、 y。題目要求的就是 x 約數的個數,不過這裡還有個其他需求,
Time of Update: 2018-12-05
定義:如果m是一個正整數,且2^m-1是一個素數,則m必是素數.反之,如果m是一個正整數,素數且Mm=2^m-1成為第m個梅森數;如果p是一個素數,並且Mp=2^p-1也是素數,那麼Mp=2^p-1也是素數,那麼Mp就稱為梅森素數.Lucas-Lehmer判定方法.設p是素數,第p個梅森數為Mp=2^p-1,r1=4;對於k>=2,利用rk=((r(k-1))^2-1)%Mp,0<=rk<Mp可以得到rk的序列,則有Mp是素數,若且唯若rp-1%Mp==0;#include&l
Time of Update: 2018-12-05
題意:用n個元素填滿一個m行n列的矩陣,使得每行和每列中每個元素僅出現一次,現要再添加一行,使得矩陣仍滿足上述限制,問字典序第k大的方案是什麼.解法:錯誤的解法是填k次,每次填最小的,若仍存在解則第k次的填充方案就是字典序第k小的,例如原有1234,第一次填2143第二次填3412不死後第二小的。樸素的做法的dfs全排列然後驗證,這樣顯然複雜度太高,於是考慮利用二分匹配剪枝:當遞迴到第i層,即第i列填充上某個元素x後,若x之後的位置和剩餘的元素不能形成完美匹配則不必繼續向下遞迴,這樣驗證的複雜度
Time of Update: 2018-12-05
題意:一塊N*N大的蛋糕M次訊問,每次切走一個矩形,問每次切的矩形被分成了多少塊(1 <= N <= 1000, 1 <= M <=
Time of Update: 2018-12-05
勝利大逃亡(續)Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3734 Accepted Submission(s): 1216Problem DescriptionIgnatius再次被魔王抓走了(搞不懂他咋這麼討魔王喜歡)……這次魔王汲取了上次的教訓,把Ignatius關在一個n*m的地牢裡,並在地牢的某些地方安裝了帶鎖的門,
Time of Update: 2018-12-05
題意:給定一些海報,可能互相重疊,告訴你每個海報寬度(高度都一樣)和先後疊放次序,問沒有被完全蓋住的海報有多少張。海報最多10,000張,但是牆有10,000,000塊瓷磚長。海報端點不會落在瓷磚中間。題解:這是一個區間覆蓋的問題,由于海報的數量最大有10,000張,O(n^2)的暴力演算法是達不到時限要求的,用O(nlgn)的線段樹來做應該時間上不會有問題了,但是直接做線段樹會超記憶體,所以先要離散化一下。
Time of Update: 2018-12-05
題目大意:幾個人在談論他們的工資, 他會告訴你很多句話, 每句話是 a 比 b 多 c 塊錢. 已知沒有人的工資低於0或高於 10^9. 第一個人工資是0。 問從第幾句話開始你可以判斷有人在吹牛.如果沒人吹牛輸出每個人的工資。解法:維護每個節點到根節點的差,判矛盾的方法類似於普通的種類並查集。最後還要判如果以上描述正確是否一定有人的工資超出了範圍(這種矛盾只有可能在所有關係都給出後才能判斷,中間無法判斷)。因為第一個人的工資一定,因此會頂合并是總讓標號小的做根節點,這樣就可以固定第一個人的值。
Time of Update: 2018-12-05
題意:給出一個M*N 的矩陣,矩陣中每個元素都有一種顏色(1 ≤ N, M, C ≤ 100),10000條查詢,更改某個元素的顏色或查詢某種顏色的corss有多少個。We say there exists a cross of size k centered at the cell (x,y)iff all cells lying in the x-th row or the y-th column and within a distance of k from (x,y) share
Time of Update: 2018-12-05
1.圖的度序列定義:如果V(G)={v1,v2,v3,...,vp};則稱非負整數序列(d(v1),d(v2),d(v3),...,d(vp))為圖G的度序列.(定義中的圖指廣義的圖,含有多重邊或環).Havel定理:我們把序列排成不增序,即d1>=d2>=...>=dn,則d可簡單圖化若且唯若d'=(d2-1, d3-1, ... d(d1+1)-1, d(d1+2), d(d1+3), ...
Time of Update: 2018-12-05
關於橋與雙連通分支的定義及求法void大神給出了很詳盡的介紹圖的割點、橋與雙連通分支總結幾條做題過程中發現的關於邊雙連通分量的性質:1.將圖中每個邊連通分量縮為一個點後,只連端點不位於同一連通分量中的邊,則將圖轉換成了一棵樹,且樹中的邊都是父子邊。2.在對圖進行搜尋時,圖中的邊分為父子邊和返祖邊(交叉邊),則一個具有n個點的邊連通分量中有且僅有n-1條父子邊,且可由著n-1以條邊連成一棵樹,剩餘的邊都是返祖邊。關於雙連通圖的構造和判定等基本問題void文章裡有詳細介紹,我的《連通性問題》中也有寫
Time of Update: 2018-12-05
1. 只做需要做的工作使用敏捷方法;全心全意做UX設計;溝通第一;編碼也許不是解決問題的辦法;過早的最佳化是一切罪惡的根源;選擇最簡單的解決方案。2. 站在巨人的肩膀上使用開源架構;使用簡潔語言(如HAML、Jade、Coffeescript);不要做重複的事情(不要重新發明輪子);利用包管理器來進行公用和私人代碼分配;不要任憑巨頭(如微軟)的擺布而修複庫中的一個Bug;不要讓你的僱主逼你學習;自主學習並為自己設定新的目標。3.
Time of Update: 2018-12-05
題目連結題意:一個俱樂部有 n名成員,每名成員有兩個屬性:聲望r和年紀a(均為109)。若干個個可以組成一個小組,每個小組中有一名組長,要求這名組長的聲望高於其他成員且這名組長與組內任意成員的年齡差小於k,先給出10000條查詢,問如果a、b兩人在一個小組中,那麼這個小組最多可以有多少人。解法:1.由於n和a相差很大,因此首先要對聲望和年紀進行離散化
Time of Update: 2018-12-05
A. Little Elephant and Problem題意:給出一個數組,問是否是由一個已排序的數組經過交換至多一對數得到。解法:將給定的數組排序後與元數組比較,若有多於兩個位置不同則不是,否則將原數組兩個位置的數字交換後比較是否與排序後數組相同。B. Little Elephant and
Time of Update: 2018-12-05
對於平面圖有如下性質:1.(歐拉公式)如果一個連通的平面圖有n個點,m條邊和f個面,那麼f=m-n+22. 每個平面圖G都有一個與其對偶的平面圖G*3. G*中的每個點對應G中的一個面4.對於G中的每條邊e,e屬於兩個面f1、f2,加入邊(f1*,f2*)。如果e只屬於一個面f,加入回邊(f*,f*)。平面圖G與其對偶圖G*之間 關係:1. G的面數等於G*的點數,G*的點數等於G的面數,G與G*邊數相同2. G*中的環對應G中的割一一對應我們可以利用最大流—最小割定理轉化模型。根據平面