题意:现在有N份一次性工作可供选择。如果你接受并完成第i份工作,你将在完成后的第Ai天获得Bi元的报酬。 每天你最多可以接受并完成其中一份工作。 但是,你不能重复接受已经做过的工作。 求在从今天起不超过M天的时间内,你能获得的最大总报酬。 你可以从今天就开始工作。
思路:排出最优方案(贪心),运用优先队列,求出期限内可得最高工资
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
struct aaa{
int a,b;
}jobs[N];
int n,m,ans;
priority_queue<int> q;
int cmp(aaa x,aaa y){
return x.a<y.a;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>jobs[i].a>>jobs[i].b;
}
sort(jobs,jobs+n,cmp);
// for(int i=1;i<=n;i++){
// cout<<jobs[i].a<<' '<<jobs[i].b<<endl;
// }
int idx=0;
for(int i=1;i<=m;i++){
while(idx<n&&jobs[idx].a<=i){
q.push(jobs[idx].b);
// cout<<jobs[idx].b<<' ';
idx++;
}
if(q.size()){
// cout<<ans<<endl;
// cout<<q.top()<<' ';
ans+=q.top();
q.pop();
}
}
cout<<ans;
return 0;
}
题意:给定一个整数x,找出一对整数(A,B),使a^5^-b^5^=x
思路:根据题目所给数据范围,推出A,B的取值范围,枚举判断
#include <bits/stdc++.h>
using namespace std;
int x;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>x;
for(int i=-200;i<=200;i++){
for(int j=-200;j<=200;j++){
if(pow(i,5)-pow(j,5)==x){
cout<<i<<' '<<j;
return 0;
}
}
}
return 0;
}