uva 10020 Minimal coverage
来源:互联网 发布:乐高moc软件 编辑:程序博客网 时间:2024/06/06 05:43
题意:给你N条线段(Li,Ri)映射到x轴上,然后让你用其中的几条线段(条数最少)覆盖【0,M】
方法:利用贪心思想。对线段按照长度进行排序,在这里可以在输入的时候,对线段进行选择,如果Ri<0||Li>M这直接删除。然后每次在选择线段的时候,尽可能的选择长的,这里用到了贪心思想
#include <cstdio>#include <iostream>#include <sstream>using namespace std;struct NODE{ int x,y;};NODE node1[100010],node2[100010];int main(){ int m; int p =0; // int L[50005],R[50005]; //char a[250]; scanf("%d",&m); for(; p < m; p++) { if(p != 0) printf("\n"); int n,l,r; // int temp = 0; int p1 = 0; int p2 = 0; scanf("%d",&n); while(scanf("%d %d",&l,&r)&&(l || r)) { if(r > 0) { p1 ++; node1[p1].x = l; node1[p1].y = r; } } int Min =0,Max =0; int flag =0; int index; while(1) { if(Min >= n) break; Max = 0; flag = 0; for(int i = 1; i<=p1;i++) { if(Min >= node1[i].x && Max < node1[i].y) { index = i; flag = 1; Max = node1[i].y; } } if(flag) { ++p2; node2[p2] = node1[index]; Min = node1[index].y; //对左边贪心 // printf("node2x --- %d\nnode2y ----- %d\n",node1[index].x,node1[index].y); } else break; } if(flag) { printf("%d\n",p2); for(int i = 1; i <= p2; i++) printf("%d %d\n",node2[i].x,node2[i].y); } else printf("0\n"); } return 0;}
1 0
- UVa 10020 - Minimal coverage
- UVa 10020 - Minimal coverage
- uva 10020 - Minimal coverage
- uva 10020 - Minimal coverage
- UVA 10020 Minimal coverage
- UVA 10020 - Minimal coverage
- UVA 10020 Minimal coverage
- UVa:10020 Minimal coverage
- uva 10020 Minimal coverage
- uva 10020 - Minimal coverage
- uva 10020 Minimal coverage
- UVa-10020 - Minimal coverage
- uva 10020 - Minimal coverage
- UVA - 10020 Minimal coverage
- Minimal coverage UVA 10020
- uva 10020 Minimal coverage
- UVA 10020 Minimal coverage
- UVa 10020 - Minimal coverage
- Java编程基础知识复习:变量与数据类型<数据类型初阶>
- 第九周上机实践项目——项目2-我的数组类
- Dropout
- if __name__=='__main()__:
- D. A Simple But Difficult Problem
- uva 10020 Minimal coverage
- Lightoj 1031(区间dp)
- 【设计模式六大原则】:单一职责原则-带你走梦幻西游(一)
- 泛型类
- sdut 2605 Mountain Subsequences(树状数组)
- 晏殊 && 晏几道
- Oracle 使用配置文件来配置JDBC连接数据库
- 面试题---博客
- leetcode-223. Rectangle Area