uva 10020 Minimal coverage(贪心,区间覆盖)

2023-12-19 21:08

本文主要是介绍uva 10020 Minimal coverage(贪心,区间覆盖),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这道题一读就是经典的区间问题,是区间覆盖,敲过之后还有花了很长的调试时间,还是我不熟练,现在做题确实挺慢

的,简单题目也要做好久,没事,慢慢来。最重要的要确保正确率和心态问题,认真对待,调试找到了好多bug,一些

细节问题。。。都是刚开始没有注意到的。交了之后RE,在数组上多加了两个0。A了,,uva老是不提示数据有多大,

所以只能乱开。。。

思路:

先对区间按左边的点进行排序,如果当前需要涵盖的区间为[x,y],那么在排序的区间中到左边小于x,右

边最大的那个区间,设为Max,然后更新想找的区间为[Max,m],依次类推,知道没有小于x的区间或者最大值已经大

于了m。。

贴代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
struct node
{int x,y;
}a[500005],b[500005];
int cmp(const void *a,const void *b)
{if(((node *)a)->x == ((node *)b)->x)return ((node *)b)->y - ((node *)b)->y;return ((node *)a)->x - ((node *)b)->x;
}
int main()
{int T,i,m,x,y;cin >> T;while(T--){cin >> m;i = 1;while(cin >> x >> y,x||y){a[i].x = x;a[i].y = y;i++;}int s = i-1; qsort(a+1,s,sizeof(a[0]),cmp);//	for(i=1; i<=s; i++)//		cout << a[i].x << " " << a[i].y << endl;int cnt = 0;int flag = 0;int k=1;int flag1 = 0;int Max = 0;int Max1;for(i=1; i<=s; i++){if(a[i].x <= cnt){if(Max <= a[i].y){Max = a[i].y;Max1 = a[i].x;	}flag = 1;if(i!=s)continue;}	 if(i != s)i--;//	cout << " i= " << i << endl;if(flag == 0){break;}b[k].x = Max1;b[k].y = Max;//cout << a[i].x << a[i].y << endl;k++;cnt = Max;flag = 0;if(cnt >= m){flag1 = 1;break;}}if(flag1){cout << k-1 << endl;for(i=1; i<k; i++){cout << b[i].x << " " << b[i].y <<endl; }}else	{cout << '0' << endl;}if(T)cout << endl;} return 0;
}


这篇关于uva 10020 Minimal coverage(贪心,区间覆盖)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/513698

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

【服务器运维】CentOS6 minimal 离线安装MySQL5.7

1.准备安装包(版本因人而异,所以下面的命令中版本省略,实际操作中用Tab自动补全就好了) cloog-ppl-0.15.7-1.2.el6.x86_64.rpmcpp-4.4.7-23.el6.x86_64.rpmgcc-4.4.7-23.el6.x86_64.rpmgcc-c++-4.4.7-23.el6.x86_64.rpmglibc-2.12-1.212.el6.x86_64.r

【服务器运维】CentOS7 minimal 离线安装 gcc perl vmware-tools

0. 本机在有网的情况下,下载CentOS镜像 https://www.centos.org/download/ 1. 取出rpm 有的情况可能不需要net-tools,但是如果出现跟ifconfig相关的错误,就把它安装上。另外如果不想升级内核版本的话,就找对应内核版本的rpm版本安装 perl-Time-Local-1.2300-2.el7.noarch.rpmperl-Tim

UVA - 12206 Stammering Aliens (hash)

这题其实很容易想到2分长度,关键是2分后,怎么判断出现最多次的串是否》=m次了。这里需要用到hash来处理。 对于一个字符串   H[i] =H[i+1]*131+s[i]  ;其中 H[n]=0;那么对于一个长度为L的串 ,hanh[i,l]=H[i]-H[i+L]*x^L ; 这样记录每个字符串的hash值,然后再处理起来就比较简单了。 VIEW CODE #include<

秋招突击——6/22——复习{区间DP——加分二叉树,背包问题——买书}——新作{移除元素、实现strStr()}

文章目录 引言复习区间DP——加分二叉树个人实现 背包问题——买书个人实现参考实现 新作移除元素个人实现参考思路 找出字符串中第一个匹配项的下标个人实现参考实现 总结 引言 今天做了一个噩梦,然后流了一身汗,然后没起来,九点多才起床背书。十点钟才开始把昨天那道题题目过一遍,然后十一点才开始复习题目,为了不耽误下午的时间,所以这里的就单纯做已经做过的题目,主打一个有量,不在学

「BioNano系列」那些Bionano未覆盖的区域是什么?

在「Bionano系列」光学图谱混合组装应该怎么做?这篇文章中,我展示了下面这张图。 未覆盖区域 和之前的图不同的是,我加了几个箭头,这些箭头所指向的区域的特征就是,这些区域并未被Bionano所覆盖。如果不去思考这些区域到底是什么,直接进行混合组装,那么这其实对最后结果的不负责任。因为这完全可能是组装软件没有正确的处理错误的overlap,将不应该连接的序列连接在一起(尽

图片覆盖攻击

点击劫持的本质是一种视觉欺骗。顺着这个思路,还有一些攻击方法也可以起到类似的作 用,比如图片覆盖。 一名叫 sven.vetsch 的安全研究者最先提出了这种 Cross Site Image Overlaying 攻击,简称 XSIO。sven.vetsch 通过调整图片的 style 使得图片能够覆盖在他所指定的任意位置。 <a href="http://disenchant.ch">

贪心推公式——AcWing 125. 耍杂技的牛

贪心推公式 定义 贪心算法是一种在每一步选择中都采取在当前状态下最优的选择,希望通过局部的最优选择来得到全局最优解的算法策略。 运用情况 问题具有最优子结构,即一个问题的最优解包含其子问题的最优解。可以通过局部最优决策逐步推导到全局最优。问题的选择策略相对明确且易于计算。 注意事项 贪心算法并不总是能得到全局最优解,可能会陷入局部最优。对于一些复杂问题,需要谨慎验证其正确性。可能需要对

jsp样式被覆盖,jsp调试的时候多了element.style

jsp样式被覆盖,jsp调试的时候多了element.style  阻碍了我引入的css 有时在写css样式,并调试时,会出现很不可思议的现象,比如:我们定义了一个<div class=”aaa”></div>,在css中定义样式,.aaa{width:500px;},但预览时该div块却没有定义的那么宽,这时用firebug调试发现,css样式中多了一句:element.style{wi

百度笔试题:绳子最多覆盖多少个点

版权所有。所有权利保留。 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123711 百度笔试题: 数轴上从左到右有n个点,a[0] ,a[1],…,a[n-1],给定一根长度为L绳子,求绳子最多覆盖其中几个点?