POJ 刷题系列:1083. Moving Tables
来源:互联网 发布:qq飞车神影官方数据 编辑:程序博客网 时间:2024/05/16 06:32
POJ 刷题系列:1083. Moving Tables
传送门:POJ 1083. Moving Tables
题意:
一条走廊,两栏房间。搬运工每次从房价i移动到房间j需要10分钟,给定一系列的移动路线 i -> j,问最少需要多少时间。
思路:
实际上是求解多个区间中重叠区间的最大个数。采用imos累积,很好的一个思路。先对每个区间的起点和终点求偏导,然后再累积,累积数组中的最大值即为答案。详见:IMOS 累积法
需要注意的是:如果起点是偶数则让起点-1;如果终点是奇数,则让终点+1。因为从图中可以看出房间[1, 2],[3, 4]属于公用的,一旦一个被使用,另一个也将占用。
代码如下:
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.util.Arrays;import java.util.InputMismatchException;public class Main{ InputStream is; PrintWriter out; String INPUT = "./data/judge/201708/P1083.txt"; void solve() { int t = ni(); while (t --> 0){ int n = ni(); int[] ccu = new int[400 + 16]; for (int i = 0; i < n; ++i){ int s = ni(); int e = ni(); int sum = s + e; s = Math.min(s, e); e = sum - s; if ((s & 1) == 0) s--; if ((e & 1) != 0) e++; ccu[s] ++; ccu[e] --; } int max = 0; for (int i = 1; i < ccu.length; ++i){ ccu[i] += ccu[i - 1]; max = Math.max(max, ccu[i]); } out.println(max * 10); } } void run() throws Exception { is = oj ? System.in : new FileInputStream(new File(INPUT)); out = new PrintWriter(System.out); long s = System.currentTimeMillis(); solve(); out.flush(); tr(System.currentTimeMillis() - s + "ms"); } public static void main(String[] args) throws Exception { new Main().run(); } private byte[] inbuf = new byte[1024]; public int lenbuf = 0, ptrbuf = 0; private int readByte() { if (lenbuf == -1) throw new InputMismatchException(); if (ptrbuf >= lenbuf) { ptrbuf = 0; try { lenbuf = is.read(inbuf); } catch (IOException e) { throw new InputMismatchException(); } if (lenbuf <= 0) return -1; } return inbuf[ptrbuf++]; } private boolean isSpaceChar(int c) { return !(c >= 33 && c <= 126); } private int skip() { int b; while ((b = readByte()) != -1 && isSpaceChar(b)) ; return b; } private double nd() { return Double.parseDouble(ns()); } private char nc() { return (char) skip(); } private String ns() { int b = skip(); StringBuilder sb = new StringBuilder(); while (!(isSpaceChar(b))) { // when nextLine, (isSpaceChar(b) && b != ' // ') sb.appendCodePoint(b); b = readByte(); } return sb.toString(); } private char[] ns(int n) { char[] buf = new char[n]; int b = skip(), p = 0; while (p < n && !(isSpaceChar(b))) { buf[p++] = (char) b; b = readByte(); } return n == p ? buf : Arrays.copyOf(buf, p); } private char[][] nm(int n, int m) { char[][] map = new char[n][]; for (int i = 0; i < n; i++) map[i] = ns(m); return map; } private int[] na(int n) { int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = ni(); return a; } private int ni() { int num = 0, b; boolean minus = false; while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-')) ; if (b == '-') { minus = true; b = readByte(); } while (true) { if (b >= '0' && b <= '9') { num = num * 10 + (b - '0'); } else { return minus ? -num : num; } b = readByte(); } } private long nl() { long num = 0; int b; boolean minus = false; while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-')) ; if (b == '-') { minus = true; b = readByte(); } while (true) { if (b >= '0' && b <= '9') { num = num * 10 + (b - '0'); } else { return minus ? -num : num; } b = readByte(); } } private boolean oj = System.getProperty("ONLINE_JUDGE") != null; private void tr(Object... o) { if (!oj) System.out.println(Arrays.deepToString(o)); }}
阅读全文
0 0
- POJ 刷题系列:1083. Moving Tables
- POJ 1083.Moving Tables
- Poj第1083题--Moving Tables
- poj 1083 Moving Tables
- POJ 1083 Moving Tables
- POJ Moving Tables
- poj 1083 Moving Tables
- POJ 1083 Moving Tables
- poj 1083-Moving Tables
- POJ 1083 Moving Tables
- POJ 1083 Moving Tables
- POJ 1083 Moving Tables
- poj 1083 Moving Tables
- POJ 1083 Moving Tables
- POJ 1083 Moving Tables
- poj 1083 Moving Tables
- poj 1083 Moving Tables
- POJ-1083-Moving Tables
- VS 内存问题
- 使用Canvas画一个弹跳的皮球
- Linux上安装ZooKeeper并设置开机启动(CentOS7+ZooKeeper3.4.10)
- 多线程基础 -1
- markdown
- POJ 刷题系列:1083. Moving Tables
- 第一个示例程序FreakOut编译问题
- 对于stm32,初学者用库函数好还是直接对寄存器操作比较好
- pat考试总结
- 分布式端口扫描利刃: 使用DNmap创建Nmap集群
- HttpClient4.5 Apache 教程 [记录]
- Unity中的meta文件问题
- BZOJ1034[ZJOI2008]泡泡堂BNB--贪心(田忌赛马)
- 第十周——项目一(2)—二叉树的构造