- 高士渠 的博客
七月day1
- @ 2025-7-15 19:16:24
T3 暑假打工
感觉:难; 题意:要在规定时间赚很多钱,数据有干1天后a[i]天后给b[i]元; 我的思路:无; 思路:运用贪心策略将能拿到的最多钱的中工作长的用优先队列拿出后,; 堆 大根堆 大根堆:堆顶元素最大,用于快速找最大值;
定义用priority_queue<类型>名字;
小根堆 小根堆:堆顶元素最小,用于快速找最小值;
定义用priority_queue<类型,vector<类型>,greater<类型>>名字;
例题day1,T3,暑假打工;
用大根堆找最大的,用利益最大的方法测;
#include <bits/stdc++.h>
using namespace std;
priority_queue<int>x;
vector<pair<int,int>> jobs;
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
int a,b;
cin>>a>>b;
jobs.push_back({a,b});
}
sort(jobs.begin(),jobs.end());
int z=0,y=0;
for(int i=1;i<=m;i++){
while(z<n&&jobs[z].first<=i){
x.push(jobs[z].second);
z++;
}
if(x.size()!=0){
y+=x.top();
x.pop();
}
}
cout<<y;
return 0;
}
T4 我讨厌因式分解;
错点:遍历少了;
#include <bits/stdc++.h>
using namespace std;
int main(){
long long x;
cin>>x;
for(long long i=-200;i<=200;i++){
for(long long j=-200;j<=200;j++){
if((i*i*i*i*i)-(j*j*j*j*j)==x){
cout<<i<<" "<<j;
return 0;
}
}
}
return 0;
}
原来开的-120--120,小了;