zoukankan      html  css  js  c++  java
  • POJ 2437

    题意:给定n个泥坑路面的初末位置,判断最少需要几个桥才能覆盖这些路面。

    贪心法,从每个泥坑的开始位置建桥,然后判断是否覆盖后面的路面,就是分类讨论了。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    struct Seg{
    	int l, r;
    	Seg(int l = 0, int r = 0) :l(l), r(r){}
    	bool operator < (const Seg & rhs) const {
    		return l < rhs.l;
    	}
    };
    Seg v[10240];
    
    int main()
    {
        ios::sync_with_stdio(false);
    	int n, l; cin >> n >> l;
    	for (int i = 0; i < n; ++i) cin >> v[i].l >> v[i].r;
    	sort(v, v + n);
    	int cnt = 0, pos = 0;
    	for (int i = 0; i < n; ++i){
    		if (pos >= v[i].r) continue;
    		if (pos <= v[i].l) {
    			int len = v[i].r - v[i].l;
    			int cur = (len + l - 1) / l;
    			pos = v[i].l + cur * l;
    			cnt += cur;
    		}
    		else{
    			int len = v[i].r - pos;
    			int cur = (len + l - 1) / l;
    			pos += cur * l;
    			cnt += cur;
    		}
    	}
    	cout << cnt << endl;
    	return 0;
    }
    


  • 相关阅读:
    浅谈最长上升子序列(LIS)
    浅谈树链剖分
    数字计数
    windy数
    骑士(树形dp)
    旅游规划
    皇宫看守
    k8s安装报错
    linux文件夹存储潜规则
    搭建覆盖率测试环境
  • 原文地址:https://www.cnblogs.com/kunsoft/p/5312673.html
Copyright © 2011-2022 走看看