Ural_1613. For Fans of Statistics(快排+二分)

  思路就是快排+二分尋找。有重複的數字,多加了一點小處理。My Code:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 70005;class node {public:int num;int ord;} a[N];bool cmp(node a, node

POJ_2823 Sliding Window(單調隊列)

  很裸的單調隊列問題,不過O(n)的演算法寫出來5188+ms,超5s了。。。誰能告訴我500+ms的神級代碼是什麼。。.T_TMy Code: #include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 1000005;struct node {int i;int num;}q[N];int ans[N];int b[N];int main(

POJ_3667 Hotel(線段樹)

  話說這題從我開始學線段樹就開始做,直到今天才A掉,前後有近3個月吧。今天重新翻這個題,思路有點亂,看了一下大牛的代碼。然後就自己寫,沒想到,居然敲了一遍就過了,激動啊~~ 3667Accepted3200K625MSC++2422B2011-10-25 17:50:22思路:  結構體定義包含:l, r, cov, ls, sum, rs。其中:ls表示從左邊數連續的空餘空間大小,rs表示從右邊數連續的空餘空間大小。sum表示整段上最大的空餘空間大小。查詢時。當查詢到當段段的sum >

雜湊(Hash)表學習筆記

  說點自己的理解。Hash 是散列的意思,所謂的散列,可以理解為將字串轉換為固定長度(一般是更短長度)的數值或索引值的方法。資料結構書上提到的構造hash函數的方法有四種:平方取中法、摺疊法、除留餘數法,直接定址法。  此外,有了hash函數就有衝突,就是說可能兩個不同的字串經過hash函數處理後的結果相同。解決衝突的方法有:開放定址法、鏈地址法;hash例題見:http://www.cnblogs.com/vongang/category/316530.html

POJ_1151 Atlantis(線段樹)

  /*線段樹掃描線問題,感覺可以作為這類問題的模板。問過師兄以後才過的。。。按y軸建線段樹。*/struct node{int l, r, c; //c表示被覆蓋的情況,不為0表示被覆蓋 double sum, len; //len表示當前段的長度,sum表示有效長度。就是可以計入求面積的長度}node[N<<2];struct line{double x;  //記錄x座標 double y1; double y2;

Ural_1348. Goat in the Garden 2(計算幾何)

  亂搞題,就是看仔細不仔細了。代碼很水,分好幾種情況。c所在的位置分三種情況,分別計算;ab那條線段也可能是平行x軸或y軸,也分別計算。My Code:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#define pi 3.1415926535using namespace std;struct

POJ_2828 Buy Ticket(線段樹)

  跟2182一樣,都是找空。把資料倒插,pos[i]表示前邊有pos[i]個空位,每填一個空位就把那個空位刪掉。例如(0表示空位):0 201 191 380 31初始空位:1      2      3      40      0      0      0把第n個數填到pos[n]+1空位上:1      2      3      431     0      0      0 第n-1個:2      3      40     38      0第n-2個: 2      4 0 

URAL 1009. K-based Numbers

/*這題貌似就是找規律。f1 = k-1;f2 = k*k - k;f3 = (f1 + f2) * (k-1);//(k-1)表示首位不為0的個數,比如n = 3時, 首位可能是1, 2, 3, 4, 5, 6, 7, 8, 9。My Code:*/#include <iostream>#include <cstdio>using namespace std;int main(){//freopen("data.in", "r", stdin);int f1, f2,

POJ_3267 The Cow Lexicon(DP)

  /*拿到這題已經好幾天了,因為國慶放假回家,家裡正好斷網,一直沒做,今天回到學校終於把它做了。表示已經被dp虐了n久了,還是不得要領,只能守著dp的解題報告過日子。T_T...題意:給一個串mes[], 一個字典dic[],求讓這個串完全符合字典裡的串時刪除的最小元素個數。思路參考自:http://www.cnblogs.com/lyy289065406/archive/2011/07/31/2122638.html:按mes[]串從後往前匹配,最壞的情況是 dp[i] = dp[i+1]

POJ_3167 Cow Patterns

DP,代碼有點小白。。。#include <stdio.h>#include <string.h>#define N 351int main(){int t, i, j, max;int a[N][N], f[N][N];//freopen("data.in", "r", stdin); scanf("%d", &t); memset(a, 0, sizeof(a));for(i = 1; i <= t; i++)for(j = 1; j

HDU_1232 暢通工程(並查集)

  #include <iostream>#include <cstdio>#include <cstring>#pragma comment(linker,"/STACK:655360000");using namespace std;const int N = 1002;int f[N], rank[N];int find(int x){int k, r, j; r = x;while(r != f[r]) { r = f[r];

HDU_3339 In Action(Dijkstra + DP)

  個人感覺這個題挺好,用到了 最短路+DP,題意很容易就看出來了,其實就是0-1背包問題,狀態轉移方程:dp[j] = min(dp[j], dp[j-v[i]] + w[i]), 背包容量V = sum(v[0]+v[1] +...+v[n]},]其中每點的power為v[i], 0點到i點的最短路為w[i];然後再在i = [sum/2+1, sum]範圍內找min(dp[i])。  ps:偶悲劇的把i的範圍寫成i = [sum/2, sum]了,貢獻無數WA。。。鬱悶!!!My

Ural_1126. Magnetic Storms 單調隊列

  話說單調隊列!= 優先隊列。可憐我捧著算導看了半天優先隊列。題意讀的很費勁,最後問得師兄。就是給定一個M,然後再給一個序列,求給出的序列裡連續M個數中的最大值。最後把這些最大值輸出,其實就是很裸的單調隊列。然後開始在網上搜有關單調隊列的資料,從這裡http://www.felix021.com/blog/read.php?1965學會的。其實就是維持隊列的單調性,別管是單調增還是單調減。隊頭元素永遠是最列的最小值(或最大值)。  #include

HDU_1051 && POJ_1065 Wooden Sticks(貪心)

  典型的貪心題目,做過很久了,今天複習貪心,回頭看了看,順便把報告補上。我的思路是做一個標記變數flag和一個計算的變數k(k = n),flag初始為0,每次找一個滿足(l <= l' && w <= w' && !flag)的序列,並將序列元素的flag標為1,總序列就會減少一個數所以k--,找完一個序列,結果ans++。然後回頭再找第一個falg = 0的元素,確定新的序列。如此迴圈。。。代碼:#include <iostream>

HDU_2523 SORT AGAIN (Hash)

  Hash思想,因為題目要求第K大的數,可能很多人會想到先從小到大排序,然後找到第k個數。但是,注意,|xi - xj|可能會出想重複,也就是說排好序還得處理重複。Hash的大體思路是:將|xi - xj|作為一個hash數組的下標,如果hash[|xi - xj|]為空白則hash[|xi - xj|]++;尋找第k大時直接遍曆一遍hash數組就行;代碼:#include <iostream>#include <cstdio>#include <cstring&

Ural_1207. Median on the Plane(計算幾何)

  /*思路完全搞亂,開始就沒想清楚就寫。我暈,各種WA。思路:  找到所有點中最下邊一層點裡邊最靠左的點d。然後求d到其他每個點連線與x軸的夾角Θ(0 <= Θ <= π 因為d的縱座標最小)。然後從小到大排序,找到存角度的數組裡n/2號點就是要找的另一個點。*/My Code:#include <iostream>#include <cstdio>#include <cstring>#include

HDU_1257 最少攔截系統(DP)

這題其實就是求最長上升子序列,可是今天丟人丟大了,前幾天剛做個這道題,今天比賽直接把代碼貼上了,晚上學長讓我講講怎麼用DP做的。一看就傻眼了,我自己心裡還想這題怎麼能這麼做呢!討論完題目回頭一想還確實是這麼回事。唉,悲劇啊~~~~可以看看這組數11389 207 155 300 299 170 158 65 299 180 40它的最長上升序列怎麼取?肯定不能在某個元素所在的遞減子序列裡邊取兩個元素。所以,從每個下降子序列裡邊取一個元素構成它的最長上升子序列。這個序了的最長上升子序列就是155,

Ural_1017. Staircases(DP)

  這題糾結了一天,到現在也沒搞很明白,轉移方程 dp[i][j] += dp[i-j][k]; ( 0 <= k < j),表示將最後一層(最高的一層)拿掉之後的所有子結構的和。代碼:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 501;long long dp[N][N];int main(){//freopen("

休息幾分種,學幾個bash快速鍵

From:http://roclinux.cn/?p=864 用快速鍵,有兩個好處:1 成就感!2 效率!停下手裡活,學點一舉兩得的小技能,保證五分鐘搞定!“棕色粗體”表示“我推薦的”!Ctrl-A 相當於HOME鍵,用於將游標定位到本行最前面Ctrl-E 相當於End鍵,即將游標移動到本行末尾Ctrl-B 相當於左方向鍵,用於將游標向左移動一格Ctrl-F 相當於右方向鍵,用於將游標向右移動一格Ctrl-D 相當於Del鍵,即刪除游標所在處的字元Ctrl-K

HDU_2066 一個人的旅行(Dijkstra)

  開始用Floyd做的,TLE!更二的時我自己找了一組1 1000 的資料,4S才算出來,本身程式就有問題,我居然還交上去了。。。後來用Dijkstra做,過了。。。200+ms;#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 1005;const int inf = 1000000;int dis[N][N];int low[N]

總頁數: 61357 1 .... 9432 9433 9434 9435 9436 .... 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.