首页 > 其他分享 >牛客题解——牛牛家的房子

牛客题解——牛牛家的房子

时间:2022-12-11 09:11:31浏览次数:42  
标签:牛家 int 题解 move 房子 牛客 house y1 y2

题目描述

城市有n排n列的房子。牛牛在每个格点(x,y)[0≤ x,y ≤ n]建了一所房子,冬天来了,(x, y)的室内温度为t[x*n + y]度。从(x1, y1)处的房子移动到(x2, y2)处的房子需要|x1 - x2| + |y1 - y2|分钟。此外,外面很冷,一个人最多只能在外面呆上r分钟。最初每个房子里只住一个人。然后每个人重复下面的过程:他们在一次旅行中找到他们能到达的最温暖的房子,然后搬到那里。人们重复这个动作,直到在离开他们当前的房子的r分钟内没有更温暖的房子。算出两个值:

  • a = 当每个人都停止移动时,容纳至少一个人的房屋数量
  • b = 同一所房子的最大人数

输入描述:

第一行输入两个整数n,r (1 ≤ n ≤ 20, 1 ≤ r ≤ 40 )
接下来n行每行输入n个整数 表示每个房子的温度,范围在[1,1000]内

输出描述:

输出一行,包含两个整数用空格隔开

示例1

输入

3 1
9 1 6
5 3 2
7 4 8

输出

4 4

解题思路

使用爆搜,查找比当前房子温度高的房子,全家搬入,以此循环

部分C++代码:

bool can_move(int& x1,int& y1,int& x2,int& y2){
    return abs(x1-x2)+abs(y1-y2)<=r;
}
room* search(int x,int y){
    int rx=0,ry=0,t=house[x][y].t;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(house[i][j].t>t && can_move(x,y,i,j)){
                t=house[i][j].t;
                rx=i;ry=j;
            }
        }
    }
    if(rx!=0)
        return &house[rx][ry];
    else
        return NULL;
}
    while(1){
        int move=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(house[i][j].r>=1){
                    room* w=search(i,j);
                    if(w!=NULL){
                        (*w).r+=house[i][j].r;
                        house[i][j].r=0;move=1;
                    }
                }
            }
        }
        if(!move)break;
    }

标签:牛家,int,题解,move,房子,牛客,house,y1,y2
From: https://www.cnblogs.com/NightinGaleCode/p/16972824.html

相关文章

  • ABC281 DEF 简短题解
    G有时间想,但不太擅长这种图论计数,就摆了。Ex直接润。感觉这场打得很烂,全程梦游,吃了5发罚时,很棒。D-MaxMultiple给定\(n\)个数\(a_1\sima_n\),选出\(k\)个......
  • Atcoder-ABC281-DEF题解
    AtcoderBeginnerContest281D.MaxMultiple(DP)题意在长度为\(N\)的序列\(A\)中,找到\(K\)个元素其和为\(D\)的倍数,找出满足要求最大的和,没有则返回-1。数......
  • 常见问题解决 --- IDEA报错 org.apache.jasper.servlet.TldScanner.scanJars 至少有一
    问题描述 问题原因tomcat版本太高,代码使用的是低版本 解决办法降低tomcat版本。或者修改代码到高版本。  ......
  • [POJ1734]Sightseeing 观光之旅 题解
    无向图的最小环问题,前置芝士:\(\text{Floyd}\)传送门题目描述给定一张无向图,求图中一个至少包含\(3\)个点的环,环上的节点不重复,并且环上的边的长度之和最小。你需要......
  • 问题解决系列:io.lettuce.core.RedisCommandExecutionException_ CLUSTERDOWN
    问题场景程序调用​​redis​​集群,总是间歇性地提示报错,报错提示如下:org.springframework.data.redis.RedisSystemException:Errorinexecution;nestedexceptionisio......
  • P2018:消息传递题解——二次扫描与换根
    消息传递题面题目描述巴蜀国的社会等级森严,除了国王之外,每个人均有且只有一个直接上级,当然国王没有上级。如果A是B的上级,B是C的上级,那么A就是C的上级。绝对不会出现这样......
  • FJ的农场 题解
    原题见P4216首先\(\Theta(mn)\)暴力能够拿到\(30\)分,这个没有什么难度,可以参照一下我用来测试的暴力Link。首先让我们来简化一下题意:插入操作(即"\(Grow\)"),将树......
  • AcWing2437. Splay 题解
    题目大意:splay执行区间翻转示例程序:#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e5+5;intn,m;structNode{ints[2],p,v;intsz,flag......
  • 洛谷P8767 [蓝桥杯 2021 国 A] 冰山 题解 splay tree
    题目链接:​​https://www.luogu.com.cn/problem/P8767​​鸣谢:这道题的顺利解决得到了​​7KByte​​大佬的大力帮助,在此再次表示感谢。首先,我的想法是这样的:使用一个spl......
  • 【题解】P8866 [NOIP2022] 喵了个喵(构造,adhoc)
    【题解】P8866[NOIP2022]喵了个喵题目链接P8866[NOIP2022]喵了个喵题意概述有一个牌堆和\(n\)个可以从栈底删除元素的栈,任务是要通过规则将所有的卡牌消去。开......