3.7百度测试岗二道算法题解
第一题:银行插队
用数组加队列模拟就可以了
#include <iostream>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
vector< queue<int> > v(6);
int main(){
int n;
cin>>n;
vector<int> res;
while(n--){
char c;
cin>>c;
if(c=='a'){
int a,b;
cin>>a>>b; //a序号,b是优先级
v[b].push(a);
}else{
for(int i=1;i<=5;i++){
if(v[i].size()){
res.push_back(v[i].front());
v[i].pop();
break;
}
}
}
}
return 0;
}
第二题:魔法。
贪心,消耗多的带消耗少的
#include <iostream>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
vector<int> v;
int main(){
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++){
int a;
cin>>a;
v.push_back(a);
}
int res=v[v.size()-1];
int dex=v.size()-k;
for(int i=v.size()-k-1;i>=0;i--){
int t=v[i]+v[dex];
dex++;
res=max(t,res);
}
cout<<res<<" ";
return 0;
}
