Sicily 1020 Big Integer(高精度運算)

//高精度模數運算//一開始套了個原先自己寫的模板,高精度%高精度,結果TLE 2次,原因很明顯,被除數可達400位,2E除以2就要做1E次減法必定TLE//所以只能自己寫個最原始最樸素的才能過,考慮到除數最大是1000//因此可以自己寫一個string%int型的模數函數,這樣速度會快很多,而且很簡短//改用char和scanf應該可以更快#include<iostream>#include<string>using namespace std;int

printf()的格式化輸出

printf的格式控制的完整格式:%  -  0  m.n  l或h  格式字元下面對組成格式說明的各項加以說明:①%:表示格式說明的起始符號,不可缺少。②-:有-表示靠左對齊輸出,如省略表示靠右對齊輸出。③0:有0表示指定空位填0,如省略表示指定空位不填。④m.n:m指域寬,即對應的輸出項在輸出裝置上所佔的字元數。N指精度。用於說明輸出的實型數的小數位元。為指定n時,隱含的精度為n=6位。⑤l或h:l對整型指long型,對實型指double型。h用於將整型的格式字元修正為short型。----

Sicily 1350 Piggy banks(搜尋|求圖中環的個數)

//求圖中環的個數//由於圖中每個點的出度只有1,所以不存在一個點處於兩個環的交點//因此,求環的個數時每個只需要考慮一次便可得出結果//由於資料規模龐大,寫成遞迴形式容易暴棧//在讀邊的過程中先對自環進行預先處理,之後對每個點進行不同的染色,對它的下一個點也染同樣的顏色//這樣染下去如果發現下一個要染的點和正在染的顏色相同,則說明存在一個環//換染色起點的同時也需要更換新的染色,才能保證對環的判斷正確#include<iostream>#include<cstring>

Sicily 1031 Campus(單源最短路Dijkstra)

//鄰接矩陣Dijkstra,得開始學用鄰接表的方式來處理單源最短路問題 可以把複雜度提高到O(ElgE)//學會了map關聯容器,十分強大的類#include<iostream>#include<string>#include<cstring>#include<map>//關聯容器using namespace std;const int INF = 1000000;//定義無窮,注意不能太大,否則在更新結點過程中可能產生溢出int G[205]

POJ 2182 Lost Cows(線段樹)

//線段樹//題意:給定數列的順序數,進而確定數列的排列//思路:逆向思考,對給定的N個數,從第N個數入手,如果他的順序數是k,則說明他在1~N中排第k+1位//確定一個元素的位置K後,從1~N這個序列中刪除K//之後計算第N-1個數,同理在1~N-1個數中看他排第幾位,確定他的位置//EXAMPLE://序列:1,2,3,4//順序數:1,1,2//3+1 = 4,在1,2,3,4中排第4位,ans[4] = 4,在1,2,3,4中刪除4,剩1,2,3//1+1 =

Sicily 1845 Nine(全排列)

//思路,枚舉一次全排列,將排列進行位元分割,然後判斷,滿足(B*D+C)/D是整數的答案放進答案數組裡,注意這道題,B必須能整除C,一開始我以為只要滿足假分數就可以//結果WA了N次,預選賽做不出來的題總算把他過了//數位分割的情況,1,5,3 1,4,4 2,4,3

POJ 3264 Balanced Lineup(RMQ)

//RMQ,求給定區間的最大值和最小值之差#include<iostream>#include<cmath>using namespace std;int n,m,k,st,ed;int Max,Min;int _max[50010][17];int _min[50010][17];void RMQ_init()//RMQ初始化模板{for(int j = 1;(1<<j) <= n;++j){for(int i = 1;i + (1<<j)

POJ 3125 && Sicily 1443 Printer Queue(類比/隊列)

//簡單的隊列類比#include<iostream>#include<queue>#include<cstring>#include<algorithm>using namespace std;int priority[101];struct Job{int priority;bool yours;}job[101];bool cmp(int a,int b){return a > b;}int

POJ 3468 A Simple Problem with Integers(線段樹)

//線段樹#include<iostream>using namespace std;//注意變數的統一,當你使用long long int時,最後統一全部用long long int相加相乘,否則會出現WAlong long int data[100010],ans;struct seg{long long int

POJ 2777 Count Color(線段樹+位元運算最佳化)

//線段樹//A完這道題收穫很大,一開始我不會用位元運算,是用vis[30]數組一個一個標記顏色過的,速度比較慢800+MS//經大牛指點,使用位元運算來記錄顏色,結果快了一倍//通過這道題,對線段樹的架構有了清晰的瞭解//對於線段樹,特別的地方在於對區間的標記,搜尋時後要先讀取區間的標記,然後更新左右子樹的標記//通過標記便可以不用再修改到要求區間的時候改變子樹的區間狀態,等到下次修改時有經過這個節點,再修改左右子樹狀態//只有這樣才叫做實現O(logN)的修改和插入,否則會退化成O(n)的修

Sicily 1031 Campus(Dijkstra[鄰接表+優先隊列最佳化])

//Dijkstra鄰接表做法//鄰接表使得計算複雜度成為O(E*n),但圖為稀疏圖時效率比鄰接矩陣高,但當圖為稠密圖時,E與n^2同階,計算複雜度最壞可到O(n^3)//Dijkstra優先隊列實現(相當於堆最佳化)//優先隊列的實現的Dijstra可以使得演算法在處理稠密圖時速度也比使用鄰接矩陣要快//原因在於插入隊列的元素的前提是邊關係必須滿足可鬆弛條件,對於稠密圖而言,可鬆弛條件是常常不滿足的//因此插入隊列的元素便比邊數少很多//下面使用vector容器實現鄰接表的,因為直觀易懂//G

POJ 2528 Mayor’s posters(離散化+線段樹)

//線段樹的染色類型題目//這題通過逆序修改線段樹可以簡單的實現,這是一種比較巧妙地做法//也可以通過記錄左顏色和右顏色來維護線段樹實現//下面的代碼是通過逆序覆蓋來實現的,逆序覆蓋,即將最後一次貼上去的海報優先處理//這樣的話可以省去很多按順序插入處理步驟,但是無法實現動態詢問//在離散化的時候我一開始使用MAP來實現,結果800MS,差點爆掉,實踐證明MAP的查詢速度是很慢的,還不如寫個二分搞定//但下面的代碼嚴格來說是錯誤的,離散化有問題,不過資料太弱,還是可以AC的#include<

POJ 1273 Drainage Ditches(網路流——最大流)

//網路流——最大流//終止條件是——殘量網路中找不到增廣路//此題還需要考慮多重邊的情況#include<iostream>#include<queue>#include<cstring>#define INF 2000000000using namespace std;int n,m,u,v,x,y,c,st,ed;int flow[205][205],cap[205][205];//當前流量,最大容量int

POJ 3667 Hotel(線段樹)

//線段樹//對每個區間記錄左連續數,右連續數,和最大連續//最大連續用於判斷是否存在滿足條件的區間//左右連續用來更新父區間的最大連續,注意兩個區間的合并//A完這一題,對線段樹的回溯更新有了更深刻地體會//對於線段樹的更新,只需更新到所求的區間即可,而無需理會該區間的子區間//若繼續處理滿足條件的子區間,就會讓線段樹退化到O(n),為了實現O(lgN)的插入和刪除,就需要對區間進行標記//當下次搜尋時經過這個標記,再對子樹進行處理,就可以了,這就是線段樹快的原因#include<ios

POJ 1459 Power Network(網路流—最大流)

//網路流——最大流//通過添加虛源點和虛匯點構圖,轉化為從源點到匯點的最短路#include<iostream>#include<cstring>#include<queue>#define INF 2000000000using namespace std;int n,np,nc,m;int x,y,c,p,f,maxflow,st,ed,u,v;int cap[105][105],flow[105][105];int rflow[105],pre[105

Sicily 1114 Food Cube(BFS廣度優先搜尋)

//BFS廣度優先搜尋//構完圖後,對圖中所有空的進行廣搜,相當於從改點不斷往外擴張,直到碰到cube或越界//每成功廣搜一個座標就意味著有一個空洞,但最後答案要除去最外層的空洞//因此ans - 1#include<iostream>#include<cstring>#include<queue>using namespace std;const int MAX = 102;int t,n,x,y,z,ans;int

Sicily 1949 && 1876 Basic Graph Problem(RMQ+並查集)

//RMQ+並查集,RMQ套模板即可,此題關鍵是並查集的使用//sicily 1949 1876是同一道題,但是注意CASE的大小寫,時間區別是5s和1s#include<iostream>#include<cmath>#include<cstring>using namespace std;int _max[100010][18],_min[100010][18];bool ok;int father[100010];int n,query,st,ed,u,

Sicily 1024 Magic Island(DFS深度優先搜尋)

//深度優先搜尋求一顆樹的最長路#include<iostream>#include<cstring>#include<vector>using namespace std;int _max;int n,k,u,v,d;struct Edge{int u,v,d;Edge(int uu,int vv,int dd){u = uu;v = vv;d = dd;}};vector<Edge> E[10010];bool vis[10010];void

Sicily 1827 && 1947 Sniper

//求最小割,轉化為最大流模型來求最大流//構圖的方法是拆點,將除了源點和匯點外的點1個變成2個,各自的容量為點的值。//有相連的點之間的容量為正無窮,注意看清題意,題目說的是給你的2個點他們是相連的"connected",即雙向連通,所以構圖時要注意//因為沒注意到這點構圖的時候錯了WA了無數次,唉,我還是這麼水~#include<iostream>#include<cstring>#include<queue>#define INF

POJ 2828 Buy Tickets(線段樹)

//線段樹,利用線段樹的靈活性,實現排隊//演算法關鍵:逆序插入,線段樹區間維護該區間剩餘有效地空位,每從線段樹中找到一個合適位置插入,都會減去一個有效空位//相當於整個隊列的序號向右移了一位,通過樹狀結構維護remain值,便可實現O(NlgN)的複雜度//倒序插入,每找到一個合適的位置,這個位置就肯定是最終確定的位置#include<iostream>#define MAX 200005using namespace std;struct seg{int l,r,remain;}

總頁數: 61357 1 .... 13015 13016 13017 13018 13019 .... 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.