关注
第一题,应评论区要求,贴一下;特别是那个多线程的,现在这方面水平不高,求喷求指正
//普通版(大量查询会超时,过了82%)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int> everysum(n,0);
for(int i=0;i<n;++i){
cin>>everysum[i];
}
for(int i=1;i<n;++i){
everysum[i]+=everysum[i-1];
}
int Q;
cin>>Q;
vector<int> Query(Q);
for(int i=0;i<Q;++i){
cin>>Query[i];
}
for(int i=0;i<Q;++i){
int result;
vector<int>::iterator it;
it=lower_bound(everysum.begin(),everysum.end(),Query[i]);
if(it==everysum.end())
result=n;
else
result=(int)(it-everysum.begin()+1);
cout<<result<<endl;
}
return 0;
}
//多线程版(可能有错,以前没怎么写过,这个还没测试,欢迎指正)
#include <iostream>
#include <vector>
#include <algorithm>
#include <thread>
using namespace std;
void thread_task(vector<int>& everysum,vector<int>& Query,vector<int>& group,int start,int end,int n){
for(int i=start;i<end;++start){
vector<int>::iterator it;
it=lower_bound(everysum.begin(),everysum.end(),Query[start]);
if(it==everysum.end())
group[start]=n;
else
group[start]=(int)(it-everysum.begin()+1);
}
}
int main()
{
int n;
cin>>n;
vector<int> everysum(n);
cin>>everysum[0];
for(int i=1;i<n;++i){
int tmp;
cin>>tmp;
everysum[i]=everysum[i-1]+tmp;
}
int Q;
cin>>Q;
vector<int> Query(Q);
for(int i=0;i<Q;++i){
cin>>Query[i];
}
if(Q>1000){//大于1000就开多线程
vector<int> group(Q);
int numOfThread=Q/1000;
for(int i=0;i<numOfThread;++i){
int start=i*1000;
int end=start+1000;
thread t(thread_task(everysum,Query,group,start,end,n));
t.join();
}
thread t(thread_task(everysum,Query,group,numOfThread*1000+1,Q,n));
t.join();
for(int val:group){
cout<<val<<endl;
}
}
else{//小于1000就没必要开线程了
for(int i=0;i<Q;++i){
int result;
vector<int>::iterator it;
it=lower_bound(everysum.begin(),everysum.end(),Query[i]);
if(it==everysum.end())
result=n;
else
result=(int)(it-everysum.begin()+1);
cout<<result<<endl;
}
}
return 0;
}
查看原帖
点赞 2
相关推荐
11-19 17:27
门头沟学院 嵌入式软件开发 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
147679次浏览 2517人参与
# 秋招落幕,你是He or Be #
3230次浏览 76人参与
# 应届生进小公司有什么影响吗 #
109092次浏览 1116人参与
# 比亚迪工作体验 #
70174次浏览 254人参与
# 你面试体验感最差/最好的公司 #
3067次浏览 56人参与
# 工作中听到最受打击的一句话 #
2556次浏览 61人参与
# 大厂VS公务员你怎么选 #
71192次浏览 660人参与
# 重来一次,你会对开始求职的自己说 #
3001次浏览 71人参与
# 一人说一个提前实习的好处 #
3381次浏览 70人参与
# 团建是“福利”还是是 “渡劫” #
4043次浏览 110人参与
# 实习没事做是福还是祸? #
8308次浏览 135人参与
# 如何排解工作中的焦虑 #
243826次浏览 2241人参与
# 从顶到拉给所有面过的公司评分 #
144797次浏览 518人参与
# 今年你最想重开的一场面试是? #
1432次浏览 25人参与
# 你小心翼翼的闯过多大的祸? #
6956次浏览 109人参与
# 联影求职进展汇总 #
123836次浏览 781人参与
# OPPO求职进展汇总 #
755907次浏览 5390人参与
# 互联网公司爆料 #
158582次浏览 724人参与
# 产品实习,你更倾向大公司or小公司 #
189106次浏览 2053人参与
# 秋招结束之后的日子 #
113915次浏览 1039人参与
曼迪匹艾公司福利 122人发布

