随手练——HDU-2037 时间安排(贪心)

HDU-2037 :http://acm.hdu.edu.cn/showproblem.php?pid=2037

最基础的贪心题目,选取结束时间早的策略。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class time {
public:
    int t_s, t_e;
    time(int s,int e) {
        t_s = s;
        t_e = e;
    }
};
int cmp(time t1,time t2) {
    return t1.t_e < t2.t_e ? 1 : 0;
}
int main() {
    int N;
    while (cin >> N) {
        vector<time>v;
        if (N == 0)break;
        while (N--) {
            int t_s, t_e;
            cin >> t_s >> t_e;
            v.push_back(time(t_s, t_e));
        }
        sort(v.begin(), v.end(), cmp);

        vector<time>::iterator it = v.begin();
        it++;
        while (it != v.end()) {
            if (it->t_s < (it-1)->t_e) {
                it = v.erase(it);
            }
            else it++;
        }
        cout << v.size() << endl;
        v.clear();
    }
    return 0;
}

原文地址:https://www.cnblogs.com/czc1999/p/10356830.html

时间: 2024-09-28 16:36:29

随手练——HDU-2037 时间安排(贪心)的相关文章

随手练——HDU Safe Or Unsafe (小根堆解决哈夫曼问题)

HDU 2527 :http://acm.hdu.edu.cn/showproblem.php?pid=2527 哈夫曼树,学完就忘得差不多了,题目的意思都没看懂,有时间复习下,看了别人的才知道是怎么回事. 贪心的题目,当总代价(要求最少)是由子代价累加或累乘出来,就可以考虑用哈夫曼来贪心. 题意: 就是给你一个字符串如:12 helloworld 统计出其中 d:1个,e:1个,h:1个,l:3个,o:2个,r:1个,w:1个,然后用一个数组保存起来a[7]={1,1,1,1,1,2,3};然

随手练——HDU 1237 表达式求值(输入格式典型)

坑了老子半天,结果是 float 范围不够!!! 基本思想: 将当前符号与栈顶符号进行对比,如果当前符号优先级小于栈顶符号,数字栈弹出两个数进行栈顶符号运算,继续和当前栈顶符号比较,直到当前符号优先级大于栈顶符号,再将当前元素入栈. 符号栈初始放置一个'#',并规定 '#',优先级低于任何符号. 表达式求值是老问题了,但是之前做的也不太完善,很多小地方还是没注意到,WA了好几次. 1. 终止条件,if (s.length() == 1 && s[0] == '0') break; 否则0+

随手练——HDU 1251 统计难题

知识点:前缀树 典型的前缀树模板. 这个版本要注意的是编译器选择C++可以AC,用G++就超内存了. #include <iostream> #include <malloc.h> #include <string> using namespace std; typedef struct node{ int pass; struct node* next[26]; } *trieTree; trieTree init() { trieTree t = (trieTree

hdu 2037简单贪心--活动安排问题

活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动能兼容地使用公共资源 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源.每个活动i都有 一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi .如果选择了活动i,则它在半开时间区间[si, fi)内占用资源

HDU 2037 今年暑假不AC (贪心)

HDU 2037 今年暑假不AC (贪心) 题目: http://acm.hdu.edu.cn/showproblem.php?pid=2037 非常经典的活动安排问题变形, 与算法教材的活动安排一样,根据结束时间进行排序,然后相容的累加即可. // 经典贪心问题 活动时间安排的简单变形 // 按活动结束时间,递增排序, 结束时间早的,优先选择 #include <bits/stdc++.h> using namespace std; typedef struct active { int s

hdu 2037 贪心

今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 27361    Accepted Submission(s): 14439 Problem Description "今年暑假不AC?" "是的." "那你干什么呢?" "看世界杯呀,笨蛋!" &quo

随手练——数独 HDU - 5547 坑!坑!坑!

题目链接:HDU-5547 http://acm.hdu.edu.cn/showproblem.php?pid=5547 解题思想:随手练-- 数独 POJ - 2676 (回溯法+DFS) HDU 的这题实在是太坑了,M 数组开成 int 就过不了,改成 char 就过了.对着别人AC的代码,一点点试,到最后才试出来,数组的问题,但是不能理解啊,什么鬼,这也错?? 然后发现题目描述里有一句:Each test case starts with an empty line followed by

Hdu 2037 今年暑假不AC

今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 27586    Accepted Submission(s): 14578 Problem Description “今年暑假不AC?”“是的.”“那你干什么呢?”“看世界杯呀,笨蛋!”“@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也

[2016-02-04][HDU][2037][今年暑假不AC]

[2016-02-04][HDU][2037][今年暑假不AC] 今年暑假不AC Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status Description "今年暑假不AC?" "是的." "那你干什么呢?" "看世界杯呀,笨蛋!" "@#$%^&*%..." 确实如此,

hdu 4864 Task (贪心)

# include <stdio.h> # include <algorithm> # include <string.h> using namespace std; struct node { int t; int v; int yy; }; struct node a[100010],b[100010]; bool cmp(node a1,node a2) { if(a1.t==a2.t)//先按时间从大到小 return a1.v>a2.v;//再按水平从大