SWJTU 2208 最大覆盖
最大覆盖
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 最大覆盖相关推荐
- 基于回溯搜索优化算法的WSN覆盖优化
文章目录 一.理论基础 1.回溯搜索优化算法 (1)种群初始化 (2)选择Ⅰ (3)变异 (4)交叉 (5)选择Ⅱ 2.BSA算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.回溯搜 ...
- 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin
1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...
- LeetCode简单题之检查是否区域内所有整数都被覆盖
题目 给你一个二维整数数组 ranges 和两个整数 left 和 right .每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 . 如 ...
- html滑动逐渐覆盖效果,创意jQuery和CSS3滑动覆盖响应式幻灯片特效
这是一款非常有创意的jQuery和CSS3滑动覆盖响应式幻灯片特效.该幻灯片特效采用响应式设计,在幻灯片切换时使用一个滑动块状区域来进行覆盖,显示新的幻灯片内容,整体效果非常不错. 使用方法 HTML ...
- 多个矩形,求覆盖面积,周长,及交点
问题:给出若干个矩形,(给的是矩形左上角和右下角坐标),求最后所得图形的面积/周长: 三个矩形如左图所示,而若要计算面积,看右图,用3个矩形各自的面积之和减去重复部分(红色和蓝色)的面积 人算很简单, ...
- 简单几何(线段覆盖) POJ 3347 Kadj Squares
题目传送门 题意:告诉每个矩形的边长,它们是紧贴着的,问从上往下看,有几个还能看到. 分析:用网上猥琐的方法,将边长看成左端点到中心的距离,这样可以避免精度问题.然后先求出每个矩形的左右端点,然后如果 ...
- 一条直线上N个线段所覆盖的总长度
转自http://blog.csdn.net/bxyill/article/details/8962832 问题描述: 现有一直线,从原点到无穷大. 这条直线上有N个线段.线段可能相交. 问,N个线段 ...
- Java知多少(29)覆盖和重载
在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类 ...
- c++ 的重载、覆盖、隐藏
成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual关键字可有可无. 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分 ...
- python用for循环一直出现最后一个值_python中for循环的list最后一个数据总会覆盖前面的数据...
问 题 1.如题,我真的是没办法了,用尽各种方法list的最后一个数据都会覆盖前面的数据. 2. class lotto_result_cl: def __init__(self, index, sp ...
最新文章
- C++ break语句,continue语句,goto语句
- UDP通讯C++实现
- Linux - 手册(manual)使用 详解
- Linux系统下MBR分区表的备份与恢复
- boost::fusion::tuple用法的测试程序
- 使用RSS订阅喜欢的微博博主
- linux 信号没有被处理方法,[计算机]Linux 信号signal处理机制.doc
- C++和Lua交互教程(基于LuaBridge)
- 3个原因告诉你,为什么选择HTML5大前端?
- vb中如何在任务管理器里面隐藏应用程序进程
- 字长越长计算机的计算速度也越快,计算机字长越长运算速度越慢吗
- 2017 年 10月ios 面试题 总结
- 第四届CSTQB®国际软件测试高峰论坛
- python使用微信进行消息推送
- C++ lazy evaluation(延迟计算或惰性求值)介绍
- ip地址占用检测,ping ip地址
- hdu1728 (直撞bfs)
- MySQL 表设计的经验准则
- 累加器 java_Spark笔记之累加器(Accumulator)
- android生命周期home键,Android横竖屏切换, 手机锁屏以及按Home键和返回键时的Activity的生命周期...
热门文章
- c语言随机生成算式的对错判断,蔡奇宏软件工程第二次作业--四则运算
- addu指令_大金哥的超标量处理器学习笔记之5——指令集体系
- 2.4配置自定义拦截器
- [渝粤教育] 广东-国家-开放大学 21秋期末考试建设工程法规10221k1
- VC6.0编译错误解决方法集锦
- 23种设计模式(十二)对象性能之享元模式
- 无损1080i到1080p是如何制作的
- String、Object、包装类的常用方法以及注意点
- MyEclipse控制台报错:java.lang.OutOfMemoryError: PermGen space
- 深入理解Angular2变化监测和ngZone