posted on 2019-08-20 22:07:29
蒟蒻的第一篇題解
教你怎樣打表
這一道題目其實是個數學題,也不是很難,我們可以先在草稿紙上寫一下
用(x,y)代表a和b的係數12
3456
上車u(1,0)
(0,1)
(1,1)
(1,2)
(2,3)
(3,5)
下車d(0,0)
(0,1)
(0,1)
(1,1)
(1,2)
(2,3)
增量△(0,0)
(0,0)
(1,0)
(0,1)
(1,1)
(1,2)
剩餘r(1,0)
(1,0)
(2,0)
(2,1)
(3,2)
(4,4)
我們發現,從3開始的增量與前數兩個的上車數相等,即
△_i=u_(i-2) ,if(i>=3)
由題目d_i=u_(i-1) ,if(i>=3)
因此,我們完全可以將第i個車站對應的剩餘人數r預處理打表出來
打表程式如下
科學的打表在一些資料範圍大的題中很有幫助#include #include #include #include #include #include using namespace std;
int a[21][5][3];
int main()
} for(int i=1;i<=20;i++)
cout << endl;
} cout << endl;
} fclose(stdout);
return 0;
}
上述程式執行後得到以下內容
然後可以將打出來的表與自己找規律找出來的幾個值對比來確認是否正確1
1,0,
0,0,
0,0,
1,0,
20,1,
0,1,
0,0,
1,0,
31,1,
0,1,
1,0,
2,0,
41,2,
1,1,
0,1,
2,1,
52,3,
1,2,
1,1,
3,2,
63,5,
2,3,
1,2,
4,4,
75,8,
3,5,
2,3,
6,7,
88,13,
5,8,
3,5,
9,12,
913,21,
8,13,
5,8,
14,20,
//太長了所以就複製了前9個
確認後即可刪去**中的endl和cout << i << endl;
修改成符合題目條件的格式,再複製貼上
正式程式如下
因為我把列表中四個資料都打出來了,所以就開了個三維陣列進行儲存,其實可以只留剩餘人數r#include using namespace std;
int a,n,m,x;
int main()
; cin >> a >> n >> m >> x;
int b=(m-p[n-1-1][3][0]*a)/p[n-1-1][3][1];
cout << p[x-1][3][0]*a+p[x-1][3][1]*b;
return 0;
}
最後還有易錯點,坑了我兩次提交
我的三維陣列都是從0開始的,但是一開始我按照從1開始做的,可慘了orz,所以希望大家一定要嚴謹,畢竟wa事小,最後白費了幾年努力就不好了
蒟蒻的第一篇題解(如何打表)謝謝大家,希望能過
洛谷 P1011 車站 題解
傳送門 ros最近開始做水題了 可能是前段時間做數論題做到推導遞推式子的題做多了所以一上來做這題就推導式子然後寫完 發現樣例沒過。這是怎麼回事?後來ros發現問題出在兩個數字都是符合斐波那契數列關係的,而ros一開始推導式子的時候以為其中乙個量是符合線性關係的所以出現了問題。好的現在bug都解決了開...
洛谷 P1011 車站 (暴力)
題目鏈結 火車從始發站 稱為第 1 站 開出,在始發站上車的人數為 a 然後到達第 2 站,在第 2 站有人上 下車,但上 下車的人數相同,因此在第 2 站開出時 即在到達第 3 站之前 車上的人數保持為 a 人。從第 3 站起 包括第 3 站 上 下車的人數有一定規律 上車的人數都是前兩站上車人數...
刷題報告003 洛谷P1011 車站
哎,昨天好怠惰只想玩 結果對著一道高精度看了半天覺得自己還是算了吧hhh 今天起來就沒有看那道高精度 雖然知道基本思想是什麼但是不會寫 於是寫了一道水題,基本就是找規律 遞迴,沒什麼技術難度 廢話有技術難度的題目並不會寫 題目描述 火車從始發站 稱為第1站 開出,在始發站上車的人數為a,然後到達第2...