5124 lines

2024-01-21 10:58
文章标签 lines 5124

本文主要是介绍5124 lines,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

· 题意: 给n条线段,求某点上最多覆盖多少条线段。

·hdu上有题解:

1002 lines
我们可以将一条线段[xi,yi]分为两个端点xi(yi)+1,在xi时该点会新加入一条线段,同样的,在(yi)+1时该点会减少一条线段,因此对于2n个端点进行排序,令xi为价值1,yi为价值-1,问题转化成了最大区间和,因为1一定在-1之前,因此问题变成最大前缀和,我们寻找最大值就是答案,另外的,这题可以用离散化后线段树来做。复杂度为排序的复杂度即nlgn,另外如果用第一种做法数组应是2n,而不是n,由于各种非确定性因素我在小数据就已经设了n=10W的点。

·排序一开始写成了sort(f,f+n,cmd);  其中n忘了乘2,WA了一发。。。

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <algorithm>
 4 #include <cstring>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <queue>
 8 #include <stack>
 9 #include <stdlib.h>
10 #include <map>
11 using namespace std;
12 #define LL long long
13 #define sf(a) scanf("%d",&(a));
14 #define N 500010
15 
16 struct LNode{
17     int x,flag;
18 }f[N];
19 int cmd(struct LNode x,struct LNode y){
20     if(x.x==y.x) return x.flag>y.flag;
21     return x.x<y.x;
22 }
23 int main()
24 {
25     int n,t;
26     scanf("%d",&t);
27     while(t--){
28         //memset(f,0,sizeof(f));
29         scanf("%d",&n);
30         for(int i=0;i<2*n;i=i+2) {
31             int x,y;
32             scanf("%d %d",&x,&y);
33             f[i].x=x;f[i].flag=1;
34             f[i+1].x=y+1;f[i+1].flag=2;
35         }
36         sort(f,f+2*n,cmd);
37         int maxc=-1;int num=0;
38         for(int i=0;i<n*2;i++){
39             if(f[i].flag==1) num++;
40             else num--;
41             if(num > maxc) maxc = num;
42         }
43         printf("%d\n",maxc);
44     }
45 
46     return 0;
47 }

 

这篇关于5124 lines的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

随机算法 - HNU 13348 Finding Lines

Finding Lines Problem's Link:  http://acm.hnu.cn/online/?action=problem&type=show&id=13348&courseid=0   Mean:  给你平面上1e5个点,让你判断是否可以找到一条直线,使得p%的点都在这条直线上。 analyse: 经典的随机算法题。 每次随机出两个点,

Halcon提取边缘线段lines_gauss 算子

Halcon提取边缘线段lines_gauss 算子 edges_color_sub_pix和edges_sub_pix两个算子使用边缘滤波器进行边缘检测。还有一个常用的算子lines_gauss算子,也可以用于提取边缘线段,它的鲁棒性非常好,提取出的线段类型是亚像素精度的XLD轮廓。其原型如下: lines gauss(Image : Lines : Sigma, Low, High, Li

Codeforces Round #329 (Div. 2) B. Anton and Lines ([好题] 计算直线在区间是否有交点)

题目链接 题意:给出n个条直线,然后在指定的区间(x1,x2)是否有直线的交点存在。 解法:一:闭区间,首先把区间略微调小。 二:计算直线在x1,x2上的交点y坐标,以及直线的id,然后按照y值,id值排序,最后判断第x1,x2左右两边的第i个点是不是同一直线的,如果不是,就存在交点。 #include<bits/stdc++.h>using namespace std;const i

POJ 1269 Intersecting Lines(判断直线相交)

题目地址:POJ 1269 直接套模板就可以了。。。实在不想自己写模板了。。。写的又臭又长。。。。不过这题需要注意的是要先判断是否有直线垂直X轴的情况。 代码如下: #include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>

poj 1269 Intersecting Lines(计算几何:线段相交)

给出两条线段,问对应哪三种情况: 不相交,重合,相交于一点 代码如下: /* ***********************************************Author :yinhuaEmail :yinwoods@163.comFile Name :poj1269.cppCreated Time :2014年12月02日 星期二

VSCode插件Sort Lines

Sort Lines是一款VSCode中的扩展,可以帮助你对所选文本或整个文件中的行进行排序。可以给你按字母大小排序(升序、降序),也可以进行排序+去重。而且还能将所有文本打乱顺序。做短文本分类的训练,清洗数据集的时候,这个工具大有用处。 参考文献 9款超级实用 VSCode 插件,让 Python 编程轻松愉悦_vscodepython插件推荐-CSDN博客 推荐一波VS Code

Thread-5 identical 391 lines

打印日志时出现下面的日志信息: Thread-5 identical 391 lines 中文的大概意思时,有391行完全一样 为什么会出现这样的问题呢 是因为相邻的几行打印内容完全相同,从Android O开始Log的chatty机制,会把中间的重复内容不再打印。而是打印类似如上的 ”identical 391 lines“ ,告知有多少行的日志是一样的,这不是错误,只是减少了重复打印的

《500 Lines or Less》(13)—— A 3D Modeller

原文 作者 原code 我用py3重写的code 3D 建模器 介绍 计算机辅助设计(Computer-aided design, CAD)工具允许我们在2D屏幕上查看和编辑3D对象。为此,CAD工具必须具有3个基本功能: 表示对象:使用一种数据结构保存和表示3D对象。显示: 在屏幕上显示交互:与对象进行交互,例如移动对象。 渲染作为指南 在 3D 建模器中,许多设计决策背后

AttributeError: can‘t set attribute ‘lines‘

目录 报错代码: 解决方法: 示例完整代码: 报错代码: ax.lines = [] 解决方法: 当你尝试使用 ax.lines = [] 来清除一个图表的线条,并遇到 AttributeError: can't set attribute 错误时,这表明 lines 属性不能直接被设置或重置,因为它是一个只读属性。 要清除 matplotlib 图表上的所有线条,你需要使

cf Educational Codeforces Round 41 D. Pair Of Lines

原题: D. Pair Of Lines time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given n points on Cartesian plane. Every point is a lattice