閒來無事把賽碼網的幾個模擬測試做了下,其中一些解題思路即感悟記錄於此。
概要: 總共2個題,乙個小時的時間安排。題目難度適中偏簡單。
題目描述:
小賽要去位於 a 市的小碼家。小賽來到 a 市的車站,買了一張 a 市的地圖,他發現這裡的地形非常的複雜。a 市的街道一共有 n 個路口,m 條道路,每條道路連線著兩個路口,並且有各自的長度。目前,小賽所在的車站位於編號為 1 的路口,而小碼家所在的路口編號為 n,小賽準備打計程車去,當然,路程越小,付的錢就越少。問題擺在眼前:請幫助小賽尋找一條最短路徑,使得他可以花最少的錢到達小碼家。
大概這就是典型的最短路徑演算法吧,節點個數也不多,但是也不少,想用什麼全排列一類的列舉肯定是會超時的,所以可以使用dijkstra演算法來做,時間複雜度o(n*n)。
#include #include #include #include #include #include using namespace std;
int dijkstra(vector>& table, vector& marks, vector& dist, int n)
vectormarks(n, false);
vectordist(n,int_max);dist[0] = 0;
int result = dijkstra(table, marks, dist, n);
cout << result << endl;
return 0;
}/*#include using namespace std;
int main()
vectordis(n+1,int_max);
vectorvisited(n+1,false);
dis[1]=0;
while(1)
}} return 0;
}*/
題目描述:
我們稱乙個正整數n是完美數,如果n的所有因子的平方和f(n)是乙個完全平方數。
例如n=10,那麼f(n)=1+4+25+100=130,所以10不是乙個完美數。
請求出小於n的所有完美數的和。
對於40%的資料n<=10000
對於100%的資料n<=1000000
這道題也是暫時想不出有什麼更優的方法,唯一能想到的就是按規則來列舉,最後也是過了。
#include #include using namespace std;
/*bool check(int num)*/
bool isvalid(int n)
long long x = sqrt(ans);
if(x*x==ans) return true;
else return false;
}int main()
cout << ans << endl;
return 0;
}
找工作路漫漫,但求不忘初心,回首對得起走過的路。 3月31號小結
動態規劃小結 在這段時間的練習中,漸漸的發現dp的一些小技巧,不像原來那樣的懵,也對dp有了簡單的認識。對於這些情況,我們要一一的列舉出來,再根據題目所要求的選擇情況最優。揹包問題 該問題是對於一件物品選擇放還是不放,不能對於這件物品切割。如果可以對這件物品進行切割則是貪心問題,如果不能切割則為揹包...
2023年10月31號 c 過載建構函式
include using namespace std class myclass myclass const myclass b myclass myclass f myclass y myclass y t myclass addf myclass y myclass y t int main ...
12月3號面試題記錄
12月3號跑了兩場面試,上午是青果軟體,下午是長城醫療,青果軟體讓做乙個ssh框架,進行功能實現,不太會做。果斷被刷,下午的長城醫療題目有幾個不會,回來查了一下,果斷記錄上來 字串s長度為n,其中字元各不相同,長度為2的子串的個數為n 1個 字串 m x43 n p 102q 的長度是7 二進位制轉...