poj 3190 Stall Reservations
来源:互联网 发布:雷达图制作软件 编辑:程序博客网 时间:2024/05/02 02:17
按照起始时间排序,然后对于任意一段,搜索可以和它合并的下一段,
为了保证尽量合并,贪心下一段起始时间
然后求下一段的过程用二分即可,二分还要注意去掉之前已经用过的段,瞎逼二分居然过了
import java.io.*;import java.math.BigInteger;import java.util.*;class item implements Comparable<item>{ int l,r; int index; public item(int a, int b, int c){ l=a;r=b;index=c; } @Override public int compareTo(item t) { if(this.l==t.l) return this.r-t.r; else return this.l-t.l; }}class problem1 { int n,left=Integer.MAX_VALUE,right=0; item arr[]; int vis[]; StringBuilder sb = new StringBuilder(); void solver() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(reader.readLine()); n = Integer.valueOf(st.nextToken()); arr = new item[n]; vis = new int[n]; for(int i=0;i<n;i++){ st = new StringTokenizer(reader.readLine()); int l = Integer.valueOf(st.nextToken()); int r = Integer.valueOf(st.nextToken()); if(l<left) left=l; if(r>right) right=r; arr[i] = new item(l,r,i); } Arrays.sort(arr); int stall=1; for(int i=0;i<n;i++){ if(vis[arr[i].index]!=0) continue; vis[arr[i].index]=stall; int next=i; while(true){ int tmp = search(next); if(tmp>next&&tmp<n){ vis[arr[tmp].index]=stall; next=tmp; }else{ break; } } stall++; } System.out.println(stall-1); for(int i=0;i<n;i++){ sb.append(vis[i]).append("\n"); } System.out.println(sb.toString()); } int search(int i){ int x = i; int y=n-1; while(x<=y){ int mid = (x+y)/2; if(arr[mid].l>arr[i].r){ y=mid-1; }else{ x=mid+1; } } if(x<n&&vis[arr[x].index]!=0){ while(x<n-1){ x++; if(vis[arr[x].index]==0) break; } } return x; }} public class stackingbox { public static void main(String[] args) throws Exception { problem1 p = new problem1(); p.solver(); }}
0 0
- poj 3190 Stall Reservations
- POJ-3190-Stall Reservations
- POJ-3190-Stall Reservations
- POJ 3190 Stall Reservations
- POJ-3190-Stall Reservations
- poj 3190Stall Reservations
- poj 3190 Stall Reservations
- poj 3190 Stall Reservations
- POJ 3190 Stall Reservations
- POJ 3190 Stall Reservations
- poj 3190 Stall Reservations
- POJ 3190 Stall Reservations
- poj 3190 Stall Reservations
- POJ 3190 Stall Reservations
- POJ 3190 Stall Reservations
- poj 3190 Stall Reservations
- poj 3190 Stall Reservations
- POJ 3190 Stall Reservations
- mac+apache+django+wsgi
- 读《数据结构学习指导和习题解答》(C++语言版)有感。
- Duilib中为RichEdit\Edit控件添加自定义右键菜单
- 初学C#_9
- RESTful入门——转自http://lavasoft.blog.51cto.com/62575/229206/
- poj 3190 Stall Reservations
- 【SICP练习】120 练习3.51
- java.lang.IllegalArgumentException: Wrong FS: hdfs://localhost:9000/out, expected: file:///
- 最近开发中遇到的问题汇总
- 判断1000--2000年之间的闰年
- java路径两种写法"/"和"\\"
- 自考路之计算机系统
- Win 10 或可以运行安卓APP
- java开发人员需要注意的13个错误