玄关 这份DP代码哪有问题

P1063 [NOIP2006 提高组] 能量项链

第17行把k+1换成k试试
by huangboning @ 2024-02-20 14:19:18


哦不对
by huangboning @ 2024-02-20 14:20:28


@[huangboning](/user/478234) 换完我样例没过(
by wyf_sinon @ 2024-02-20 14:21:26


@[wyf_sinon](/user/540177) 第一个是a数组,有没有觉得开小了? 再然后状态转移哪那行,请问你的a[r]对吗
by CangerYumo @ 2024-02-20 14:44:30


@[wyf_sinon](/user/540177) 嗯,我感觉我们这三个人的等级与获奖十分相似……
by CangerYumo @ 2024-02-20 14:45:52


@[CangerYumo](/user/847286) 查出来了 应该是a[r+1] a[]确实开小了(
by wyf_sinon @ 2024-02-20 14:48:58


@[CangerYumo](/user/847286) 我还有一个特殊的荣誉 2023noip爆零( 二等直接晋级零等了bushi
by wyf_sinon @ 2024-02-20 14:50:25


@[wyf_sinon](/user/540177) 一个很奇怪的做法 ```cpp #include<stdio.h> int pw[110]; int nxid[110]; int main() { int hdr = 0; int n; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", pw + i); if (i == n - 1)nxid[i] = 0; else nxid[i] = i + 1; } int phdr = n - 1; int rem = n; long long sc = 0; while (rem > 1) { int minp = pw[hdr]; int lp = hdr; int p = nxid[hdr]; int rmp = hdr; int rmlp = phdr; while (p != hdr) { if (minp > pw[p]) { minp = pw[p]; rmp = p; rmlp = lp; } lp = p; p = nxid[lp]; } sc += pw[lp] * pw[p] * pw[nxid[p]]; nxid[lp] = nxid[p]; if (p == hdr) { hdr = nxid[p]; phdr = lp; } rem--; } printf("%lld", sc); } ``` 也只过了样例和#10,当然这99.99%是错的
by unk_03 @ 2024-02-20 14:58:30


18行a[r]没加一 此贴结
by wyf_sinon @ 2024-02-20 15:00:07


改成这样: ```cpp #include<bits/stdc++.h> using namespace std; const int N=210; int n,ans; int a[N],f[N*2][N*2]; signed main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); a[i+n]=a[i]; f[i][i]=0; } for(int len=2;len<=n+1;len++)// 阶段 { for(int l=1;l+len-1<=n*2;l++) { int r=l+len-1; for(int k=l+1;k+1<=r;k++)//决策 { f[l][r]=max(f[l][k]+f[k][r]+a[l]*a[k]*a[r],f[l][r]);//第l到k颗 第k+1到r颗 } } } for(int i=1;i<=n;i++) ans=max(ans,f[i][i+n]); printf("%d",ans); } ```
by huangboning @ 2024-02-20 16:43:02


| 下一页