题解 | #怯战蜥蜴#

scx 的散文诗句

https://ac.nowcoder.com/acm/contest/78309/A

#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int n,t;
long long sum[N];
int main()
{
	cin>>n>>t;
	sum[0]=0;
	for(int i=1;i<=n;i++){
		int a;
		cin>>a;
		sum[i]=sum[i-1]+a;
	}
	for(int i=1;i<=t;i++){
		int flag=0;
		int tar;
		cin>>tar;
		int l=1,r=n;
		while(l<r-1){
			int mid=l+(r-l)/2;
			if(sum[mid]>tar)
			{
				r=mid;
			}
			if(sum[mid]<tar){
				l=mid;
			}
			if(sum[mid]==tar){
				cout<<mid<<endl;
				flag=1;
				break;
			}
		}
		if(flag==0){
			if(sum[r]<=tar){
			cout<<r<<endl;
		}
		else if(sum[l]<=tar){
			cout<<l<<endl;
		}
		else{
			cout<<0<<endl;
		}
		}
	}

    return 0;
}



先排序化单调,再用点二分,记得前缀和的储存
全部评论

相关推荐

零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务