l2-4 網紅點打卡攻略 (25分)
乙個旅遊景點,如果被帶火了的話,就被稱為「網紅點」。大家來網紅點遊玩,俗稱「打卡」。在各個網紅點打卡的快(省)樂(錢)方法稱為「攻略」。你的任務就是從一大堆攻略中,找出那個能在每個網紅點打卡僅一次、並且路上花費最少的攻略。
首先第一行給出兩個正整數:網紅點的個數 n(1nv1 v2 ⋯ v**n
其中 n(≤200) 是攻略中的網紅點數,v**i 是路徑上的網紅點編號。這裡假設你從家裡出發,從 v1 開始打卡,最後從 v**n 回家。
在第一行輸出滿足要求的攻略的個數。
在第二行中,首先輸出那個能在每個網紅點打卡僅一次、並且路上花費最少的攻略的序號(從 1 開始),然後輸出這個攻略的總路費,其間以乙個空格分隔。如果這樣的攻略不唯一,則輸出序號最小的那個。
題目保證至少存在乙個有效攻略,並且總路費不超過 109。
6130
5262
2601
3421
5225
1311
4121
6163
2121
4532
0276
5143
6265
2163
4862
1634
5232
1566
1345
2762
1345
2652
1436
3
511
第 2、3、4、6 條都不滿足攻略的基本要求,即不能做到從家裡出發,在每個網紅點打卡僅一次,且能回到家裡。所以滿足條件的攻略有 3 條。
第 1 條攻略的總路費是:(0->5) 2 + (5->1) 2 + (1->4) 2 + (4->3) 2 + (3->6) 2 + (6->2) 2 + (2->0) 2 = 14;
第 5 條攻略的總路費同理可算得:1 + 1 + 1 + 2 + 3 + 1 + 2 = 11,是一條更省錢的攻略;
第 7 條攻略的總路費同理可算得:2 + 1 + 1 + 2 + 2 + 2 + 1 = 11,與第 5 條花費相同,但序號較大,所以不輸出。
#include
using
namespace std;
intmain()
;int n,m;
cin>>n>>m;
int x,y,money;
for(
int i=
0;i)int k,num=
0,fsum=
1e9,f=1;
cin>>k;
for(
int j=
1;j<=k;j++
)for
(int i=
1;i) t=d;}if
(b==0)
continue;if
(a[t][0
])sum+
=a[t][0
];else
if(s.
size()
==n&&s2.
size()
==n)}}
cout
}
L2 4 網紅點打卡攻略
賽場上,得了18分,剛才提交,一次過了。比賽的時候還是想的不仔細。乙個旅遊景點,如果被帶火了的話,就被稱為 網紅點 大家來網紅點遊玩,俗稱 打卡 在各個網紅點打卡的快 省 樂 錢 方法稱為 攻略 你的任務就是從一大堆攻略中,找出那個能在每個網紅點打卡僅一次 並且路上花費最少的攻略。首先第一行給出兩個...
L2 036 網紅點打卡攻略 25 分
乙個旅遊景點,如果被帶火了的話,就被稱為 網紅點 大家來網紅點遊玩,俗稱 打卡 在各個網紅點打卡的快 省 樂 錢 方法稱為 攻略 你的任務就是從一大堆攻略中,找出那個能在每個網紅點打卡僅一次 並且路上花費最少的攻略。輸入格式 首先第一行給出兩個正整數 網紅點的個數 n 1再下一行給出乙個正整數 k,...
L2 4 彩虹瓶 (25 分
題目鏈結 彩虹瓶的製作過程 並不 是這樣的 先把一大批空瓶鋪放在裝填場地上,然後按照一定的順序將每種顏色的小球均勻撒到這批瓶子裡。假設彩虹瓶裡要按順序裝 n 種顏色的小球 不妨將順序就編號為 1 到 n 現在工廠裡有每種顏色的小球各一箱,工人需要一箱一箱地將小球從工廠裡搬到裝填場地。如果搬來的這箱小...