题解 CF839A 【Arya and Bran】

这题很简单啊,为什么没人做呢?

所以我来贡献一发题解吧

思路:模拟

可以在线做,对于每一个读入的ai,分类讨论

详见代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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);//输出
}