ural 1303 Minimal Coverage【贪心】】的更多相关文章

链接: http://acm.timus.ru/problem.aspx?space=1&num=1303 按照贪心的思想,每次找到覆盖要求区间左端点时,右端点最大的线段,然后把要求覆盖的区间改为这个右端点到M这个区间.依次类推下去,这样的话就只需要扫一遍就可以找去来. 要做的预备工作就是将线段按照左端点的升序排序就可以了. 它的时间复杂度就是O(n) 代码一直WA,望大神指教 #include<iostream> #include<stdio.h> #include<…
题目传送门 /* 题意:最少需要多少条线段能覆盖[0, m]的长度 贪心:首先忽略被其他线段完全覆盖的线段,因为选取更长的更优 接着就是从p=0开始,以p点为标志,选取 (node[i].l <= p && p < node[i+1].l) 详细解释:http://www.cnblogs.com/freezhan/p/3219046.html */ #include <cstdio> #include <iostream> #include <al…
链接: http://acm.timus.ru/problem.aspx?space=1&num=1303 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26733#problem/D D - Minimal Coverage Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice UR…
题目地址:Ural 1303 先按每一个线段的左端点排序,然后设置一个起点s.每次都从起点小于等于s的线段中找到一个右端点最大的. 并将该右端点作为新的起点s,然后继续找. 从左到右扫描一遍就可以. 代码例如以下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h>…
URAL 1303 思路: dp+贪心,然后记录路径 mx[i]表示从i开始最大可以到的位置 sufmx[i]表从1-i的某个位置开始最大可以到达的位置 比普通的贪心效率要高很多 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mp make_pair #define pii pair<int,int> #define mem(a,b…
题目链接 又是输出路径...这题完全受上题影响,感觉两个题差不多..用了基本上一样的算法写了,这题比较纠结,就是卡内存啊...5000*5000的数组开不了..然后没办法,水了好几次MLE,看了一下虎哥的思路,完全不是一个套路,我写复杂了..我啪啪按他的思路来了一次,就是过不了第三组,貌似得交了一二十次了...我把5000*5000降了降,因为只要i<=j的时候有用,乱搞了搞,2500*5000就过了...真心不容易啊... 只要把flag[i][j]记录 那一段,然后 pre记录i,sz记录上…
 Minimal coverage  The Problem Given several segments of line (int the X axis) with coordinates [Li,Ri]. You are to choose the minimal amount of them, such they would completely cover the segment [0,M]. The Input The first line is the number of test…
10020 Given several segments of line (int the X axis) with coordinates [Li, Ri]. You are to choose the minimalamount of them, such they would completely cover the segment [0, M].InputThe first line is the number of test cases, followed by a blank lin…
题目大意:先确定一个M, 然后输入多组线段的左端和右端的端点坐标,然后让你求出来在所给的线段中能够 把[0, M] 区域完全覆盖完的最少需要的线段数,并输出这些线段的左右端点坐标. 思路分析: 线段区间的起点是0,那么找出所有区间起点小于0中的最合适的区间. 因为需要尽量少的区间,所以选择右端点更大的区间,它包含所选线段更大. 如果在所有区间中找到了解,且右端点小于M,则把找到的区间的右端点定为新的线段区间的起点. #include <iostream> #include <stdio.…
Minimal coverage The Problem Given several segments of line (int the X axis) with coordinates [Li,Ri]. You are to choose the minimal amount of them, such they would completely cover the segment [0,M]. The Input The first line is the number of test ca…