Sicily 1050 Numbers & Letters(DFS)

//DFS回溯,其實就是24點遊戲的問題//沒想到那麼蛋疼,居然卡了我很久,顯然的深搜題//回溯思路是這樣的,5個數,先任意找2個數進行加減乘除,把這2個數運算後的結果當做一個數,按相同的方法搜下去//把4個數任取2個然後合并成3個,再繼續搜下去//搜尋樹的深度為5,

Sicily 1039 Phone Home(DFS染色)

//dfs染色+二分答案#include<cstdio>#include<iostream>#include<cstring>#include<vector>using namespace std;const double MAX = 400;struct coord{double x,y;}P[15];double calDis(coord a,coord b){return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-

POJ 2135 Farm Tour(最小費用流)

//最小費用流//構圖關鍵是添加超級源點,超級匯點//題意是要找一條可以再終點往返的路,這2條路距離之和最短且每條路只能經過一次//第一步將問題轉化為找2條從起點到終點//第二步與費用流掛鈎,將距離當做費用,將容量設定為1是為了保證每條路只經過一次//超級源點和起點的容量為2,終點和超級匯點容量為2,使得最多找2條路//最終的mincost即為答案//注意雙向邊這個條件,當出現雙向邊或多重邊時,就得用鄰接表儲存了#include<iostream>#include<queue&

POJ 2761 Feed the dogs(Treap求第K小數)

//TREAP求第K小數//感謝JSH大牛的指點//這道題之所以可以用TREAP做是因為題意中有個條件,詢問區間不會出現包含的情況,因此通過對詢問區間進行排序//然後通過插入和刪除的方法,來維護區間的第K小//平衡樹的話自然首選TREAP了,TREAP中比較難的就在於刪除那裡,刪除的方式是通過將要刪除的結點通過左右旋的方式,在維護LEV為堆的同時,將要刪除結點旋到葉子結點處,然後刪除#include<iostream>#include<cstdio>#include<

Sicily 1097 LED Modding(類比題)

//類比題,理解題意比較辛苦//說的是在一個電路中,找到滿足條件的電阻,使得LED能夠發光且不超過LED管的額定電壓//用MAP對電阻值和名稱進行關聯//排個序,找到大於等於最優解的值就行了#include<iostream>#include<algorithm>#include<map>#include<vector>#include<string>using namespace std;int

POJ 2594 Treasure Exploration(傳遞閉包+最小路徑覆蓋)

//傳遞閉包的建立(Floyd) + 最小路徑覆蓋//這題有別於1422,原因在於它是一個有向圖,而非DAG,機器人可以繞一圈回來在走其他路//the roads of two different robots may contain some same

Sicily 1196 Conflict(傳遞閉包的建立)

//傳遞閉包//看了郭老的書才懂得傳遞閉包的建立//T為傳遞閉包數組//在6中運算關係中,可以簡化為<,<=,!= 3中//a>b ---> b<a//a>=b ---> b<=a//a=b ---> a<=b && b<=a//不等號關係的判斷需要另外加入//為了操作方便,用二進位位壓縮來表示變數之間的關係//T[a][b] = 1 (二進位為01)表示a <= b//T[a][b]

POJ 2488 A Knight’s Journey(DFS——騎士周遊問題)

//要按字典序輸出,所以要注意搜尋順序//最後一行不能留空行//唉,搜都要寫這麼久,還WA了那麼多次,太弱了我#include<iostream>using namespace std;int Case,X,Y;bool vis[50][50],ok;int dir[8][2] = {-1,-2,1,-2,-2,-1,2,-1,-2,1,2,1,-1,2,1,2};int path[30][2];bool legal(int x,int y){if(x < 1 || x

Sicily 1823 Hardest Job Ever!(單源最短路)

//單源最短路徑//Dijkstra + 優先隊列實現#include<iostream>#include<queue>#include<cstring>#define INF 1200000000#define MAXN 205#define MAXM 20005using namespace std;typedef pair<int,int> dis_v;//用一個pair類型存放當前結點的距離和結點編號int T,N,M;int

POJ 2262 Goldbach’s Conjecture(素數表)

//驗證哥德巴哈猜想,結論必然正確……故不必要檢測錯誤情況//用篩選法打表//如果i是素數,n-i也是素數,則這兩個數就是分解的結果//複雜度必須O(n)才能過,O(n^2)必定TLE#include<iostream>#include<cstring>using namespace std;const int MAXP = 10000010;bool isPrime[MAXP];int prime[MAXP];void

Sicily 1323 Switch text(字串處理)

//字串處理//很奇怪的一道題,關鍵是對結束的判斷和空行的檢查//用STL可以省很多事情#include <iostream>#include <string>#include <algorithm>using namespace std;string s1,s2;bool checkEmpty(string str)//檢查這一行是不是空行{for(int i = 0;i < str.size();++i)if(str[i] > '

POJ 2909 Goldbach’s Conjecture(素數表)

//這次是驗證哥德巴哈猜想的解有多少個,同樣核心是打素數表//思路和POJ 2262差不多,篩法打素表#include<iostream>using namespace std;const int MAXP = 400000;bool isPrime[MAXP];int prime[MAXP];void primeList(){memset(isPrime,true,sizeof(isPrime));for(int i = 2;i <=

Sicily 1686 Happy Children’s Day(線段樹)

//線段樹//WA了很多次,最後查出原因居然是建樹的時候初始化有最大糖果的下標錯了//我只有在葉子節點有初始化,其他點沒有,所以錯了,正確初始化應該是每個區間最左邊的點為maxid//線段樹插入和修改的inherit和update函數是關鍵,直到這道題總算摸索出套路了//建樹什麼都差不多,關鍵就看如何識別標記,如何處理區間與區間之間關係,如何回溯傳遞結果#include<iostream>#define MAX 100005using namespace std;struct

POJ 1657 Distance on Chessboard(搜尋題)

//搜尋題,王用寬搜解決,後用點和點的斜率解決,只有兩種情況,要麼1,要麼2。//車直線判斷即可,要麼1,要麼2。//象斜率判斷加所在格子的黑白情況進行判斷,我想出了一個好方法。行列同奇同偶,為白色,行列奇偶互異為黑色。//象如果在黑色格子上,他永遠到不了白色格子,這是性質。#include<iostream>#include<queue>using namespace std;bool vis[64];int dir[8][2] = {-1,-1,-1,0,-1,1,0

POJ 3006 Dirichlet’s Theorem on Arithmetic Progressions(素數表)

//簡單題。篩選法打素數表。#include<iostream>using namespace std;const int MAXP = 1100000;bool isPrime[MAXP];int prime[MAXP];void primeList(){memset(isPrime,true,sizeof(isPrime));isPrime[1] = false;for(int i = 2;i <=

POJ 3311 Hie with the Pie(Floyd+狀態壓縮DP)

//Floyd + 狀態壓縮DP//題意是有N個城市(1~N)和一個PIZZA店(0),要求一條迴路,從0出發,又回到0,而且距離最短//也就是TSP(旅行商)問題,首先不難想到用FLOYD先求出任意2點的距離dis[i][j]//接著枚舉所有狀態,用11位二進位表示10個城市和pizza店,1表示經過,0表示沒有經過//定義狀態DP(S,i)表示在S狀態下,到達城市I的最優值//接著狀態轉移方程:DP(S,i) = min{DP(S^(1<<i-1),k) + dis[k][j],

POJ 1077 Eight(BFS八數位問題)

#include<iostream>#include<vector>using namespace std;typedef int State[9];const int MAXS = 1000003;State st[MAXS],goal = {1,2,3,4,5,6,7,8,0};int dir[4][2] = {-1,0,1,0,0,-1,0,1};int

Sicily 1153 馬的周遊問題(DFS深度優先搜尋)

//經典的深度優先搜尋,必須剪枝才能通過,而且剪枝策略十分神奇,先走下一步可行拓展數最少的,看了大牛的題解才會的//也就是說假如當前結點有8個可以走的拓展點,對每個可行拓展點再計算它的可行拓展數,然後排序,先走那個可行拓展數最小的//就是先走那個最沒前途的點,這樣會更快,因為它這麼沒前途,要從其它點到達它就更難了,所以先走#include<iostream>#include<cstring>#include<vector>#include<algorit

POJ 3414 Pots(BFS倒水問題)

//BFS倒水問題,對於需要列印解得廣搜題,必須儲存搜尋狀態和狀態的父親指標,然後逆推,根據狀態和狀態之間的關係//判斷屬於那一種情況,並將解記錄,還有POJ的1606也是同樣類型的題,只不過要求有點點不一樣,規模也有點點不一樣//代碼也就不重複貼了~#include<iostream>#include<queue>#include<vector>#include<string>using namespace std;bool vis[105][1

總頁數: 61357 1 .... 13011 13012 13013 13014 13015 .... 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.