题目链接:

http://poj.org/problem?id=3829

题意描述:

输入矩阵的大小n和m,以及来占位置的人数k

输入n*m的教室座位矩阵,每个值表示该座位的满意度

输入每个人来占位置的时间和需要几个位置h,m,q

计算并输出每个来占位置的人根据占位规则得到的坐标zx,zy,若一个位置都没有了,输出-1。

规则:

首先看有没有在同一行上的连续的k个座位,有则这个占位的同学坐在这连续k个座位的最左边,如果有多行上都存在连续的k个位置,则该占位的同学会选择最左边值最大的位置(坑点就在这,不是k个位置

的和最大),如果不存在在同一行上的连续的k个位置,则只需在现有的空位上挑一个满意度最大的给自己坐就行了,如果一个位置都没有了,就输出-1。

另外题目需要按照提问的顺序给出答案,也就是说给的时间可能使乱序的,但是最后输出结果的时候要按照提问顺序输出答案。

AC代码:

 #include<stdio.h>
#include<algorithm>
using namespace std;
int inf=;
int a[][];
struct T
{
int z,h,m,q,zx,zy,f; //z表示提问顺序,最后按该值排序
}; //f表示该占位同学能否找到一个位置
struct T t[];
int cmp(struct T a,struct T b)
{ //先按照小时排,再按分钟排
if(a.h<b.h)
return ;
else if(a.h==b.h)
{
if(a.m<b.m)
return ;
else
return ;
}
return ;
}
int cmp1(struct T a,struct T b)
{
return a.z<b.z;
}
int main()
{
int i,j,k,l,m,n,b[],qq;
long long max;
while(scanf("%d%d%d",&n,&m,&qq), n+m+qq != )
{
for(i=;i<=n;i++)
for(j=;j<=m;j++)
scanf("%d",&a[i][j]);
for(j=;j<=n;j++) //表示该行还有几个座位
b[j]=m;
for(i=;i<=qq;i++)
{
t[i].f=;
t[i].z=i;
scanf("%d:%d%d",&t[i].h,&t[i].m,&t[i].q);
}
sort(t+,t+qq+,cmp);
/*for(i=1;i<=qq;i++)
printf("%d %d %d\n",t[i].h,t[i].m,t[i].q);*/
for(l=;l<=qq;l++)
{
max=-inf;
int x;int y;
long long sum;
int s=;
for(i=;i<=n;i++)
if(b[i]==) s++;
if(s==n)
{
t[l].f=;
continue;
}
for(i=;i<=n;i++)
{
sum=;
if(b[i]>=t[l].q)
{
for(j=;j<=m-t[l].q+;j++)
{
sum=a[i][j];
for(k=j;k<j+t[l].q;k++)
if(a[i][k]==-inf) break;
if(k==j+t[l].q&&max<sum)
{
max=sum;
x=i;y=j;
}
}
}
}
if(max==-inf)
{
int mx1=-inf;
for(i=;i<=n;i++)
{
for(j=;j<=m;j++)
{
if(mx1<a[i][j])
{
mx1=a[i][j];
x=i;y=j;
}
}
}
b[x]--;
a[x][y]=-inf;
}
else
{
b[x]-=t[l].q;
for(j=y;j<y+t[l].q;j++)
a[x][j]=-inf;
}
t[l].f=;
t[l].zx=x;
t[l].zy=y;
}
sort(t+,t+qq+,cmp1);
for(i=;i<=qq;i++)
{
if(t[i].f)
printf("%d %d\n",t[i].zx,t[i].zy);
else
printf("-1\n");
}
}
return ;
}

POJ 3829 Seat taking up is tough(——只是题目很长的模拟)的更多相关文章

  1. HDU 3262/POJ 3829 Seat taking up is tough(模拟+搜索)(2009 Asia Ningbo Regional)

    Description Students often have problems taking up seats. When two students want the same seat, a qu ...

  2. hdu 3262 09 宁波 现场 C - Seat taking up is tough 暴力 难度:0

    Description Students often have problems taking up seats. When two students want the same seat, a qu ...

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

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3262 题意:教室有n*m个座位,每个座位有一个舒适值,有K个学生在不同时间段进来,要占t个座位,必须是连 ...

  4. POJ 1743 Musical Theme (后缀数组,求最长不重叠重复子串)(转)

    永恒的大牛,kuangbin,膜拜一下,Orz 链接:http://www.cnblogs.com/kuangbin/archive/2013/04/23/3039313.html Musical T ...

  5. POJ 3261 Milk Patterns 可重复k次的最长重复子串

    Milk PatternsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3261 Description ...

  6. poj 1743 男人八题之后缀数组求最长不可重叠最长重复子串

    Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 14874   Accepted: 5118 De ...

  7. POJ 3654 &amp; ZOJ 2936 &amp; HDU 2723 Electronic Document Security(模拟)

    题目链接: PKU:http://poj.org/problem?id=3654 ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...

  8. POJ 2253 ——Frogger——————【最短路、Dijkstra、最长边最小化】

    Frogger Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  9. Poj 1743——Musical Theme——————【后缀数组,求最长不重叠重复子串长度】

    Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 22499   Accepted: 7679 De ...

随机推荐

  1. 关于table布局的推荐使用原因

    一.关于table布局的性能 1.table标签比其他html标签占用更多字节,导致下载时间延迟,占用服务器更多的流量资源: 2.table会阻碍浏览器渲染引擎的渲染顺序,导致页面生成的延迟,造成不良 ...

  2. lesson - 7 课程笔记 vim

    vim :修改文件 模式: 默认进来是一般模式.i 编辑模式.esc 退出编辑 .shift+: 底行模式 参数: w: write/q:quit/! force 编辑模式:  /a:光标之后插入内容 ...

  3. Parallels Desktop 12

    我微新solq123987654 备注:PD 科普:PD12有什么用,PD是让mac系统可以运行wind系统的软件,如果你不习惯mac os 或工作需要那PD绝对是个好软件正版要七八百授权,只要十五就 ...

  4. K:常见的正则表达式

    @装载自:http://zxin.cnblogs.com/ 平时对字符串进行校验和处理的时候难免会用到正则表达式,通常采用的方式是去网上寻找相关的正则表达式,之后copy下来进行修改,以使其满足自己的 ...

  5. 在vim中使用zencoding/Emmet

    zencoding在vim上的插件已经改名为Emmet.vim 1. 安装,推荐使用vundle插件管理器安装,在~/.vimrc中,添加:Bundle 'Emmet.vim',输入命令vim +Bu ...

  6. Head First设计模式之工厂模式

    一.定义 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类 二.结构 1.抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的 ...

  7. 从开源项目看python代码注释

    最近看了不少代码,也写了不少代码,所以在看和写之间发现了很多的问题,真的是很多,至少从我的认识来看,有几个地方有很大的改进空间,这里不准备把所有的问题都列举出来,所以就先挑选一个比较明显得来和大家聊聊 ...

  8. sqlalchemy 踩过的坑

    记录下Sqlalchemy遇到的问题,不定时更新. 设置主键为非自增 sqlalchemy 在sql server中默认主键是自增的,如果在数据库设置的主键不是自增的,这个时候插入就会出现异常: 提示 ...

  9. windows 配置接收报文是否中断

    作用:网络编程的时候,编程接收报文,可以不用循环等待并判断是否报文接收完整.配置了windows禁用网络中端后,自己写的程序一次接收,便是整条报文. 步骤: 1."打开网络和共享中心&quo ...

  10. webapi框架搭建-日志管理log4net

    前言 本篇讲怎么在前几篇已经创建好的项目里加上日志处理机制,我们采用Log4net技术.跟多的log4net技术的细节请查阅log4net的官网. log4net官网:http://logging.a ...