关注
第一题,应评论区要求,贴一下;特别是那个多线程的,现在这方面水平不高,求喷求指正
//普通版(大量查询会超时,过了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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
31147次浏览 506人参与
# 假如我穿越到了妈妈的18岁 #
1557次浏览 27人参与
# 京东TGT #
35044次浏览 157人参与
# 入职第五天,你被拉进了几个工作群 #
14253次浏览 77人参与
# 面试经验谈 #
20257次浏览 319人参与
# 工作一周年分享 #
15218次浏览 101人参与
# 机械人,你的第一份感谢信是谁给的 #
23354次浏览 295人参与
# 对妈妈没说出口的话 #
13216次浏览 329人参与
# 视觉/交互/设计招聘信息汇总 #
10802次浏览 596人参与
# 面试吐槽bot #
5146次浏览 50人参与
# 妈妈治愈了你哪些脆皮时刻 #
5709次浏览 107人参与
# 请用你的专业向妈妈表白 #
4080次浏览 44人参与
# 职场新人生存指南 #
338177次浏览 7243人参与
# 异地恋该为对方跳槽吗 #
26841次浏览 130人参与
# 硬件人更看重稳定还是高薪 #
41817次浏览 213人参与
# 上班苦还是上学苦呢? #
214885次浏览 1288人参与
# 机械求职避坑tips #
42431次浏览 356人参与
# 硬件人秋招的第一个offer #
67006次浏览 1082人参与
# 零跑求职进展汇总 #
2040次浏览 16人参与
# 不考虑转正,实习多久合适 #
25676次浏览 119人参与
# 租房找室友 #
30158次浏览 150人参与