​http://codeforces.com/contest/1073/problem/D​

一开始线段树和双端链表各种维护 越写越不对劲。。

其实直接暴力就好 先看逛上一圈能加就加 能买多少 再看这种情况下能逛几圈 最后取一下模就是log的复杂度了

 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+10;

ll ary[maxn];
ll tot;
int n;

int main()
{
ll ans,sum,cnt;
int i;
scanf("%d%lld",&n,&tot);
for(i=1;i<=n;i++) scanf("%lld",&ary[i]);
ans=0;
while(1){
sum=0,cnt=0;
for(i=1;i<=n;i++) if(sum+ary[i]<=tot) sum+=ary[i],cnt++;
if(cnt==0) break;
ans+=(tot/sum)*cnt;
tot%=sum;
}
printf("%lld\n",ans);
return 0;
}

yi'kai