您的位置:首页 > 其它

zoj 2510 Concentric Rings(Greedy~)

2010-10-29 16:03 295 查看
在zoj论坛上随便翻贪心的题,发现这个了,CW昨天还说来着。



和活动安排是一样一样一样滴。。。只用看0点右边的就好了,内径和外径相当于起始时间和终止时间。



只不过这个是去掉最少的环数。



终于把sort怎么排序结构体弄会了,偶也~~



交了好多次,sort就是比qsort快!以后用sort吧~



就是那个头文件的那个单词不会背啊。。。算法的那个单词。。。algorithm~



#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
struct circle
{
	int begin,end;
}circle[10001];
typedef struct circle CIR;
//qsort的比较函数
int cmp( const void *a,const void *b)
{
	return ((CIR*)a)->end - ((CIR*)b)->end;
}
//sort的比较函数
bool cmp1(CIR a, CIR b)
{
	return a.end < b.end;
}
/**************************************************************************/
int n;
int flag[10001];
void Greedy()  //贪心。。
{
	memset(flag,0,sizeof(flag));
	int j=0;
	flag[j] = 1;
	for(int i=1; i<n; i++)
	    if( circle[i].begin >= circle[j].end )
	    {
			flag[i] = 1;
			j = i;
		}
		else
		    flag[i] = 0;
}
int main(void)
{
	while( cin >> n && n )
	{
		int sum = 0;
		for(int i=0; i<n; i++)
	    	cin >> circle[i].begin >> circle[i].end;
	//	sort(circle,circle+n,cmp1);
		qsort( circle, n, sizeof(CIR),cmp);
		Greedy();
		for(int i=0; i<n; i++)
	    	if( flag[i] == 0 )
	        	sum ++;
		cout << sum << endl;
	}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: