题解 CF518A 【Vitaly and String】 发表于 2019-01-17 更新于 2026-03-09 阅读次数: Waline: 阅读次数: CF518A 【Vitaly and String】题解。 这题很简单啊,为什么没人做呢? 所以我来贡献一发题解吧 思路:模拟 可以在线做,对于每一个读入的ai,分类讨论 详见代码 12345678910111213141516171819#include <cstdio>int n,k,now,ans;int main(void){ scanf ("%d%d",&n,&k);//读入不解释 int i=1; for (;i<=n;i++){ int a; scanf ("%d",&a); if (a>8)ans+=8,now+=a-8;//分类讨论:ai>8,只能+8,剩下来放到now里,以后备用 else if (a<=8&&!now)ans+=a;//不足8,且now里没有东西,直接加 else if (now+a<=8)ans+=now+a,now=0;//之前+现在≤8,直接加,加完归零 else ans+=8,now-=8-a;//不然+8,继续存 if (ans>=k)break;//中途ok了就退出 // printf ("%d %d\n",ans,now); } if (i>n&&ans<k)printf ("-1");//无解 //ans<k的用处就在于,防止了正好n天的情况 else printf ("%d",i);//输出}