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 ...
随机推荐
- 基于telegraf+influxdb+grafana进行postgresql数据库监控
前言 随着公司postgresql数据库被广泛应用,尤其是最近多个项目在做性能测试的时候都是基于postgresql的数据库,为了确定性能瓶颈是否会出现在数据库中,数据库监控也被我推上了日程.在网上找 ...
- 视觉SLAM的方案总结
MoNoSLAM:https://github.com/hanmekim/SceneLib2 以扩展卡尔曼滤波为后端,追踪前端非常稀疏的特征点,以相机的当前状态和所有路标点为状态量,更新其均值和协方差 ...
- 图解JQUERY尺寸及位置定义
最近在学习JQUERY的一些应用,接触到了JQUERY对于元素尺寸及位置定义,还有就是配合浏览器尺 寸及状态的计算所做出的一些动画特效.其实像这类JQUERY应用无外乎涉及这些属性的调用:innerH ...
- 6、投资的一些思考 - CEO之公司管理经验谈
对于投资,前面笔者写过一个文:IT人经济思维之投资 - 创业与投资系列文章 ,里面列举了笔者自己做过的投资方面的内容.今天就说说公司投资的一些思考问题. 公司投资的问题,笔者还是那句话:关键是找出适合 ...
- C# 多线程传递多个参数
http://www.cnblogs.com/lvdongjie/p/5416883.html 3. 方式三:采用lambda表达式 对于lambda表达式不熟悉的可以查看微软MSDN上的说明文档.此 ...
- 笔记-NSArray 逆序reverseObjectEnumerator 及 NSEnumerator 遍历
//1.原始数组 NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"2",@&qu ...
- Fiddler工具的界面说明
1.Fiddler界面说明 2.session的模块说明 包含部分如下: 注:标蓝色区域的内容为平时较常用的部分 3.session不同图标和不同颜色的含义 默认颜色的含义如下: 部分图标的含义如下: ...
- Celery(四)定时任务
要定时或者周期性的执行任务,可以使用linux的crontab.Celery也提供了类似的Periodic Tasks功能. Celery beat Celery使用celery beat作为任务调度 ...
- Jerry的碎碎念:SAPUI5, Angular, React和Vue
去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...
- ConcurrentHashMap源码阅读
1. 前言 HashMap是非线程安全的,在多线程访问时没有同步机制,并发场景下put操作可能导致同一数组下的链表形成闭环,get时候出现死循环,导致CPU利用率接近100%. HashTable是线 ...