最大覆盖

Time Limit:1000MS  Memory Limit:32768K
Total Submit:20 Accepted:7

Description

我们定义一条线段,首先可以认为它在X轴上,它的起点为(a,0)终点为(b,0),所以我们可以简化成[a,b]。现在我们有N条这样的线段都位于X轴上,所以肯定存在一点被覆盖多次或者一次,我们的任务就是找到最多被覆盖的次数,请参考样例便于理解。

Input

第一行输入为一个整数N(1≤N≤10^5),表示我们有N条线段,接下来的N行每行包括两个整数a,b(1≤a≤b≤10^9)表示线段的起点和终点。

Output

输出一个整数表示被覆盖的最大次数。

Sample Input

5
1 2
2 2
2 4
3 4
5 1000
3
1 1
2 2
3 3

Sample Output

3
1

Hint

对于第一组我们可以发现2被覆盖次数最多为3次,依次被[1 2],[2 2],[2 4]这三条线段覆盖,所以输出为3。
对于第二组最大覆盖次数为1且1 2 3都被覆盖1次,所以输出1。

思路: 先扫描思想

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<string>
 6 #include<queue>
 7 #include<algorithm>
 8 #include<map>
 9 #include<iomanip>
10 #include<climits>
11 #include<string.h>
12 #include<numeric>
13 #include<cmath>
14 #include<stdlib.h>
15 #include<vector>
16 #include<stack>
17 #include<set>
18 #define FOR(x, b, e)  for(int x=b;x<=(e);x++)
19 #define REP(x, n)     for(int x=0;x<(n);x++)
20 #define INF 1e7
21 #define MAXN 100010
22 #define maxn 1000010
23 #define Mod 1000007
24 #define N 1010
25 using namespace std;
26 typedef long long LL;
27
28
29 bool flag[N], a[N][N];
30 int ans, cnt[N], group[N], n, m, vis[N];
31 bool dfs(int u, int pos){
32     int i, j;
33     for (i = u + 1; i <= n; i++){
34         if (cnt[i] + pos <= ans) return 0;
35         if (a[u][i]){
36             // 与目前团中元素比较,取 Non-N(i)
37             for (j = 0; j < pos; j++) if (!a[i][vis[j]]) break;
38             if (j == pos){     // 若为空,则皆与 i 相邻,则此时将i加入到 最大团中
39                 vis[pos] = i;
40                 if (dfs(i, pos + 1)) return 1;
41             }
42         }
43     }
44     if (pos > ans){
45         for (i = 0; i < pos; i++)
46             group[i] = vis[i]; // 最大团 元素
47         ans = pos;
48         return 1;
49     }
50     return 0;
51 }
52
53 void maxclique()
54 {
55     ans = -1;
56     for (int i = n; i > 0; i--)
57     {
58         vis[0] = i;
59         dfs(i, 1);
60         cnt[i] = ans;
61     }
62 }
63
64 int main(){
65     int T;
66     scanf("%d", &T);
67     while (T--){
68         scanf("%d%d", &n, &m);
69         int x, y;
70         memset(a, 0, sizeof(a));
71         for (int i = 0; i < m; i++){
72             scanf("%d%d", &x, &y);
73             a[x][y] = a[y][x] = 1;
74         }
75         for (int i = 1; i <= n; i++)
76             for (int j = 1; j <= n; j++)
77                 if (i == j) a[i][j] = 0;
78                 else    a[i][j] ^= 1;
79                 maxclique();
80
81                 if (ans < 0) ans = 0;
82                 printf("%d\n", ans);
83                 for (int i = 0; i < ans; i++)
84                     printf(i == 0 ? "%d" : " %d", group[i]);
85                 if (ans > 0) puts("");
86     }
87     return 0;
88 }

代码君

转载于:https://www.cnblogs.com/usedrosee/p/4378793.html

SWJTU 2208 最大覆盖相关推荐

  1. 基于回溯搜索优化算法的WSN覆盖优化

    文章目录 一.理论基础 1.回溯搜索优化算法 (1)种群初始化 (2)选择Ⅰ (3)变异 (4)交叉 (5)选择Ⅱ 2.BSA算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.回溯搜 ...

  2. 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin

    1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...

  3. LeetCode简单题之检查是否区域内所有整数都被覆盖

    题目 给你一个二维整数数组 ranges 和两个整数 left 和 right .每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 . 如 ...

  4. html滑动逐渐覆盖效果,创意jQuery和CSS3滑动覆盖响应式幻灯片特效

    这是一款非常有创意的jQuery和CSS3滑动覆盖响应式幻灯片特效.该幻灯片特效采用响应式设计,在幻灯片切换时使用一个滑动块状区域来进行覆盖,显示新的幻灯片内容,整体效果非常不错. 使用方法 HTML ...

  5. 多个矩形,求覆盖面积,周长,及交点

    问题:给出若干个矩形,(给的是矩形左上角和右下角坐标),求最后所得图形的面积/周长: 三个矩形如左图所示,而若要计算面积,看右图,用3个矩形各自的面积之和减去重复部分(红色和蓝色)的面积 人算很简单, ...

  6. 简单几何(线段覆盖) POJ 3347 Kadj Squares

    题目传送门 题意:告诉每个矩形的边长,它们是紧贴着的,问从上往下看,有几个还能看到. 分析:用网上猥琐的方法,将边长看成左端点到中心的距离,这样可以避免精度问题.然后先求出每个矩形的左右端点,然后如果 ...

  7. 一条直线上N个线段所覆盖的总长度

    转自http://blog.csdn.net/bxyill/article/details/8962832 问题描述: 现有一直线,从原点到无穷大. 这条直线上有N个线段.线段可能相交. 问,N个线段 ...

  8. Java知多少(29)覆盖和重载

    在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类 ...

  9. c++ 的重载、覆盖、隐藏

    成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual关键字可有可无. 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分 ...

  10. python用for循环一直出现最后一个值_python中for循环的list最后一个数据总会覆盖前面的数据...

    问 题 1.如题,我真的是没办法了,用尽各种方法list的最后一个数据都会覆盖前面的数据. 2. class lotto_result_cl: def __init__(self, index, sp ...

最新文章

  1. C++ break语句,continue语句,goto语句
  2. UDP通讯C++实现
  3. Linux - 手册(manual)使用 详解
  4. Linux系统下MBR分区表的备份与恢复
  5. boost::fusion::tuple用法的测试程序
  6. 使用RSS订阅喜欢的微博博主
  7. linux 信号没有被处理方法,[计算机]Linux 信号signal处理机制.doc
  8. C++和Lua交互教程(基于LuaBridge)
  9. 3个原因告诉你,为什么选择HTML5大前端?
  10. vb中如何在任务管理器里面隐藏应用程序进程
  11. 字长越长计算机的计算速度也越快,计算机字长越长运算速度越慢吗
  12. 2017 年 10月ios 面试题 总结
  13. 第四届CSTQB®国际软件测试高峰论坛
  14. python使用微信进行消息推送
  15. C++ lazy evaluation(延迟计算或惰性求值)介绍
  16. ip地址占用检测,ping ip地址
  17. hdu1728 (直撞bfs)
  18. MySQL 表设计的经验准则
  19. 累加器 java_Spark笔记之累加器(Accumulator)
  20. android生命周期home键,Android横竖屏切换, 手机锁屏以及按Home键和返回键时的Activity的生命周期...

热门文章

  1. c语言随机生成算式的对错判断,蔡奇宏软件工程第二次作业--四则运算
  2. addu指令_大金哥的超标量处理器学习笔记之5——指令集体系
  3. 2.4配置自定义拦截器
  4. [渝粤教育] 广东-国家-开放大学 21秋期末考试建设工程法规10221k1
  5. VC6.0编译错误解决方法集锦
  6. 23种设计模式(十二)对象性能之享元模式
  7. 无损1080i到1080p是如何制作的
  8. String、Object、包装类的常用方法以及注意点
  9. MyEclipse控制台报错:java.lang.OutOfMemoryError: PermGen space
  10. 深入理解Angular2变化监测和ngZone