p1359租用遊艇
阿新 • • 發佈:2020-07-18
傳送門題面複製時出了點問題
第一次看發現像我這樣的蒟蒻連題都沒看懂,仔細研究一下樣例花了我30分鐘,細心地你會發現第m行的第n個數就是m到m+n的距離,於是我們就可以知道只是一道簡單的dp。
於是我敲了一段程式碼。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int main() { int n; scanf("%d",&n); int a[201]; intf[201][201]; for(int i=1;i<n;i++) { for(int j=i+1;j<=n;j++) { scanf("%d",&f[i][j]); } a[i]=1e9; } for(int i=n-1;i>=1;i--) { for(int j=i+1;j<=n;j++) { a[i]=min(a[i],a[j]+f[i][j]); } } printf("%d",a[1]); }
發現只有33分,不可思議,我可是看過題解的這時我的同桌讓我把陣列定義為全域性變數,此時就ac了。
聰明的你知道為什麼嗎?因為全域性變數初始值為0,這是我忽略的地方。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int a[201]; int f[201][201]; int main() { int n; scanf("%d",&n);for(int i=1;i<n;i++) { for(int j=i+1;j<=n;j++) { scanf("%d",&f[i][j]); } a[i]=1e9; } for(int i=n-1;i>=1;i--) { for(int j=i+1;j<=n;j++) { a[i]=min(a[i],a[j]+f[i][j]); } } printf("%d",a[1]); }