题目链接:Inhabitant of the Deep Sea
前言:
之所以写这道题的题解,是因为当时做的时候题目没读仔细,加上想的太复杂,这道题目看代码真的很简单,但就是难想(bushi
思路:
从整体的角度考虑,攻击是左边攻击一次,右边攻击一次。。。循环,那么总共的sum有什么规律呢?不难发现,如果sum为偶数,那么左右两边一样,如果sum为奇数,那么左边多攻击一次。(所以下次做不出来的时候不妨从整体的角度去想想)
代码附上:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N =2e5+5;
int n,k;
int a[N];
void solve(){
int sum=0;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
if(sum<=k){
cout<<n<<"\n";
return;
}
int l=1,r=n;
int s=(k+1)/2;
int p=k/2;
while(s>=a[l])s-=a[l++];
while(p>=a[r])p-=a[r--];
l--,r++;
cout<<n+1-(r-l)<<"\n";
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
solve();
}
return 0;
}