【蓝桥每日一题]-贪心(保姆级教程 篇1)#拼数 #合并果子 #凌乱yyy

目录

题目: 拼数

   思路: 

题目: 合并果子

   思路: 

 题目:凌乱yyy

   思路: 


    

题目:拼数

   【蓝桥每日一题]-贪心(保姆级教程 篇1)#拼数 #合并果子 #凌乱yyy_第1张图片 

思路: 

   思路很简单。举个例子:对于a=321,b=32。我们发现a+b=32132,b+a=32321,那么我们当然要后者,所以整个数组都按这个排列即可。

#include                  //拼数P1012
#include 
#include 
using namespace std;
bool com(string a,string b)
{
	return a+b>b+a;               //对于a=321,b=32,a+b=32132,b+a=32321,
}                            	  

int main()
{
	string s[25];int n;cin>>n;
	for(int i=1;i<=n;i++) cin>>s[i];
	sort(s+1,s+n+1,com);
	for(int i=1;i<=n;i++) cout<

    

题目:合并果子

     

【蓝桥每日一题]-贪心(保姆级教程 篇1)#拼数 #合并果子 #凌乱yyy_第2张图片

【蓝桥每日一题]-贪心(保姆级教程 篇1)#拼数 #合并果子 #凌乱yyy_第3张图片

     

   思路: 

 贪心(每次都花费最少代价)我们合并后插入排序即可。

    

也可以直接使用优先级队列priority_queue,之所以priority_queue也可以通过是因为队伍里面本来就是有序的,再插入时排序极快。

#include                       
#include               
using namespace std;
int main(){
	int n,a[10001],ans=0;
	cin>>n;
	for(int i=0;i>a[i];
	sort(a,a+n);
	for(int i=1;ia[j])swap(a[j-1],a[j]);   //交换排序,覆盖排序都可以(因为都是一趟就行),就是不要快排(因为知道要几趟)
			else break;
		}
	}
	cout<

     

 题目:凌乱yyy

     

【蓝桥每日一题]-贪心(保姆级教程 篇1)#拼数 #合并果子 #凌乱yyy_第4张图片

【蓝桥每日一题]-贪心(保姆级教程 篇1)#拼数 #合并果子 #凌乱yyy_第5张图片

      

思路: 

我们只要按照结束时间去即可,然后能赶上这个比赛就参加,不能就不参加。没了

#include                          
#include 
using namespace std;
struct text{
	int sta;
	int end;
};
bool cmp(text a,text b)                      //当下最优化,谁先结束,就选谁
{
	return a.end>n;text line[n];         //共n场考试
	for(int i=0;i

你可能感兴趣的:(算法,c++,数据结构,贪心算法)