zoukankan      html  css  js  c++  java
  • uvalive 2326

    题目连接:2326 - Moving Tables


    题目大意:在一个走廊上有400个教室, 先在有一些桌子要移动, 每次移动需要十分钟, 但是不同房间的桌子可以在同一个十分钟内移动,只要走廊没有被占用就可以, 注意教室序号1 和 2 是在对面。


    注意:给出的区间没有分左边或者是右边比较大。

    解题思路:区间覆盖问题, 将所有给出的区间处理一下, 去除对面房间这样的情况。 让后将区间按照l 和 r 的值进行排序, 然后看进行几次区间覆盖可以使得所有区间均被用上。


    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    const int N = 205;
    
    struct thing {
        int l;
        int r;
    }tmp[N];
    
    bool cmp(const thing& a, const thing& b) {
        if (a.l != b.l) return a.l < b.l;
        else    return a.r <  b.r;
    }
    
    int main() {
        int cas, n, L, R, vis[N];
        scanf("%d", &cas);
        while (cas--) {
    	int ti = 0, cnt = 0;
    	memset(vis, 0, sizeof(vis));
    	
    	scanf("%d", &n);
    	for (int i = 0; i < n; i++) {
    	    scanf("%d%d", &L, &R);
    	    if (L > R) {
    		int t = R;
    		R = L;
    		L = t;
    	    }
    	    tmp[i].l = (L + 1) / 2;
    	    tmp[i].r = (R + 1) / 2;
    	}
    
    	sort(tmp, tmp + n, cmp);
    
    	while (cnt < n) {
    	    ti++;
    	    int begin = 0;
    	    for (int i = 0; i < n; i++) {
    		if (vis[i]) continue;
    		if (tmp[i].l > begin) {
    		    begin = tmp[i].r;
    		    cnt++;
    		    vis[i] = 1;
    		}
    	    }
    	}
    
    	printf("%d
    ", ti * 10);
    	
        }
        return 0;
    }
    


  • 相关阅读:
    团队作业3--需求改进&系统设计
    需求分析&原型设计
    团队项目作业1-团队展示
    结对编程
    APP案例分析之华为浏览器
    四则运算生成器做法思路
    关于PHP使用GD库生成的验证码无法在别处显示
    第二次课程心得
    两个程序代码
    5.8下午
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3295285.html
Copyright © 2011-2022 走看看