【OJ】贪心法 (区间问题——木棒)1129/

题目链接:点击打开链接

/*

贪心法 (区间问题——木棒)1129/

*/

#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn=5010;
typedef pair<int,int> P;
pair<int,int>itv[maxn];
int ok[maxn];
bool comp( P  a,const P & b){     //const &
	if (a.second==b.second)return a.first<b.first;//
//	else return false;
	return a.second<b.second;
}
int main(){
///	freopen("贪心(区间).txt","r",stdin);
	int t;cin>>t;
	while(t--){
		int n;cin>>n;
		memset(ok,0,sizeof(ok));
		for(int i=0;i<n;i++){
			cin>>itv[i].first>>itv[i].second;///
		}
//		sort(itv,itv+n);//sort first defaultly.
		sort(itv,itv+n,comp);//can sort first or second
	//	for(int j=0;j<n;j++)//sort the first of itv;
		//	cout<<itv[j].first<<" "<<itv[j].second<<endl;
		int ll,ans=0,count=0;
		for(int i=0;i<n;i++){
			for(int k=0;k<n;k++)
				if(!ok[k]){
					ll=itv[k].first;
					ok[k]=1;
					ans++;count++;break;
				}
			for(int j=0;j<n;j++)
				if(!ok[j]&&ll<=itv[j].first){
					ok[j]=1;
					ll=itv[j].first;
					count++;
				}
			if(count==n)break;
		}
		cout<<ans<<endl;
	}
	return 0;
}
时间: 2024-11-10 13:21:32

【OJ】贪心法 (区间问题——木棒)1129/的相关文章

c++-贪心法 区间完全覆盖问题

问题描述 贪心法 区间完全覆盖问题 50C 给定一个长度为m的区间~再给出n条用闭区间表示的线段~用贪心法求出最少的线段能覆盖完m区间~例: 区间长度8,可选的覆盖线段[26][14][36][37][68][24][35] 现需要代码 c++的 过程 : 1将每一个区间按照左端点递增顺序排列,拍完序后为[14],[24],[26],[35],[36],[37],[68] 2设置一个变量表示已经覆盖到的区域.再剩下的线段中找出所有左端点小于等于当前已经覆盖到的区域的右端点的线段中,右端点最大的线

【OJ】贪心法(最小字典序)poj3617 Best Cow Line// acmclub 12701/12695

     题目链接:      点击打开链接 /* POJ 3617 Best Cow Line 贪心法--最小字典序 */ #include<stdio.h> #include<string.h> char ss[30010]; int main(){ int n,left1;scanf("%d",&n); getchar();//不可少,接收前一个\n for(int j=0;j<n;j++){// // scanf("%c"

UVa 10020 Minimal coverage:贪心&amp;amp;区间覆盖

10020 - Minimal coverage Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=961 The Problem Given several segments of line (int the X axis) with coordinates

贪心法 最小圈基问题-贪心法解决最小圈基问题。

问题描述 贪心法解决最小圈基问题. 在网上找不到关于最小圈基的资料,不知道有木有大神来拯救下我这个小白新手- 解决方案 我的算法实验有这个,自己写了,不是很好,可以参考我的博客

贪心法 背包问题 一道简单的实际问题 不知道大难如何计算出来的。

问题描述 贪心法 背包问题 一道简单的实际问题 不知道大难如何计算出来的. 问题:设有背包问题实例n=7,M=15(背包载重),(w0,w1,...,w6)=(2,3,5,7,1,4,1), 物品装入背包的收益为:(p0,p1,p2,p3,p4,p5,p6)=(10,5,15,7,6,18,3). 求这一实例的最优解和最大收益 答案:最优解:(p0/wo,p1/w1,p2/w2,p3/w3,p4/w4,p5/w5,p6/w6)=(10/2,5/3,15/5,7/7,6/1,18/4,3/1)(x

用贪心法求解背包问题的解决方法_C 语言

贪心方法:总是对当前的问题作最好的选择,也就是局部寻优.最后得到整体最优.应用:1:该问题可以通过"局部寻优"逐步过渡到"整体最优",这是贪心选择性质与"动态规划"的主要差别.2:最优子结构性质:某个问题的整体最优解包含了"子"问题的最优解.完整的代码如下: 复制代码 代码如下: #include "iostream"using namespace std;struct goodinfo{ float p;

贪心法求解三种有关区间覆盖问题

                                               基于贪心算法的几类区间覆盖问题 (1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1,4],[3,6],[3,7],[6,8],[2,4],[3,5] 解题过程: 1将每一个区间按照左端点递增顺序排列,拍完序后为[1,4],[2,4],[2,6],[3,5]

UVa 1193 / POJ 1328 Radar Installation:贪心及区间选点

1193 - Radar Installation Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=3634 http://poj.org/problem?id=1328 Assume the coasting is an infinite straight line. Land is in one side of coas

贪心法——活动选择问题和背包问题

        今天上午听了米老师讲的算法,感觉收获很多,对于算法更加有信心了.首先,先来宏观看一下:                      这三种算法总的来说,刚开始看的时候不知道怎么下手,但是看多了也会有那么一点儿感觉.分治法是这三种算法里面都有的思想,动态规划和贪心都是将问题分解成子问题求解,但动态规划里面的子问题都带有联系,而贪心算法里面的子问题都相对独立,唯一不同的是,贪心算法要首先想出一个解决方案来构造求解最优解的过程.      宏观介绍下算法后,来看看贪心算法的两个实例.