求助,樣例都不對

P1004 [NOIP2000 提高组] 方格取数

@[598xhy](/user/700986) 这个题贪心思路本来就不对:比如你先走一个比较大的数,结果在其后面的数字都很小。
by MarchKid_J0e @ 2023-01-05 17:35:34


@[598xhy](/user/700986) 而且路径清空也是错误的
by MarchKid_J0e @ 2023-01-05 17:36:22


這個題貪心思路本來就不對:比如你先走一個比較大的數,結果在其後面的數字都很小。
by MarchKid_J0e @ 2023-01-05 17:38:24


而且路徑清空也是錯誤的(雖然不知道為什麽是繁體中文)
by MarchKid_J0e @ 2023-01-05 17:39:04


@[MarchKid_J0e](/user/760799) 可是我走的是每一個格子都對比,類似於金字方陣的貪心啊~~而且樣例最後還多出來一個5,輸出72~~
by IronRoosterIkun @ 2023-01-06 07:56:17


@[598xhy](/user/700986) 你的思路應該是每次從上邊和左邊較大值轉移吧。然後清空路徑,再貪心一次。先不管思路正確性。按照你這個思路,清空路徑就是錯誤的:不應該先把路徑復製一遍到當前節點嗎?代碼裏標出來了。 ```cpp #include<cstdio> #include<utility> #include<cstring> using namespace std; #define mkpr(a,b) make_pair(a,b) int n,x,y;long long a[11][11],z,ans; struct Build_Map//建圖 { pair<int,int> odr[20];//已經走過的順序 long long val;//價值 int rp=1;//處理目前數組儲存的順序 }mp[11][11]; long long fw()//貪心訪問 { for(int i=2;i<=n;i++) { for(int j=2;j<=n;j++) { if(mp[i-1][j].val>mp[i][j-1].val) { mp[i][j] = mp[i - 1][j]; //复制 mp[i][j].val=a[i][j]+mp[i-1][j].val; mp[i][j].odr[mp[i][j].rp++]=mkpr(i-1,j); } else { mp[i][j] = mp[i][j - 1];// 复制 mp[i][j].val=a[i][j]+mp[i][j-1].val; mp[i][j].odr[mp[i][j].rp++]=mkpr(i,j-1); } //貪心思想 } } // for (int i = 1; i <= n; i++, putchar('\n')) // for (int j = 1; j <= n; j++, putchar(' ')) // printf("%d", mp[i][j].val); return mp[n][n].val; } void cllg()//處理路過的方塊 { for(int i=1;i<=2*n;i++) a[mp[n][n].odr[i].first][mp[n][n].odr[i].second]=0; } int main() { scanf("%d",&n); while(scanf("%d%d%lld",&x,&y,&z)&&(x||y||z))a[x][y]=z; ans=fw(); cllg(); memset(mp,0,sizeof mp); ans+=fw(); printf("%lld",ans); return 0; } ``` 可以過樣例,但是思路不對,還是那樣的: 這個題貪心思路本來就不對:比如你先走一個比較大的數,結果在其後面的數字都很小。
by MarchKid_J0e @ 2023-01-06 08:28:20


@[598xhy](/user/700986) 比如這組數據,你的答案是 $12$,正確答案 $30$,建議換成 dp 做法~~或者網絡流~~。 Input: ``` 3 1 1 10 1 3 5 2 2 6 2 3 4 3 1 8 3 2 2 0 0 0 ``` Output: ``` 30 ```
by MarchKid_J0e @ 2023-01-06 08:32:07


@[MarchKid_J0e](/user/760799) 懂了,感謝指點
by IronRoosterIkun @ 2023-01-06 08:32:24


貪心的答案顯然偏小。
by MarchKid_J0e @ 2023-01-06 08:32:38


|