UVALive 6606 Meeting Room Arrangement 【搜索】

题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4617

题目大意:现在有一个房间,租用的时间是1~12点,已知一些会议的开始时间和结束时间,问最多可以开多少会议(会议时间不可以冲突)。

对结束时间进行一个排序,然后查找即可。

#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
#define maxn 105

struct node {
    int s, e;
};

bool cmp(node x, node y){
    return x.e<y.e;
}

int main ()
{
    int T;
    scanf("%d",&T);
    node time[maxn];
    while(T--)
    {
        int pos=0,ans=0;
        while(1){
            scanf("%d%d",&time[pos].s,&time[pos].e);
            if(time[pos].s==0&&time[pos].e==0) break;
            pos++;
        }
        sort(time,time+pos,cmp);
        int ee = 0;
        for(int i=0;i<pos;i++){
            if(time[i].s>=ee){
                ans++;
                ee = time[i].e;
            }
        }
        printf("%d\n",ans);
    }
}

UVALive 6606 Meeting Room Arrangement 【搜索】

时间: 2024-10-08 01:17:39

UVALive 6606 Meeting Room Arrangement 【搜索】的相关文章

UVaLive 6609 Meeting Room Arrangement (贪心,区间不相交)

题意:给定 n 个区间,让你选出最多的区间,使得每个区间不相交. 析:贪心题,贪心策略是按右端点排序,然后按着选即可. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #

UVALive 6470 Chomp --记忆化搜索

题意:给一个只有三行的方块阵(横向最多100个),然后p,q,r分别代表第1,2,3层的方格数,两人轮流去掉一个格子,此时这个格子的右上方都会被去掉,面临只剩最左下角的一个格子的状态的人输,问先手能否赢,要赢得话应该取哪个方格. 解法:记忆化搜索,设dp[p][q][r]表示第1,2,3层方格数分别为p,q,r的输赢状态,0为输,1为赢,X[][][],Y[][][]分别表示其该取的方格坐标.每次求dp[p][q][r]时,枚举能达到的状态,如果这些状态的输赢值有一个为输,则此状态一定为赢,返回

UVALive 5966 Blade and Sword -- 搜索(中等题)

题意:给一幅地图,P为起点,D为终点,'*'为传送阵,到达传送阵可以传到任意一个其他的传送阵,传到以后可以正常走或者再传回来,问P->D最短步数. 分析:这题一定要细心,分析要到位才能搞定,错一点都WA.有两种思路: 1.走到一个传送点之后,将所有能传到的地方都加入队列,然后清除传送阵向量(vector),因为以后不用再互相传了,对于某个传送阵k,以后从别的点传到k的效果还不如从这个点传到k,所以清空传送阵,又因为其他传送阵可以传回来,此时传送阵向量要把当前传送阵push_back进去,以便其他

组队赛第六场:贪心+RMQ加二分

UVALive 6606 Meeting Room Arrangement COJ有这题,一模一样的,COJ应该是从这个OJ上拿的吧. 按右端点排序,然后从第一个开始贪心的取相邻的. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<queue> #include<set> #in

Codeforces 238E. Meeting Her 图论+记忆化搜索

大意: 有一个 n 个结点的有向图,边权均为 1.Urapl 想从 a 出发去 b.有 p 个公交车公司.在每 一秒的开始,第 i 个公司的公交车随机选择一条从 s i 到 t i 的最短路径然后走这条路径.如果 一个公交车经过 Urpal 所在的交叉点,则 Urpal 可以上这辆公交车,他可以在中途任意一个结 点下车. 在任何时刻 Urpal 只知道他自己的位置和约会地点.当他上了公交车时他只知道这辆公交 车属于第几个公司.当然 Urpal 知道城市地图和每个公司的 (s i , t i ).

UVALive 6168 Fat Ninjas --二分小数+搜索

题意:一个NxN的网格地板,有一些激光束从天花板垂直射向地面的某个网格,一个圆要安全地从左走到右,不碰到上边界,下边界以及激光束,问这个圆的直径最大能达到多大. 分析:可以二分直径,关键在check函数的写法.可以讲这个圆缩成一个点,把圆的直径转化为激光的扫描范围,当激光范围完全堵死一条通道的时候,这个直径则是不可行的.怎样判断是否堵死一条通道了呢.每次check(dis)的时候,枚举激光束对,如果激光束之间距离小于dis,那么它们两个之间建一条边.还要注意处理边界,如果激光束范围与上边界或下边

UVALive 6255 Kingdoms --状态搜索

题意:n个国家,给出国家间相互的债务关系,每个国家如果债务>收入就要破产,破产后该国的所有债务关系全部清除,第一个破产的国家不同有可能造成最后的没破产的国家的不同,问哪些国家有可能成为独自存活的国家. 解法:因为最多20个城市,破产与否的状态可用二进制数表示,破产为1,不破产为0,然后进行搜索,每一个dfs让一个国家破产,最后如果只剩下一个了,那么就将这个国家压入ans中. 代码: #include <iostream> #include <cstdio> #include

UVALive 3621 Power Calculus n次幂最少需要几次乘除得到 搜索

题目链接:点击打开链接 题意: 输入一个n(n<=1000) 问:有一个x,最少需要几次乘除可以算出x^n. 思路: 记忆化搜索 a[i] = j 表示i次幂需要j步得到 import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Iterato

UVALive 6432 Influence 搜索 剪枝大法好

有n个人,有k个人可以选作传播疾病的母体,和病人直接接触的未被感染者会被感染,求出选择k个人中的哪个可以取得最多的病人数目,有相同的取编号小的那个. 简单搜索,剪枝是如果一个同为母体的可以被其他母体直接或间接传染,这个母体就肯定不会是最多的那个,只会是一条分支. #include<cstring> #include<string> #include<fstream> #include<iostream> #include<iomanip> #in