From 273ff903185ccec3f0deb7af0f206e9d1e10150e Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Wed, 19 Nov 2025 11:15:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(P1545.cpp):=20=E4=BF=AE=E5=A4=8D=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E8=A7=84=E5=88=92=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E5=BE=AA=E7=8E=AF=E6=AD=A5=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复dp数组计算中的逻辑错误,将循环步长改为2以提高效率。同时修正最终结果的输出逻辑,当无解时输出-1。 --- src/11/18/P1545.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/11/18/P1545.cpp b/src/11/18/P1545.cpp index 0c4244a..1224f89 100644 --- a/src/11/18/P1545.cpp +++ b/src/11/18/P1545.cpp @@ -5,7 +5,7 @@ #include #include using ll = int64_t; -// #define printf +#define printf const ll inf=1e9+7; ll n,l,a,b; std::vector v,dp,diff; @@ -23,9 +23,10 @@ int main(){ diff[e]++; } dp[0]=0; - for(ll i=1;i<=l;i++){ + for(int i=2;i<=l;i+=2){ + v[i-1]+=v[i-2]; v[i]+=v[i-1]; - for(ll j=a;j<=b&&i-j*2>=0;j++){ + for(int j=a;j<=b&&i-j*2>=0;j++){ if(!v[i-j*2] || diff[i-j*2]==v[i-j*2-1]){ dp[i]=std::min(dp[i],dp[i-j*2]+1); } @@ -35,5 +36,5 @@ int main(){ printf("diff[%lld]=%lld\n",i,diff[i]); printf("\n"); } - std::cout<=inf?-1:dp[l])<<"\n"; } \ No newline at end of file