Topcoder SRM 585 DIV2 解题报告 //缺1000
------------
|
----
从前往后扫描一遍即可。。
#include <iostream> #include <cstring> #include <cmath> #include <vector> using namespace std; class LISNumberDivTwo{ private: public: int calculate(vector<int> seq) { int ans=0; int n=seq.size(); for (int i=0;i<n;i++) { while (i+1<n&&seq[i]<seq[i+1]) i++; ans++; } return ans; } };------------
|
----
从叶子节点2*n走到2*n+1,遍历了三个城市,采用这种规则走完最下两排城市。
接着计算n-2
推出公式。。。
f[n]=f[n-2]+(2^n)/2; (n>0)
f[0]=1;
#include <iostream> using namespace std; class TrafficCongestionDivTwo{ private: long long two[70]; public: long long theMinCars(int treeHeight) { long long ans=0; int n=treeHeight; two[0]=1; for (int i=1;i<61;i++) two[i]=two[i-1]*2; while (n>=1) { ans+=two[n-1]; n-=2; } if (n==0) ans+=1; return ans; } };------------
------------