Description

Students often have problems taking up seats. When two students want the same seat, a quarrel will probably begin. 

It will have very bad effect when such subjects occur on the BBS. 
So, we urgently need a seat-taking-up rule. After several days of argument, the rule finally comes out: 
As shown in the figure below, the seats in a classroom form a n×m grid( n rows and m columns), and every cell in the grid represents a seat. The coordinates of the seat in the north-west corner are (1,1) and the coordinates of the seat in the south-east corner seat are (n,m). As you know, some seats make you feel good and some seats don’t. So every seat has a “feeling index”. 

Students can take up seats for himself and his friends. Of course, if a seat is already taken up by a student, it can’t be taken up by others. 
For the convenience of communication between friends, when a student is trying to take up seats, he wants all the seats he needs to be consecutive and in the same row. If he can do that, he takes up all the seats he needs, and save the most western one for himself. For example, if a student wants to take up 3 seats, then taking (2,2),(2,3),(2,4) and saving (2,2) for himself is ok; but taking (2,2),(2,4),(2,5) is invalid because those seats are not consecutive. Under the precondition of accomplishing his seat-taking job, a student always wants the “feeling index” of his seat to be as large as possible. 
However, if a student cannot take up all the seats he needs, he will just try to take up only one seat for himself because he doesn’t want to get into the trouble of explaining “Why they can get seats but I can’t?” to some of his friends. Of course he still wants the “feeling index” of his seat to be as large as possible in that situation. 
Everyone wants to know where are the seats he can take up .This problem seems a little bit complicated for them. So they want you to write a program to solve the problem. 
 

Input

There are several test cases and the input ended by a line of “0 0 0”. 
For each test case: 
The first line contains three integers: n , m and k ( 1 <= n,m<=30, 1<=k<=50). It means that there are n rows of seats in the classroom and there are m seats in every row. k is the number of students who come into the classroom trying to take up seats. 
Following are n lines describing the seats by north to south order .Each line represents a row of seats and contains m integers, indicating the “feeling index” of every seat in that row, by west to east order. “Feeling index” can be fit in a 32-bit integer. 
Then k lines follow (We call them k “student lines”). Each line is in the format of “hh:mm q” ( 0 <= hh < 24, 0 <=mm <= 59, 1<=q<=50 ) meaning that a student comes into the classroom at mm minutes past hh o’clock, trying to take up q seats. mm and hh are all two digit integers with possible leading zero, and q is also an integer. Please note that when a student enters the class room, he begins to do his seat taking job immediately and the job takes no time. 
It is guaranteed that the “feeling index” of every seat is different and no students come into the classroom at the same time. 
 

Output

You should output k lines for each test case, in the order that correspondent to the above mentioned k “student lines” in the input. Each line must contain two integers indicating the coordinates of the seat which is saved by the student for himself. If the student can’t take up any seats, just output a “-1” instead.
 

Sample Input

5 5 8
11 12 15 14 13
21 22 25 24 23
16 17 20 19 18
6 7 10 8 9
1 2 5 4 3
09:00 2
09:01 5
09:02 5
09:03 5
09:04 5
09:05 3
09:06 2
09:07 3
0 0 0
 

Sample Output

2 3
3 1
1 1
4 1
5 1
2 5
2 1
-1
 
题意:占座,每个同学有两种占座方案 1 占在同一行,自己坐在最西边 2 只占自己的 
优先给同学占座,分别在这两种情况下使自己舒适值最高
这是io07熊的代码
 
 
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <algorithm> using namespace std; const int maxn=40;
const int maxq=60; int graph[maxn][maxn];
bool flag[maxn][maxn];
int n,m,k; struct quest
{
int time,num,q;
int x,y;
} P[maxq]; bool cmp1(quest A,quest B)
{
return A.time<B.time;
}
bool cmp2(quest A,quest B)
{
return A.num<B.num;
} void solve(quest &kk)
{
int ax,ay,sx,sy,cnt;
ax=ay=sx=sy=-1;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(flag[i][j]) continue;
cnt=0;
if((ax==-1&&ay==-1)||(graph[i][j]>graph[ax][ay])){
ax=i; ay=j;
}
for(int k=j;k<m;k++){
if(flag[i][k]) break;
else cnt++;
}
if(cnt>=kk.q){
if((sx==-1&&sy==-1)||(graph[i][j]>graph[sx][sy])){
sx=i; sy=j;
}
}
}
}
if(sx==-1&&sy==-1){
kk.x=ax;
kk.y=ay;
if(kk.x!=-1) flag[kk.x][kk.y]=1;
}
else{
kk.x=sx;
kk.y=sy;
for(int i=0;i<kk.q;i++) flag[kk.x][kk.y+i]=1;
}
} int main()
{
char cc[20];
int tt,num1,num2,ll;
while(scanf("%d%d%d",&n,&m,&k),n!=0||m!=0||k!=0){
for(int i=0;i<n;i++) for(int j=0;j<m;j++) scanf("%d",&graph[i][j]);
memset(flag,0,sizeof(flag));
for(int i=0;i<k;i++){
scanf("%s %d",cc,&tt);
P[i].num=i;
P[i].q=tt;
ll=strlen(cc);
if(cc[2]==':'){
num1=((cc[0]-'0')*10+(cc[1]-'0'))*60;
if(ll-3>=2) num2=(cc[3]-'0')*10+(cc[4]-'0');
else num2=cc[3]-'0';
}
else{
num1=(cc[0]-'0')*60;
if(ll-2>=2) num2=(cc[2]-'0')*10+(cc[3]-'0');
else num2=cc[2]-'0';
}
P[i].time=num1+num2;
}
sort(P,P+k,cmp1);
for(int i=0;i<k;i++) solve(P[i]);
sort(P,P+k,cmp2);
for(int i=0;i<k;i++){
if(P[i].x==-1) printf("-1\n");
else printf("%d %d\n",P[i].x+1,P[i].y+1);
}
}
return 0;
}

  

hdu 3262 09 宁波 现场 C - Seat taking up is tough 暴力 难度:0的更多相关文章

  1. hdu 3264 09 宁波 现场 E - Open-air shopping malls 计算几何 二分 圆相交面积 难度:1

    Description The city of M is a famous shopping city and its open-air shopping malls are extremely at ...

  2. hdu 3268 09 宁波 现场 I - Columbus’s bargain 读题 最短路 难度:1

    Description On the evening of 3 August 1492, Christopher Columbus departed from Palos de la Frontera ...

  3. hdu 3695 10 福州 现场 F - Computer Virus on Planet Pandora 暴力 ac自动机 难度:1

    F - Computer Virus on Planet Pandora Time Limit:2000MS     Memory Limit:128000KB     64bit IO Format ...

  4. hdu 3689 杭州 10 现场 J - Infinite monkey theorem 概率dp kmp 难度:1

    J - Infinite monkey theorem Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d &am ...

  5. hdu 3699 10 福州 现场 J - A hard Aoshu Problem 暴力 难度:0

    Description Math Olympiad is called “Aoshu” in China. Aoshu is very popular in elementary schools. N ...

  6. hdu 4771 13 杭州 现场 B - Stealing Harry Potter's Precious 暴力bfs 难度:0

    Description Harry Potter has some precious. For example, his invisible robe, his wand and his owl. W ...

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

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

  8. 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 ...

  9. hdu 5078 2014鞍山现场赛 水题

    http://acm.hdu.edu.cn/showproblem.php?pid=5078 现场最水的一道题 连排序都不用,由于说了ti<ti+1 //#pragma comment(link ...

随机推荐

  1. [SQL] 让特定的数据 排在最前

    MYSQL目前常用的两种方法,如下: 让值为"张三" 的数据排在最前. -- 方法一 end asc -- 方法二 select * from tableName where co ...

  2. 【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?

    loadrunner录制脚本时候有事件但是一直白页怎么办? 解决办法:依次进行下方1.2.方法操作,如果还不行再进行3的操作. 1.勾选下图IE浏览器的Internet选项中“启用第三方浏览器拓展*” ...

  3. T-SQL练习题

    转自:http://www.cnblogs.com/jenrrychen/p/5348546.html 1 - 3 题: 数据表结构: OrderID ProductID OrderDate  Sal ...

  4. mysql 数据操作 单表查询 having 过滤 练习

    1. 查询各岗位内包含的员工个数小于2的岗位名.岗位内包含员工名字.个数 mysql> select post,group_concat(name),count(id) from employe ...

  5. 【开发者笔记】C#连接mysql问题记录

    1.概述:C#在调用mysql.data.dll连接本地数据库时报错,连接远程Linux服务器上的mysql服务器正常 2.报错记录,当前连接字符串 <add key="dbStrin ...

  6. log4j2介绍及配置

    一.log4j2概述 在日常的开发,测试和生产环境中,日志记录了应用,服务运行过程中的关键信息,以及出现异常时的堆栈,这些信息常常作为查询,定位,解决问题的关键,因此在任何系统中,对日志的使用得当,将 ...

  7. 解决maven的依赖总是无法下载完成

    有时候在eclipse里面刚刚导进一个maven项目,但是总是无法完整下载pom文件里面的依赖 主要有两个原因: 1,需要下载的依赖(jar包)需要开发人员给权限(远程仓库的下载权限),这个可以找开发 ...

  8. What do you think the coming adidas NMD Singapore

    adidas NMD Singapore is surprising everybody with a lot of completely new NMD choices combined with ...

  9. c#将十进制转64进制

    //由于用于文件命名,所以将64位中的+转换为=,/转换为_     static char[] digits = {          '0' , '1' , '2' , '3' , '4' , ' ...

  10. idea中使用插件Grep Console在IDEA的log的不同的级别,可以设置不同的颜色。

    一.安装. 1. 2. 3. 二,使用. 1. 2.