关注
第一题,应评论区要求,贴一下;特别是那个多线程的,现在这方面水平不高,求喷求指正
//普通版(大量查询会超时,过了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
相关推荐
牛客热帖
更多
正在热议
更多
# 春招至今,你的战绩如何? #
2079次浏览 17人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
6662次浏览 34人参与
# MiniMax求职进展汇总 #
22243次浏览 283人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186160次浏览 1112人参与
# 简历第一个项目做什么 #
31066次浏览 299人参与
# 网易游戏笔试 #
6217次浏览 83人参与
# 巨人网络春招 #
11001次浏览 198人参与
# 职能管理面试记录 #
10564次浏览 59人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
6611次浏览 153人参与
# 简历中的项目经历要怎么写? #
308990次浏览 4124人参与
# 小红书求职进展汇总 #
226655次浏览 1355人参与
# 你的房租占工资的比例是多少? #
92083次浏览 896人参与
# 腾讯音乐求职进展汇总 #
160225次浏览 1104人参与
# AI时代,哪些岗位最容易被淘汰 #
61742次浏览 697人参与
# 正在春招的你,也参与了去年秋招吗? #
362107次浏览 2629人参与
# 你怎么看待AI面试 #
178931次浏览 1137人参与
# 机械求职避坑tips #
94364次浏览 567人参与
# 校招笔试 #
464150次浏览 2946人参与
# 面试官最爱问的 AI 问题是...... #
26378次浏览 813人参与
# 如何一边实习一边找下家? #
41609次浏览 355人参与
# 网易笔试 #
151653次浏览 790人参与
# 现在入门AI应该走哪些方向? #
8085次浏览 147人参与
查看5道真题和解析