zoukankan      html  css  js  c++  java
  • 活动安排问题(贪心)

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428

    先按开始时间排序,可以想象有一些教室(vector),然后有新活动举行,遍历vector看是否有教室活动结束,该教室活动结束就在这个教室举行活动,没有就新开教室举行活动,即vector push_back该活动,最后输出vector.size()就行了。

    #include<iostream>
    #include<algorithm>
    #include<vector>
    using namespace std;
    
    struct t
    {
    	int l,r;
    }a[ 10000];
    
    bool cmp(t x,t y)
    {
        return x.l<y.l;
    }
    int main()
    {
    	int n;
    	vector<t>vec;
    	
    	cin>>n;
    	for(int i=0;i<n;i++)
    		cin>>a[i].l>>a[i].r;
    	sort(a,a+n,cmp);
    		
    	vec.push_back(a[0]);
    	for(int i=1;i<n;i++)
    	{
    		bool flag=true;
    		for(int j=0;j<vec.size();j++)
    			if(a[i].l>=vec[j].r)
    			{
    				vec[j].l=a[i].l;
    				vec[j].r=a[i].r;
    				flag=false;
    				break;
    			}
    		if(flag)
    			vec.push_back(a[i]);
    	}
    	cout<<vec.size();
    	return 0;
    } 
    

      

  • 相关阅读:
    .NET Framework 概述
    .Net笔试(二)
    EF CodeFirst 创建数据库
    C#中的继承
    SqlHelper 基类
    在C#中实现OOP概念
    索引器、委托和事件
    .Net笔试(一)
    HTML标签速记整理W3C
    Java函数调用总结
  • 原文地址:https://www.cnblogs.com/NDKY9/p/7750614.html
Copyright © 2011-2022 走看看