5 条题解
-
1
#include<iostream> #include<algorithm> using namespace std; #define ll long long
int main() { ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t,n,l,r;
cin>>t;
while(t--){
cin>>n>>l>>r;
ll a[n+10],b[n+10]={0},ans=0;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>r){
b[i]=0;//标记超出范围的数
continue;
}
b[i]=1;
}
for(int i=1;i<=n;i++){
if(b[i]==0){
continue;
}
if(b[i]==1){
if(a[i]>=l){
ans++;
}
if(a[i]<l){
int sum=a[i];
for(int j=i+1;j<=n;j++){//依次相加判断
if(b[j]==0){
break;
}
if(b[j]==1){
sum+=a[j];
if(sum>=l&&sum<=r){
ans++;
for(int l=i+1;l<=j;l++){
b[l]=0;//取过的牌标记防止再用
}
break;
}
if(sum>r){
break;
}
if(sum<l){
continue;
}
}
}
}
}
}
cout<<ans<<"\n";
}
return 0;
}
信息
- ID
- 1206
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 167
- 已通过
- 20
- 上传者