《愛與愁的故事第三彈·shopping》第一章。
中山路店山店海,成了購物狂愛與愁大神的「不歸之路」。中山路上有n(n<=100)家店,每家店的座標均在-10000~10000之間。其中的m家店之間有通路。若有通路,則表示可以從一家店走到另一家店,通路的距離為兩點間的直線距離。現在愛與愁大神要找出從一家店到另一家店之間的最短距離。你能幫愛與愁大神算出嗎?
共n+m+3行:
第1行:整數n
第2行~第n+1行:每行兩個整數x和y,描述了一家店的座標
第n+2行:整數m
第n+3行~第n+m+2行:每行描述一條通路,由兩個整數i和j組成,表示第i家店和第j家店之間有通路。
第n+m+3行:兩個整數s和t,分別表示原點和目標店
僅一行:乙個實數(保留兩位小數),表示從s到t的最短路徑長度。
輸入 #1複製
50 02 0
2 20 2
3 15
1 21 3
1 42 5
3 51 5
輸出 #1複製
3.41
100%資料:n<=100,m<=1000
題解:最短路(各類方法皆可用,而我選擇了我最 i 的floyd)
#include#include#include
#include
#include
#include
#include
using
namespace
std;
const
int oo=0x3f3f3f3f
;const
int n=102
;double
f[n][n];
intn,m,x[n],y[n],ss,tt,a,b;
double js(int a1,int a2,int b1,int
b2)
intmain()
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i!=j && i!=k && k!=j)
f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
scanf(
"%d %d
",&ss,&tt);
printf(
"%.2f\n
",f[ss][tt]);
return0;
}
洛谷 P1108 低價購買
題目 低價購買 思路 第一問求最長下降子串行,o n 2 的複雜度就夠了。第二問如果不考慮重複的情況,也好做。令g i 表示最長下降子串行長為f i 時的方案數,g i g j j 1,i 最終方案數為 g i i 1,n 然後再減去重複的情況。假設存在一組i,j使得f i f j 且a i a j...
洛谷P1108 低價購買
題目鏈結 n 5000 n 2的演算法是可以接受的 第乙個數字顯然是求最長下降子串行,可以n 2或nlogndp 要求方案數,可以在n 2演算法中做一些修改,dp求方案數 dp i 表示以第i個數為結尾的最長下降子串行 f i 表示以第i個數為結尾的最長下降子串行的個數 當a j 而當a i a j...
洛谷P1108 低價購買
1 include2 using namespace std 3const int maxn 5005 4 int n,len ans 1 ans 5int a maxn d maxn len maxn f maxn 6int search int l,int r,int val 714 retur...