POJ 3829 Seat taking up is tough(——只是题目很长的模拟)
题目链接:
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(——只是题目很长的模拟)的更多相关文章
- 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 ...
- 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 ...
- HDU 3262 Seat taking up is tough (模拟搜索)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3262 题意:教室有n*m个座位,每个座位有一个舒适值,有K个学生在不同时间段进来,要占t个座位,必须是连 ...
- POJ 1743 Musical Theme (后缀数组,求最长不重叠重复子串)(转)
永恒的大牛,kuangbin,膜拜一下,Orz 链接:http://www.cnblogs.com/kuangbin/archive/2013/04/23/3039313.html Musical T ...
- POJ 3261 Milk Patterns 可重复k次的最长重复子串
Milk PatternsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3261 Description ...
- poj 1743 男人八题之后缀数组求最长不可重叠最长重复子串
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14874 Accepted: 5118 De ...
- POJ 3654 & ZOJ 2936 & HDU 2723 Electronic Document Security(模拟)
题目链接: PKU:http://poj.org/problem?id=3654 ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...
- POJ 2253 ——Frogger——————【最短路、Dijkstra、最长边最小化】
Frogger Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- Poj 1743——Musical Theme——————【后缀数组,求最长不重叠重复子串长度】
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 22499 Accepted: 7679 De ...
随机推荐
- .net 委托的使用方法以及使用委托的好处
使用方法: //无返回值无参数委托的定义方法 public delegate void NoReturnPara(); 给委托赋值的几种方式 //实例化委托,并传入方法 NoReturbNoPara ...
- C# (类型、对象、线程栈和托管堆)在运行时的相互关系
在介绍运行时的关系之前,先从一些计算机基础只是入手,如下图: 该图展示了已加载CLR的一个windows进程,该进程可能有多个线程,线程创建时会分配到1MB的栈空间.栈空间用于向方法传递实参,方法定义 ...
- Tomcat在windows系统中的防火墙设置
在Win7下安装Tomcat后,其他机器无法访问到Tomcat服务,需要修改防火墙设置. 控制面板->window防火墙->允许程序通过Windows防火墙通信 将Tomcat目录下\bi ...
- Node.js 蚕食计划(二)—— 使用 http 模块搭建 Web 服务器
Node.js 开发的目的就是为了用 JavaScript 编写 Web 服务器程序 这次就来介绍用 http 模块搭建服务器 一.项目构建 每个 Node 程序都可以看作一个模块,而每个模块都应该有 ...
- CSS中的url()到底要不要加引号
如:url(images/background.gif)和 url("images/background.gif") 从安全角度来讲是要加上的 否则容易被xss 因为"& ...
- CSS Sprites使用
CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢 ...
- Hibernate学习笔记(3)---hibernate关联关系映射
一对一关联 假设有两个持久化类(实体类)User与Address,它们之间存在一对一的关系 1,通过主键关联(个人偏向另外一种) User.hbm.xml文件配置 <id name=" ...
- vue2.0 路由模式mode="history"的作用
特别提醒:开启mode="history"模式,需要服务端的支持,因为出现"刷新页面报错404"的问题: 备注:微信分享:vue项目路由带"#&quo ...
- Python2和Python3中的字符串编码问题解决
Python2和Python3在字符串编码上是有明显的区别. 在Python2中,字符串无法完全地支持国际字符集和Unicode编码.为了解决这种限制,Python2对Unicode数据使用了单独的字 ...
- file上传图片获取路径地址
file上传图片获取路径地址 类似:点击button,选择图片,在对应的输入框input里面显示图片路径地址 类似这样 原理:通过opacity来隐藏原生的input file 然后用.file-bt ...