企业危机-ACGO题库|解释
2023-07-25 10:16:50
发布于:河北
思路
1.输入数据因为1≤n,m≤20000所以我们不需要考虑值过大int装不下的问题。
2.将企业的文件和团队的解决能力 各自升序 sort
3.将从团队的每个人去尝试解决企业问题,如果 i 能力可以解决,那么当前的人花费加上
4.如果所有问题解决,输出花费,否则无法解决。
解决方法
提前定义:
const int MAXN
输入数据:
cin>>n>>m;
for(int i = 1;i<=m;i++){
cin>>emp[i];
}
for(int i = 1;i<=m;i++){
cin>>team[i]
}
将企业的文件和团队的解决能力 各自升序 sort
|---sort(emp+1,emo+n,1);
|--- sort(team+1,team+n+1);
将从团队的每个人去尝试解决企业问题,如果 i 能力可以解决,那么当前的人花费加上
int sum = 0,ques = 1,people = 1;
while(ques <= n && people <= m){
if(team[people] >= emp[ques]){
sum += team[people];当前人可以解决地 ques 的文件
people ++; 让后面一个人解决下一个问题
ques++
}else{ 这个人解决不了
people++;
}
}
如果所有问题解决,输出花费,否则无法解决。
if(ques > n)cout<<sum;
else cout>>"you died";
return 0;
完整代码:复制干嘛,愣着呀点我跳转答题网站
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll q,n,j,suum=0;
const ll N=1000010;
bool chs[N];
ll f[N];
ll g[N];
ll l,r;
int main(){
cin>>n>>q;
for(ll i=0;i<n;i++){
cin>>f[i];
}
for(ll i=0;i<q;i++){
cin>>g[i];
}
if(!(q>=n)){
cout<<"you died!";
return 0;
}
sort(f,f+n);
sort(g,g+q);
for(ll i=0;(i<q)&&(j<n);i++){
if (g[i]>=f[j]){
suum+=g[i];
chs[i]=1;
j++;
}
}
if (j<n){
cout<<"you died!";
return 0;
}
cout<<suum;
return 0;
}
点个赞吧,在点一个关注!***
这里空空如也
有帮助,赞一个