本文主要是介绍码蹄集部分题目(2024OJ赛19期;贪心集训),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1🐋🐋水温调节(黄金;贪心)
时间限制:1秒
占用内存:128M
🐟题目思路
贪心思路:先将两只水龙头的流速开到最大,温度高了,就把热水的流速降低一个单位,温度低了就把冷水的流速降低一个单位,当任意一个水龙头的流速小于0时结束循环。
【码蹄集进阶塔全题解08】算法基础:贪心 MT2080 – MT2092_哔哩哔哩_bilibili
🐟代码#include<bits/stdc++.h>
using namespace std;
int main( )
{double t1,t2,x1,x2,t0;double y1,y2,t;double tmax=0x3f3f3f3f,ans1,ans2;cin>>t1>>t2>>x1>>x2>>t0;y1=x1;y2=x2;while(y1>=0&&y2>=0){t=(t1*y1+t2*y2)/(y1+y2);if(t>=t0){if(t<tmax) {tmax=t;ans1=y1;ans2=y2;}y2--;}else y1--;}cout<<ans1<<" "<<ans2;return 0;
}
2🐋🐋斐波那契数列的组合(黄金;贪心)
时间限制:1秒
占用内存:128M
🐟题目思路
-
贪心思想:要最少数目,那么从大数来取最好。
【码蹄集进阶塔全题解09】算法基础:贪心 MT2093 – MT2105_哔哩哔哩_bilibili
🐟代码
#include<bits/stdc++.h>
using namespace std;
const int maxm=1e6+50;
int minfbncn(int k)
{vector<int> f;f.push_back(1);f.push_back(1);while(1){if(f[f.size()-1]+f[f.size()-2]>1e9) break;f.push_back(f[f.size()-1]+f[f.size()-2]);}int cnt=0;for(int i=f.size()-1;i>=0;i--){if(k>=f[i]){cnt+=k/f[i];k=k-k/f[i]*f[i];}if(k==0) break;}return cnt;
}
int main( )
{int n;cin>>n;cout<<minfbncn(n)<<endl;return 0;
}
3🐋🐋数列分段(黄金;贪心)
时间限制:1秒
占用内存:64M
🐟题目思路
贪心思路:每个元素只有两个选择,并到当前段和自成一段。那也就是,每一段都尽可能地接近N即可。
【码蹄集进阶塔全题解09】算法基础:贪心 MT2093 – MT2105_哔哩哔哩_bilibili
🐟代码
#include<bits/stdc++.h>
using namespace std;
int a[200000],n,m,ans;
int main( )
{cin>>n>>m;int sum=0;for(int i=1;i<=n;i++){cin>>a[i];if(sum+a[i]<=m) sum+=a[i];else{sum=a[i];ans++;}}cout<<ans+1;return 0;
}
4🐋🐋小码哥爱数字(钻石;贪心)
时间限制:1秒
占用内存:128M
🐟题目思路
贪心思路:从左到右遍历这个字符串,只要前面一个数比后面的数要大,那就把前面这个数删掉;如果遍历完了都没有这样的数,就删掉最后一位。
【码蹄集进阶塔全题解09】算法基础:贪心 MT2093 – MT2105_哔哩哔哩_bilibili
🐟代码
#include<bits/stdc++.h>
using namespace std;
string n;
int k,po0;
int main( )
{cin>>n>>k;int len=n.length();while(k--){for(int i=0;i<len;i++){if(n[i]>n[i+1]){for(int j=i;j<len;j++) n[j]=n[j+1];len--;break;}}}while(po0<len-1&&n[po0]=='0') po0++;for(int i=po0;i<len;i++) cout<<n[i];return 0;
}
5🐋🐋甜品供应(钻石;贪心)
时间限制:1秒
占用内存:128M
🐟题目思路
【码蹄集进阶塔全题解09】算法基础:贪心 MT2093 – MT2105_哔哩哔哩_bilibili
🐟代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
struct node
{int l,r;bool operator<(const node &a) const{if(r==a.r) return l<a.l;return r<a.r;}
}people[N];
struct sweet
{int v,num;//这里要重载>,因为后边用的是小根堆;如果是大根堆,重载<就行;否则编译不通过bool operator>(const sweet &a) const{return v>a.v;}
};
int C,L,cnt[N],ans;
priority_queue<sweet,vector<sweet>,greater<sweet> > q,tmp;
int main( )
{cin>>C>>L;for(int i=1;i<=C;i++) cin>>people[i].l>>people[i].r;sort(people+1,people+1+C);for(int i=1;i<=L;i++){sweet t;cin>>t.v>>t.num;cnt[t.v]+=t.num;q.push(t);}for(int i=1;i<=C;i++){while((!q.empty())&&q.top().v<people[i].l){tmp.push(q.top());q.pop();}if(!q.empty()&&q.top().v<=people[i].r){ans++;cnt[q.top().v]--;if(cnt[q.top().v]==0) q.pop();}while(!tmp.empty()){q.push(tmp.top());tmp.pop();}}cout<<ans;return 0;
}
6🐋🐋活动安排(黄金;贪心)
时间限制:1秒
占用内存:128M
🐟题目思路
【码蹄集进阶塔全题解09】算法基础:贪心 MT2093 – MT2105_哔哩哔哩_bilibili
🐟代码
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
int n,ans;
struct NODE
{int l,r;
}node[N];
bool cmp(NODE a,NODE b){return a.r<b.r;}
int main( )
{cin>>n;for(int i=1;i<=n;i++) cin>>node[i].l>>node[i].r;sort(node+1,node+1+n,cmp);int temp=0;for(int i=1;i<=n;i++){if(node[i].l>=temp){temp=node[i].r;ans++;}}cout<<ans;return 0;
}
有问题我们随时评论区见~
⭐点赞收藏不迷路~
这篇关于码蹄集部分题目(2024OJ赛19期;贪心集训)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!