Time of Update: 2018-12-03
題意:給定一棵樹,其根節點是確定的,然後通過這個根節點可以有很多種遍曆方式(保證每條邊只進出一次),遠離根節點用0表示,向根節點靠近用1表示,則如010011與001101就是同一棵樹的兩種遍曆方式。然後給你兩個遍曆得到的01串(不超過3000個字元),問你這兩棵樹是不是一樣的。。。 分析: 這題稍微想一下可以想到應該通過一定的方式將兩個串都按照一定的規則變化,看最後兩個串是否一樣,很顯然可以想到去找這棵樹的最小的表現形式,即0儘可能靠前。。也就是儘可能先找最深的節點。。。這怎麼實現呢?可以
Time of Update: 2018-12-03
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4381Contest: ZOJ Monthly, July
Time of Update: 2018-12-03
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3511 Contest: ZOJ Monthly, July
Time of Update: 2018-12-03
題意:給你很多單詞,統計每個單詞出現的頻率。。。分析:題目沒什麼說的。。對AVL樹,是對BST的進行了平衡處理,保證任何一棵子樹深度差值不超過1.。。使得在任意情況下不會退化到O(n^2)。。。當出現不平衡時找到最靠近插入點的左右子樹相差超過1的根節點共分四種情況:1.左子樹比右子樹深超過1(只進行右旋R 或 先左旋後右旋LR)2.右子樹比左子樹深超過1(只進行左旋L 或 先右旋後左旋RL) 第一次寫,wa得淚流滿面。。代碼:#include<iostream>using
Time of Update: 2018-12-03
http://acm.hdu.edu.cn/showproblem.php?pid=3954 題意:初始每個英雄的層級為1,經驗為0,M li ri ei表示派li--ri去打怪,每個收穫的經驗值為當前層級level*ei,Q li
Time of Update: 2018-12-03
http://acm.timus.ru/problem.aspx?space=1&num=1297 題意:給定一個字串,輸出其最大迴文子串 分析:可以用manacher很方便求解,也可以用尾碼數組。。。對尾碼樹組而言,先中間設定一個不存在的值,反向接到後面。。rmq處理之後,每次對lcp(i, n-i-1)求以i為中心的奇數的迴文串,lcp(i,
Time of Update: 2018-12-03
題意:共有1-30000這些元素,每次M a b就是將a所在的棧放在b所在的棧的前面,C a表示查詢a的下面有幾個元素。。。10^6個查詢 分析:開始沒想清楚怎麼存他們之間的個數關係,也想過反向建並查集(其實無論反向還是正向都要維護兩個數組。。。),
Time of Update: 2018-12-03
僅管VC有提供相應的API和類來操作bmp位元影像、表徵圖和(增強)元檔案,但卻不支援jpg、gif和png等格式的圖片,而這幾種格式卻是常常要用到的。這裡我給大家介紹兩種辦法來操作這些格式的圖片。1.用API OleLoadPicture來載入JPG、GIF格式的圖片(註:不支援PNG格式,另外GIF只能載入第一幀,且不支援透明)OleLoadPicture 函數實際上建立了一個IPicture類型的COM介面對象,然後我們可以通過這個COM介面來操作圖片(實際上你也可以用API
Time of Update: 2018-12-03
http://poj.org/problem?id=2182題意:一個數組為1--n的一個序列,對這個數組的2--n個數字而言,告訴你他前面比他小的數位個數,求。。原數組的序列。。。 分析:設原數組a,題目給定的數組為b,則對最後一個數字,很明顯a[n] =
Time of Update: 2018-12-03
http://www.codeforces.com/contest/23 下面B,C都來自iSea大神的題解;A題【題意】給定一個串,求其最長重複子串長度, 【分析】考慮到長度為100,可以暴力,我考慮到在本機可以貼模板,用尾碼數組寫的,取height數組的最大值輸出即可; 【暴力的好的代碼】 【尾碼數組代碼】/*Apr2,2011 5:19:02PM yimao A-Youre Given a String... GNUC++ Accepted 30ms 1400KB*/
Time of Update: 2018-12-03
題目來源:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1729 題目分類:尾碼樹組/最小表法此題心得:學習兩個演算法時間:2011-7-21Hidden PasswordTime Limit: 1 Second Memory Limit: 32768 KB Some time the programmers have very strange ways to hide their passwords.
Time of Update: 2018-12-03
題目來源:http://poj.org/problem?id=3261 題目分類:尾碼數組此題心得: 熟悉尾碼數組的使用+單調隊列處理時間:2011-7-21Milk PatternsTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 4964 Accepted: 2143Case Time Limit: 2000MSDescriptionFarmer John has noticed that the quality of
Time of Update: 2018-12-03
題目來源:http://www.spoj.pl/problems/DISUBSTR/ 題目分類:尾碼樹組此題心得:學會用尾碼數組解決問題 作者:王耀宣時間:2011-7-21SPOJ Problem Set (classical)694. Distinct SubstringsProblem code: DISUBSTRGiven a string, we need to find the total number of its distinct substrings.InputT-
Time of Update: 2018-12-03
題目來源:http://poj.org/problem?id=2774 題目分類:尾碼樹組此題心得:學習尾碼樹組時間:2011-7-21Long Long MessageTime Limit: 4000MS Memory Limit: 131072KTotal Submissions: 11918 Accepted: 4798Case Time Limit: 1000MSDescriptionThe little cat is majoring in physics in the
Time of Update: 2018-12-03
一製作引導光碟片 這個方法需要自己有燒錄機,如果沒有的話就只能到市場上去弄一張番茄花園的系統安裝盤就可以了,裡面不但有進入Windos98的啟動項,而且還有幾個特別實用的工具,比如PowerQuest、Ghost8.3等等。如果有燒錄機就太好了,下載一個番茄花園的系統安裝映像檔案,然後自己燒錄一張光碟片就行了。 有了引導光碟片,開機按Delete鍵進入CMOS設定,把光碟機引導設定為第一就可以了。 二、製作引導U盤 隨著U盤的廣泛使用,它幾乎已經完全替代了磁碟片,如果能製作一
Time of Update: 2018-12-03
http://poj.org/problem?id=2418 題意:輸入很多串,最後按字典序輸出串和出現的頻率 分析:本來來練BST的,順便用map一下,發現map還不熟悉。。string 行輸入寫法:while(getline(cin, b)) map也可以自訂key的結構類型struct,而且加等號了相當於multi_map了。。 這題很奇怪。。c++能AC,但g++WA了。。。。--!!!終於發現原因了,G++浮點型標準輸出是%f而不是%lf,這裡可能會導致wa。。。這題就是這樣的。。。。
Time of Update: 2018-12-03
http://acm.hdu.edu.cn/showproblem.php?pid=1556 染色,每次染[a, b],然後查詢所有1--n個節點每個節點被染得次數。。。以前做過類似的,但是沒有理解梳妝數組反向用的奧妙。。。其實就是將常規的查詢和更新操作反向了。。。對更新[a, b],則將a位置加1就相當於將這個位置往後的地方全部加1了,然後將b+1位置減1就相當於將這個位置往後的位置都減1了,那下次尋找的位置x如果在這個區間後面的話,肯定就沒有被加1了,如果x在a與b的中間,則一定加1了。
Time of Update: 2018-12-03
每次寫二分都要糾結於邊界。。。總結一下。。。 /*二分三種情況總結:(預設數組的元素是升序)*/int bs(int num) //求滿足條件的一個,不管它的位置。。。{int l=1, r=n, mid, tmp;while(l<=r){mid = (l+r)>>1;tmp = query(mid);if(tmp==num)return mid;else if(tmp>num)l = mid+1;elser = mid-1;}return -1; //表示沒有滿足的。
Time of Update: 2018-12-03
題意:給出10000個任務,每個任務告訴你收益pi和到期日di,然後求最大收益。。。 分析:以前做過的,突然發現忘了當時並查集怎麼做的。。。水啊。。。其實就是貪心,按照收益從大到小排序,然後每次選最大的那個去填可以填的最大的一個時間。。。這個時間可以用並查集來維護,最開始每天都指向自己,當某一天被用之後就指向前一天,(或者可以直接指向前一天指向的那一天---沒必要)。。。當然find為0的無視掉就好了。。。。 其實這個很顯然也可以用線段樹維護這個最大值,但時間慢太多了。。。 並查集代碼:#i
Time of Update: 2018-12-03
話說這題正好是我出生年啊。。。 題意:給一個20000個元素的數組。。。對每個元素有兩個性質,深度v和位置x,對任意兩個元素i,j有一個值=max(vi, vj)*|xi-xj| 求所有i j之間的值的和。。。 分析:因為對每兩個元素都是取v值最大的一個來算,我們索性先按照v從小到大排序,然後對j位置而言,與前面的任意i位置而言都乘以vj。。。這時候我們就要算出前面比j大的元素的x的和,然後減去大於j的x的個數*xj。。。小於的同理。。。所以用兩個樹狀數組,一個維護個數,一個維護和。。