Time of Update: 2018-12-03
題目串連裸題!不是三分就是二分了,根據題意,明顯的三分搜尋。#include<stdio.h>#include<math.h>#define eps 1e-8double count(double x,double y){return 6 *pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x;}int sign(double x){return x<-eps?-1:x>eps;}double search(double
Time of Update: 2018-12-03
題目串連這題限制較高。一般的演算法過不了。自己做起來很吃力。到網上參考牛人代碼為之驚歎,處理方法真是不可思議。佩服!佩服!這題痛點就是如何判斷汽車加油的問題。為什麼加油是一升一升地加。主要是設計的dp搜尋是關於路徑與油的體積的狀態。我認為非常巧妙。把問題簡化了許多,能用的dp的思想和優先隊列來進行搜尋,為之叫絕。稍微簡化了代碼,時間也減小了點,心裡還是稍有點欣喜。#include<cstdio>#include<queue>#include<cstring>#
Time of Update: 2018-12-03
點擊開啟連結題意:從s1的序列中,一次從前往後抽出一些元素,在s2中也從前往後抽取一些元素,s1中抽取的元素組成一個新子序列t1,s2中抽取的子序列為t2,問t1==t2這樣的序列中,滿足以上條件,t1或t2中最多的元素是多小。(t1中的元素個數一定等於t2中元素個數)這題就是典型的最長公用子序列問題。dp策略:用dp[i][j]表示s1中抽取的元素是第i個,s2中抽取的元素是第j個。當有s1[i-1]==s2[j-1]時,從dp[i-1][j-1]的狀態轉移到dp[i][j]時,就有dp[i]
Time of Update: 2018-12-03
題意: 根據每個村莊的距離,在這些村莊裡建一些office使得每個村莊到最近的office距離和最短。分析: 如果此題建一個office,那麼很容易得到,只要建在中間,就一定是最小的。這就是中值最小法,而這題是建立多個office,那麼應該區間dp。設dp[i][j]在前j個村莊也建立了i個office。對於每個區間i到j,取中間的作為建立點。用dis記錄每個區間最短距離。那麼轉移狀態方程:
Time of Update: 2018-12-03
唉!這題完全沒必要用線段樹,用一個很常規的方法就可以過了。不解釋,常規方法就A了。#include<stdio.h>#include<string.h>int q[100005];int main(){int n,Lpos,Rpos,a,b,L=100005,R=-1,color;char op[2];while(scanf("%d",&n)!=EOF){memset(q,0,sizeof(q));while(n--){scanf("%d %d %s",&
Time of Update: 2018-12-03
題意: 一個數分解成質因子相乘,原數的每個位相加等於分解後的數每個為相加的和。此題就是分解因子+枚舉。注意,素數不能算。#include<stdio.h>typedef long long LL;void bitsum(LL n,LL *s){int t;while(n){t=n%10;n/=10;*s+=t; }}int main(){LL num,ans,tmp;LL sum1,sum2;bool flag;
Time of Update: 2018-12-03
題目串連分析:此題就是一個最長上升子序列的一個變形題,沒什麼難度。關於LIS問題,有兩種演算法,一種是dp,時間複雜度為n^2,另一個是二分+Dp,之所以能用二分尋找,關鍵在於它用輔助數組儲存了具有遞增的資料,正好適宜二分尋找。而尋找的整個序列D中,有錯落的遞增式,也就必定存在最長的一個,它們的元素就構成了一個遞增有序的集合M,第一個必定是在M中最小,而且第一個最小的元素,一定是在D中靠前的。分析一下nlogn的方法:設輔助數組為dp[]。可以知道最短len=1;此時dp[1]=a[1],若第二
Time of Update: 2018-12-03
基數排序:基數排序是一種線性排序演算法。設n個元素不超過d位,而且每位都介於0到9之間。基本思想是把最高位或(最低位)的數字看做第一關鍵字,次高位(次低位)數字看作是排序的第二關鍵字,一次類推..。 比如: 26 25 43 12 5 33 (按著次低位)先有十個桶:0 1 2 3 4 5 6 7 8 9 或m個桶0<m<=10;按個位 ---> (12) (33 ,43) (25,5) (26)
Time of Update: 2018-12-03
一直希望真正的從事遊戲開發,可是自己淺薄的編程知識,一直讓我無從下手。人要生存,為了點微博的工資,不得不每天撲在工作上,天天研究Android,沒有搞出什麼狗屁東西,真心不喜歡Android,覺得不是自己想要的。直到今天看了一篇文章,又激起了自己的熱血,不能讓自己的夢想自己擱淺,人生能有幾回搏,此時不搏何事搏呢?趁著年輕,努力吧,少年!遊戲編程的學習,說起來簡單,要學的東西簡直是個史前巨獸,龐大無比的體系,浮躁枯燥的演算法,無一不讓人望而卻步。可是,就這樣放棄了嗎?想起老男孩中唱的那樣:未曾綻放
Time of Update: 2018-12-03
參考:http://developer.android.com/guide/components/tasks-and-back-stack.html在Android中,一個應用程式裡面,通常包含了多個相互結合的Activity。每個Activity通常被設計為可以為使用者執行某個特定的動作,Activity與Activity之間可以通過Intent相互的跳轉。甚至,可以通過Intent的action來啟動另外一個應用程式的Activity,這個過程給使用者的感覺就像這個Activity就是你的應
Time of Update: 2018-12-03
轉自:http://www.cppblog.com/walkspeed/archive/2007/12/28/39823.html 標頭檔 regex.hpp 常用的類 boost::regex Regex boost::cmatch 以char數組為容器,儲存匹配傳回值。 boost::smatch 以std::string為容器,儲存匹配傳回值。 boost::regex_match 匹配演算法 boost::regex_search 尋找演算法
Time of Update: 2018-12-03
題意:對於一個整數n,表示該區間整數的個數,求至少有k個連續的數是該區間中一段的最大和。n的範圍在1~10^6。k(-1000~1000);分析:這道題看似有點像樹狀數組,但要想求出區間至少有k個連續的數的和是最大,恐怕是有點難度,頂多是求某一區間的和。不過可以沿著這個思路想,sum(n)-sum(i)?。如果這樣想,我們就要判斷n-i>=k;那換種思路:在第i的前面尋找最小值,在i+k的後面尋找最大值。這樣sum(n)-sum(i)一定是第i個迴圈中最大的一個。對於每次這樣迴圈,我只要定
Time of Update: 2018-12-03
轉自:http://www.cppblog.com/Lee7/archive/2008/12/14/69394.html一、 1、類型不同 BOOL為int型 bool為布爾型 2、長度不同 bool只有一個位元組 BOOL長度視實際環境來定,一般可認為是4個位元組 3、取值不同 bool取值false和true,是0和1的區別 BOOL取值FALSE和TRUE,是0和非0的區別 二:
Time of Update: 2018-12-03
#include <iostream>#include <string>using namespace std;int main( void ){ //string 類型的修改成功 { const string a( "abc" ); string& b = const_cast<string&>( a ); b = "123" ; cout << a
Time of Update: 2018-12-03
轉自:Webkit技術譯文系列(一):WebCore中的主要對象 原文連結 http://webkit.org/coding/major-objects.htmlWebCore使用許多個物件來表示記憶體中的web頁面,本文描述了其中的一些主要對象以及它們之間的關係。在某些情況下,對象之間的串連會斷開,導致null 指標引用。因此在遍曆這些指標時,代碼必須仔細的考慮"分離"(detached)的情形,並優雅的處理null 指標。 +---------+ | Chrome | +----+---
Time of Update: 2018-12-03
Bjarne在他的The C++ Programming Language裡面給出過一個助記的方法: 把一個聲明從右向左讀: char * const cp; cp is a const pointer to char; const char * p; p is a pointer to const char; char const * p; 同上(因為C++裡面沒有const*的運算子,所以const只能屬於前面的類型);結論: char * const
Time of Update: 2018-12-03
轉自:WebCore中的渲染機制(一):基礎知識原文連結:http://webkit.org/blog/114/webcore-rendering-i-the-basics/DOM樹web頁面解析後形成節點樹,稱作文件物件模型(簡稱DOM),樹上所有節點的基類是Node。Node.h節點分為幾類,與渲染代碼相關的節點類型有:Document - 樹的根節點總是Document,WebCore中有三個文檔類:
Time of Update: 2018-12-03
在對apk試用代碼混淆,最後打包的時候,出現了如下的錯誤: Proguard returned with error code 1. See console proguard.ParseException: Unknown option 'and' in argument number 9 at proguard.ConfigurationParser.parse(ConfigurationParser.java:170) at
Time of Update: 2018-12-03
webkit中指令碼執行代碼路徑:void HTMLDocumentParser::pumpTokenizer(SynchronousMode mode){。。。bool HTMLDocumentParser::runScriptsForPausedTreeBuilder(){。。。 bool HTMLScriptRunner::execute(PassRefPtr<Element> scriptElement, const TextPosition1&
Time of Update: 2018-12-03
題意: 有n中不同類型的長方體,同一種類型的長方體可以無限多。只要放置在上面的長寬嚴格小於下面的長寬就可以放置,因為必須留下適當的空間讓猴子爬上去,問你n種長方體可以搭成最高的高度。分析:這題很容易想到用動態規劃實現。考慮到每個長方體有六種 放法,而且按著所給的條件放置,先對其進行排序,按著長(寬)排序。用dp[I]表示放置 i個長方體所達到的最高的高度。代碼:#include<cstdio>#include<cstring>#include<algorithm&