PTA -- A1046 Shortest Distance
生活随笔
收集整理的這篇文章主要介紹了
PTA -- A1046 Shortest Distance
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
題意及思路
題意:有N個節點(1至N),求給定的st號到en號的距離最小值,這些點構成一個環,即1->2 ... ->N ->1。
思路:第一步,預處理操作,以dis[ i ] 表示:第1號節點到 i 所指的下一個節點的距離(順時針的下一個位置),同時記錄環的總距離sum。第二步,計算給定請求的兩點距離最短和,由公式可得dis[ en - 1 ] - dis [ st - 1 ] 。最終取前面所得值t 和 sum - t 的較小值即可。(公式需要想一想,下面附上了思維草圖,很不嚴謹)
注意點:第一點,st ,en注意大小,若st > en ,則交換。第二點,雖然這題就是一個簡單的模擬,但是給定的范圍蠻大,如果使用遍歷數組O(n)復雜度的暴力法,無法在給定時限內完成,所以這題的關鍵在于預處理操作。
附上思維草圖:(右邊紅色部分是例子)
?
?
代碼
#include <iostream> #include <algorithm>using namespace std;const int MAX = 100005; int dis[MAX],arr[MAX];int main(){int n;cin >> n;int sum = 0;for(int i=1;i<=n;i++) {cin >> arr[i];sum += arr[i];dis[i] = sum; //key code }int m,st,en;cin >> m;while(m--){cin >> st >> en;if(st>en) swap(st,en);int t = dis[en-1] - dis[st-1];cout << min(t,sum-t) << endl;}return 0; }?
轉載于:https://www.cnblogs.com/kyrie211/p/11288667.html
總結
以上是生活随笔為你收集整理的PTA -- A1046 Shortest Distance的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不孕不育的症状表现有哪些?
- 下一篇: Emuelec模拟器和月光宝盒哪个号