杭電1003,杭電ACM1030什麼思路啊

時間 2023-03-25 08:25:09

1樓:匿名使用者

你用雙重迴圈來遍歷效率較低,當輸入資料很多時就超時了。要用動態規劃:

#include ""

int main()

sum = max = a[0];/max = a[0];

pos1 = 1;

pos2 = 1;

k = 1;

for(j = 0; j < m; j ++for(j = 1; j < m; j ++printf("case %d:",i);

//printf("%ld %d %d",max,pos1 + 1,pos2 + 1);

printf("%d %d %d",max,pos1,pos2);

if(i < n)

return 0;

2樓:威武且犀利的彩虹

你那個a宣告在棧上太大了吧?改成堆試試:

int *a = new int[100000];

3樓:匿名使用者

複雜度太高了,用dp吧。

杭電acm1030什麼思路啊

4樓:匿名使用者

臨時看的題目,想到乙個思路,沒實踐,僅供參考。

已經知道了起點m和終點n,現在就是要找到乙個通用的規律讓m盡快到達n。

由圖形中可以看出,假設乙個起點是處於三角形的頂部,比如1,2,4,5,7,9...

那麼它到它下面某一層的點的距離都是一樣的,比如1到2和1到4。比如2到10和2到12和2到14。等等。

根據這個規律我們可以想到,如果n是在m為頂點的三角形的下面,那麼只要找出之間隔了有多少層,問題就解決了。

如果m不是三角形的頂點,我們可以找到m所在的最小的三角形,比如6就是2,8就是4,13就是7...

如何判斷是否在某點下面,首先終點n的值我們是知道的,我們可以算出它所在的層數。

那麼m和n之間的層數差我們就知道了,我們可以算出頂點的左右邊界,如何加以判斷。

在的話,規律很好找。不在的話,在左右邊界中找到n最近的邊界點,算出差值,就是額外的步數,再加上到這一層的步數。

找規律的話,假設頂點f(x)在第x層,那麼它到下一層x+1層的右邊界就是 f(x)+2*x-1 左邊界就是f(x)+2x+1,依次類推,每隔一層頂點到邊界的步數就加2。

當然你也可以找通用表示式,這個事情我就不做了。

純手打,可能沒表達清楚,可以一起**。

5樓:馬拉古城

在那個**上要你輸出最短的通道,例子是6 12

也就是說6-》7-》13-》12,通道為3或者是6-》5-》11-》12,通道也是3

杭電acm1005,答案是對的還是過不了

樓主的改 if t 48 flag 0 和 cout 超時 或者 超記憶體 實驗方法 的ac 改 int s 55 for i 2 i 50 i 也就是算到50項,那麼我們可以 s 48 s 49 也就是第49和50項為1 1 然後我就 但是這樣也會wa掉 而且當n 48的時候 m 1 但是根本沒s...

從杭電到西湖怎麼走最方便啊,從杭電校門到西湖怎麼走

公交線路 15路高峰大站車 y6,全程約10.1公里1 從杭電積體電路設計有.步行約520公尺,到達天苑花園站2 乘坐15路高峰大站車,經過5站,到達曲院風荷站 也可乘坐k15 15 3 步行約100公尺,到達玉泉站 4 乘坐y6,經過6站,到達淨寺站 5 步行約130公尺,到達西湖 你是在下沙的杭...

各位學長學姐,杭電專業問題請教,各位學長學姐,杭州電子科技大學是一本還是二本

憶杭電 你好啊!我是學長,根據在教科辦待了兩年的經驗,我來回答你吧。1 http www.packedu.net t67747.html,http publish.hdu.edu.cn zyjs.asp?title 包裝工程系,你自己看看吧。2.如果你想轉專業的話,你的成績要好,保證兩個學期都在你們...