当前位置: 首页 > news >正文

HDU 3262 Seat taking up is tough (模拟搜索)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3262


题意:教室有n*m个座位,每个座位有一个舒适值,有K个学生在不同时间段进来,要占t个座位,必须是连续的并且自己坐在最左边,如果有多个的话,找最舒适的座位,如果没有连续t个,那么只给自己找个最舒适的位子,如果都满的话,输出-1.

题解:一个简单的搜索模拟,注意的是,要排序每个同学进来的时间,而且输出要按照给的顺序输出,被坑了几次,样例数据太弱了。


AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <list>
#include <deque>
#include <queue>
#include <iterator>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <cctype>
using namespace std;

#define si1(a) scanf("%d",&a)
#define si2(a,b) scanf("%d%d",&a,&b)
#define sd1(a) scanf("%lf",&a)
#define sd2(a,b) scanf("%lf%lf",&a,&b)
#define ss1(s)  scanf("%s",s)
#define pi1(a)    printf("%d\n",a)
#define pi2(a,b)  printf("%d %d\n",a,b)
#define mset(a,b)   memset(a,b,sizeof(a))
#define forb(i,a,b)   for(int i=a;i<b;i++)
#define ford(i,a,b)   for(int i=a;i<=b;i++)

typedef long long LL;
const int N=33;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
const double eps=1e-8;

int n,m,k;
int xh[N][N];

struct xkn
{
    int time,ren;
    int i;
}p[55];

struct jilu
{
    int x,y;
}o[55];

bool cmp(xkn a,xkn b)
{
    return a.time<b.time;
}

bool yes(int i,int j,int ren)
{
    for(int k=0;k<ren;k++)
        if(xh[i][j+k]==-1)
            return false;
    return true;
}

void xiaohao(int ren,int t)
{
    int flag1=-1,flag2=-1;
    int Max1,Max2;
    int x,y;
    for(int i=0;i<n;i++)
        for(int j=0;j<=m-ren;j++)
        {
            if(yes(i,j,ren))
            {
                if(flag1==-1)
                {
                    flag1=1;
                    Max1=xh[i][j];
                    x=i;    y=j;
                }
                else if(Max1<xh[i][j])
                {
                    Max1=xh[i][j];
                    x=i;    y=j;
                }
            }
        }
    if(flag1!=-1)
    {
        //pi2(x+1,y+1);
        o[t].x=x+1; o[t].y=y+1;
        for(int k=0;k<ren;k++)
            xh[x][y+k]=-1;
        return ;
    }

    forb(i,0,n)
        forb(j,0,m)
        {
            if(xh[i][j]!=-1)
            {
                if(flag2==-1)
                {
                    flag2=1;
                    Max2=xh[i][j];
                    x=i;    y=j;
                }
                else if(Max2<xh[i][j])
                {
                    Max2=xh[i][j];
                    x=i;    y=j;
                }
            }
        }
    if(flag2!=-1)
    {
        //pi2(x+1,y+1);
        o[t].x=x+1; o[t].y=y+1;
        xh[x][y]=-1;
        return ;
    }
    o[t].x=-1; o[t].y=-1;
}

int main()
{
//    freopen("input.txt","r",stdin);
    while(scanf("%d%d%d",&n,&m,&k)&&(n+m+k))
    {
        forb(i,0,n) forb(j,0,m) si1(xh[i][j]);
        forb(i,0,k)
        {
            int a,b;
            scanf("%d:%d %d",&a,&b,&p[i].ren);
            p[i].time=a*60+b;
            p[i].i=i;
        }
        sort(p,p+k,cmp);
        forb(i,0,k)
        {
            xiaohao(p[i].ren,p[i].i);
        }
        forb(i,0,k)//必须按照开始的顺序输出
        {
            if(o[i].x==-1)
                puts("-1");
            else
                pi2(o[i].x,o[i].y);
        }
    }
    return 0;
}


相关文章:

  • 2014各大网络公司校招笔试算法题(收集并更新中)
  • erlang mnesia 数据库查询
  • HDU 3264 Open-air shopping malls (计算几何-圆相交面积)
  • 2014Microsoft 校招笔试真题(找工作的虾米们赶紧做题晒答案喽)
  • 黑马程序员_IO流基本操作(Writer,Reader)
  • aptana 插件离线下载方式
  • Eclipse安装aptana 插件的方法
  • VC写的双人版俄罗斯方块
  • 2014百度校招笔试题之动态链接库静态链接库详解
  • centos 安装与操作
  • win7 防火墙开启ping
  • 人人网2014笔试算法题汇总
  • 暴风影音2014笔试算法题汇总
  • 华为2014笔试算法题汇总
  • 百度2014笔试算法题汇总
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Angular 响应式表单之下拉框
  • es6(二):字符串的扩展
  • Golang-长连接-状态推送
  • Python十分钟制作属于你自己的个性logo
  • react-native 安卓真机环境搭建
  • springboot_database项目介绍
  • SwizzleMethod 黑魔法
  • uni-app项目数字滚动
  • Vue 重置组件到初始状态
  • Wamp集成环境 添加PHP的新版本
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 目录与文件属性:编写ls
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 《码出高效》学习笔记与书中错误记录
  • gunicorn工作原理
  • #QT(串口助手-界面)
  • #WEB前端(HTML属性)
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十) 初识 Docker file
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [C++]运行时,如何确保一个对象是只读的
  • [CSS3备忘] transform animation 等
  • [G-CS-MR.PS02] 機巧之形2: Ruler Circle