[itint5]区间相交
http://www.itint5.com/oj/#14
要记录原来的索引,所以用了额外的空间,新生成一个结构。如果要省空间,可以用指针来排序,最后拿指针减去索引0的位置就是index,见:http://www.itint5.com/discuss/172/%E4%B8%BA%E5%95%A5%E6%88%91%E8%BF%99%E9%A2%98%E5%9C%A8%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%97%B6%E4%BC%9Asegmentation-fault
这里没有用指针,也有很多错误,足可见面试时不要自取其辱,寻找合理的方法即可。
一要注意,sort和comp函数,因为是高级的,所以返回bool,并且参数是const引用。二要注意,排完序后,并不是前一个和后一个比较就行了,要记录之前的end最大的那个。
struct IntervalPair {
int start;
int end;
int idx;
};
bool comp(const IntervalPair &pa, const IntervalPair &pb) {
if (pa.start != pb.start) {
return pa.start < pb.start;
} else {
return pb.end < pb.end;
}
}
void intersected(vector<Interval> &intervals, vector<bool> &isIntersected) {
int size = intervals.size();
if (size <= 1) return;
vector<IntervalPair> vec(size);
for (int i = 0; i < size; i++) {
vec[i].start = intervals[i].start;
vec[i].end = intervals[i].end;
vec[i].idx = i;
}
sort(vec.begin(), vec.end(), comp);
int max_end = vec[0].end;
int max_end_idx = 0;
for (int i = 0; i < size - 1; i++) {
if (vec[i].end > max_end) {
max_end = vec[i].end;
max_end_idx = i;
}
if (max_end >= vec[i+1].start) {
isIntersected[vec[max_end_idx].idx] = true;
isIntersected[vec[i+1].idx] = true;
}
}
}
[itint5]区间相交的更多相关文章
- k个区间相交的段落数 Educational Codeforces Round 4 D
http://codeforces.com/contest/612/problem/D 题目大意:给你n个区间,这n个区间会有相交的部分,如果一个区间相交的部分>=k,那么就把这个区间记录下来. ...
- 快速判断&求出区间相交的长度
有两个区间A[a1,b1], B[a2,b2],判断这两个区间有没有交集.我们可以分为两种思维来判断: /** *思路就是如果两个区间不相交,那么最大的开始端一定大于最小的结束端 **/ if(max ...
- ZOJ - 3961 Let's Chat(区间相交)
题意:给定一个长度为n的序列,A和B两人分别给定一些按递增顺序排列的区间,区间个数分别为x和y,问被A和B同时给定的区间中长度为m的子区间个数. 分析: 1.1 ≤ n ≤ 109,而1 ≤x, y ...
- nyoj--1036--非洲小孩(区间相交问题)
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经常洗澡.(常年缺水,怎么洗 ...
- hpuoj--校赛--面试难题(区间相交问题)
问题 F: 感恩节KK专场--面试难题 时间限制: 1 Sec 内存限制: 128 MB 提交: 294 解决: 39 [提交][状态][讨论版] 题目描述 有n个人要来面试学生会XX部门,要求面 ...
- cojs 简单的区间问题 解题报告
新学了些弦图和区间图的新玩意,于是就想着出一道题目 其实这道题不用弦图和区间图的理论也是可以做的 首先考虑第一问,第一问是一个NOIP普及组水平的贪心 我们把区间按照右端点从小到大排序,之后从头到尾扫 ...
- 【网络流24题】No.21 (最长 k 可重区间集问题 最长不相交路径 最大费用流)
[] 输入文件示例input.txt4 21 76 87 109 13 输出文件示例output.txt15 [分析] 直接co题解好了,写得挺全.. [建模方法] 方法1 按左端点排序所有区间,把每 ...
- 外星人的供给站 (区间覆盖 t贪心)
/** 区间覆盖问题 分析: 每个点可以确定两个圆心 圆心的范围形成 一个区间 在这个区间上以任意一点画圆便可将此点 包含在内 如果有两个点所确定的区间相交了 说明这两个点可以用一个圆包含在内 即用一 ...
- hdu 5700区间交(线段树)
区间交 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
随机推荐
- OpenGL7-2-快速绘制
代码下载 #include "CELLWinApp.hpp"#include <gl/GLU.h>#include <assert.h>#include & ...
- DEDECMS中,友情链接
友情链接:dede:flink {dede:flink row='24' type='image' titlelen="24" typeid="0"} [fie ...
- QT设置窗口屏幕居中
int main(int argc, char *argv[]){ QApplication ap(argc, argv); QDesktopWidget *pDesk = QApplicatio ...
- 转载:邮箱正则表达式Comparing E-mail Address Validating Regular Expressions
Comparing E-mail Address Validating Regular Expressions Updated: 2/3/2012 Summary This page compares ...
- C#编写记事本(高仿)
近一周写的关于记事本的代码,高仿记事本.本人C#入门不久,其中存在代码冗余,但懒得修改了. 经测试运行正常. 一.主窗体设计及代码 namespace BestEditor { public part ...
- angular $q服务的用法
Promise是一种和callback有类似功能却更强大的异步处理模式,有多种实现模式方式,比如著名的Q还有JQuery的Deffered. 什么是Promise 以前了解过Ajax的都能体会到回调的 ...
- 十九、mysql 数据分布式
1.RAID 廉价磁盘冗余阵列 2.Symbolic links 通俗易懂的说就是通过连接符指向的操作,人为的将某些数据库分布到其他的文件夹/磁盘上 Linux: Mysql DATA路径:/opt/ ...
- Java类加载器加载类顺序
java ClassLoader的学习 java是一门解释执行的语言,由开发人员编写好的java源文件先编译成字节码文件.class形式,然后由java虚拟机(JVM)解释执 行,.class字节码文 ...
- 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...
- EF4.1之复杂类型
首先我们生成两张对应表: public class Client { public int ClientID { set; get; } public string ClientName { set; ...