Hungry Rabbit
Problem C. Hungry Rabbit
Input file: hungry.in
Output file: hungry.out
Time limit: 10 seconds
Memory limit: 512 megabytes
可怕的洪水在夏天不期而至,兔子王国遭遇了前所未有的饥荒,它们不得不去外面的森林里寻找食物。
为了简化起见,我们假设兔子王国中有 n 只兔子,编号为 1 − n。在救济粮到来之前的 m 天中,每天恰好有 k 只兔子需要去森林里寻找粮食。森林里居住着可怕的大灰狼,所幸兔子已经摸清了大灰狼捕食习惯,即狼们在每一天只会捕食特定编号的兔子。为了安全起见,兔子们需要保证每次出去觅食的 k 只兔子都不会被狼捕食。
由于每天出去捕食的兔子都不尽相同,它们为每一天定义了一个生疏度 pi ,即第 i 天出来寻找食物,但是第 i − 1天却没有出来觅食的兔子个数。规定第1天的生疏度为 0.
现在兔子们希望在保证安全的前提下,每天的生疏度不能超过l,请为兔子们构造一个合法的方案。
Input
第一行包括四个整数 n, m, k 和l.
接下来n行,每行一个长度为m的01串。其中第i 行第j 个字符若为0,则表示狼在第j 天会捕食编号为 i 的兔子,为 1则表示不捕食。
Output
m 行,每行 k 个 1 − n 之间互不相同的整数,代表这一天出去寻找食物的兔子编号。如果没有合法方案,则输出一行−1即可。
Sample input.
5 4 3 1
1001
1101
1111
1110
0111
Sample output.
2 3 4
2 3 4
3 4 5
2 3 5
对于样例,在这4天中,出去觅食的兔子集合分别为 {2, 3, 4}, {2, 3, 4}, {3, 4, 5}, {2, 3, 5}.
• 对于 20%的测试数据,1 ≤ n,m ≤ 10
• 对于 100% 的测试数据,1 ≤ n,m ≤ 800, 1 ≤ k ≤ n, 1 ≤ l ≤ k
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=;
int n,m,k,l;
int maxl[N][N],id[N];
bool flag[N][N];
int day;
inline bool cmp(const int &a, const int &b) {
return maxl[a][day]>maxl[b][day];
}
int main() {
// freopen("hungry.in", "r", stdin);
// freopen("hungry.out", "w", stdout);
scanf("%d%d%d%d",&n,&m,&k,&l);
for(int i=;i<=n;i++) {
char s[N];
scanf("%s",s+);
for(int j=m;j;j--)
if(s[j]=='')
maxl[i][j]=;
else
maxl[i][j]=maxl[i][j+]+;
id[i]=i;
}
day=;
sort(id+,id+n+,cmp);
for(int i=;i<=k;i++)
flag[day][id[i]]=;
for(int i=;i<=m;i++){
for(int j=;j<=n;j++)
flag[i][j]=flag[i-][j];
day=i;
sort(id+,id+n+,cmp);
int s=,t=n;
for(int j=;j<=l;j++) {
while(s<=n&&flag[i][id[s]])
s++;
while(t&&!flag[i][id[t]])
t--;
if(s>=t)
break;
flag[i][id[s]]=;
flag[i][id[t]]=;
}
for(int j=;j<=n;j++)
if(flag[i][j]&&!maxl[j][i]) {
printf("-1");
return ;
}
}
for(int i=;i<=m;i++,printf("\n"))
for(int j=;j<=n;j++)
if(flag[i][j])
printf("%d ",j);
return ;
}
Hungry Rabbit的更多相关文章
- 【BZOJ 3661】 Hungry Rabbit (贪心、优先队列)
3661: Hungry Rabbit Time Limit: 100 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 67 Solved: 4 ...
- 【BZOJ3661】Hungry Rabbit 贪心
[BZOJ3661]Hungry Rabbit Description 可怕的洪水在夏天不期而至,兔子王国遭遇了前所未有的饥荒,它们不得不去外面的森林里寻找食物.为了简化起见,我们假设兔子王国中有n只 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc
不久前发布了一篇博文".NET轻量级RPC框架:Rabbit.Rpc",当初只实现了非常简单的功能,也罗列了之后的计划,经过几天的不断努力又为Rabbit.Rpc增加了一大波新特性 ...
- hdu----(1849)Rabbit and Grass(简单的尼姆博弈)
Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- .NET轻量级RPC框架:Rabbit.Rpc
最近准备写一个.NET的管理平台应用在公司,由于存在大量的Client => Server,Server => Client的请求需求在加上之前一直接触了解过RpcClient组件的开发, ...
- 古典问题rabbit
/**古典问题: * 有一对兔子,从出生后第三个月起每个月都生一对兔子, * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死, * 问每个月的兔子总数为多少? * 程序分析:兔子的规律为数列: ...
- Error: unable to connect to node rabbit@mail: nodedown
某天,开启一个应用时,发现连接rabbitmq失败,本来想用rabbitmqctl来查看队列,结果提示“Error: unable to connect to node rabbit@mail: no ...
随机推荐
- 下载安装配置与使用MySQL-5.7.12-winx64.zip
第一步:下载安装包 下载 地址:http://www.mysql.com/ 第二步:解压下载包 下载好后解压文件,把内容解压到想要的位置,本例解压到“D:\Program Files\mysql-5. ...
- Powershell Get Domain User的几种方法
一.Get-User单用户查询 $User=Get-ADUser -identity wendy -Properties * 二.Get-User多用户循环查询 $export=@() $Users= ...
- Django Signal 代码布局
需要确保信号注册函数在使用前就被引入,所以理论上你可以将其置于满足上述条件的任意位置. 官方推荐 将信号处理器定义在关联 app 目录下的 signals.py 中,在关联 app 的 apps.Ap ...
- jd算法大赛 一个user_id只需映射到一个sku_id, 但是一个sku_id能否映射到多个user_id
0-购买预测 w 任务目标 提交user_id-->sku_id (1->1,但反向呢?) 实际操作: 0- 行为表中的type值加权为一个购买意向值0(性别.年龄,不干扰/或加权) 品类 ...
- transaction 数据库事务 roolback 回滚
事务是恢复和并发控制的基本单位 https://baike.baidu.com/item/数据库事务/9744607 事务有三种模型: 1.隐式事务是指每一条数据操作语句都自动地成为一个事务,事务的开 ...
- windows python easy_install ,pip. selenium
http://www.cnblogs.com/fnng/p/3157639.html 搭建平台windows 准备工具如下: unknown encoding: cp65001异常 python安装后 ...
- JS-排序详解:冒泡排序、选择排序和快速排序
JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在 ...
- Angular学习笔记—创建一个angular项目
开始项目前,你需要先安装node和npm,然后执行npm install -g @angular/cli安装Angular CLI. 如何安装node.js和npm npm使用介绍 1.安装angul ...
- Python和数据科学的起步指南
http://python.jobbole.com/80853/ Python拥有着极其丰富且稳定的数据科学工具环境.遗憾的是,对不了解的人来说这个环境犹如丛林一般(cue snake joke).在 ...
- PAT 1047 Student List for Course[一般]
1047 Student List for Course (25 分) Zhejiang University has 40,000 students and provides 2,500 cours ...