思路:
1、以dis[i]表示1號結點順時針方向到達i號結點的距離,sum表示一圈的總距離。題目要求的就是dis(left-right)和sum-dis(left-right)中的最小值。
2、dis[i]記錄從第1個結點到第i個結點的距離。
注意:
1、查詢的兩個編號left和right可能left>right
2、沒有預處理dis陣列會超時
#include
using
namespace
std;
int main()
d[0] = 0;
for(int i=1;i<=k;i++)//dis陣列記錄從1號位開始到第i位的距離(順時針)
cin>>m;
for(int i=1;i<=m;i++)
return
0;}
PAT B1046划拳(簡單模擬)
划拳是古老中國酒文化的乙個有趣的組成部分。酒桌上兩人划拳的方法為 每人口中喊出乙個數字,同時用手比劃出乙個數字。如果誰比劃出的數字正好等於兩人喊出的數字之和,誰就贏了,輸家罰一杯酒。兩人同贏或兩人同輸則繼續下一輪,直到唯一的贏家出現。下面給出甲 乙兩人的划拳記錄,請你統計他們最後分別喝了多少杯酒。輸...
《演算法筆記》3 1小節 入門模擬 簡單模擬
時間限制 1.000 sec 記憶體限制 32 mb 有乙個長度為整數l 1 l 10000 的馬路,可以想象成數軸上長度為l的乙個線段,起點是座標原點,在每個整數座標點有一棵樹,即在0,1,2,l共l 1個位置上有l 1棵樹。現在要移走一些樹,移走的樹的區間用一對數字表示,如 100 200表示移...
3 1入門模擬B1046 划拳 15
划拳是古老中國酒文化的乙個有趣的組成部分。酒桌上兩人划拳的方法為 每人口中喊出乙個數字,同時用手比劃出乙個數字。如果誰比劃出的數字正好等於兩人喊出的數字之和,誰就贏了,輸家罰一杯酒。兩人同贏或兩人同輸則繼續下一輪,直到唯一的贏家出現。下面給出甲 乙兩人的划拳記錄,請你統計他們最後分別喝了多少杯酒。輸...