8463:Stupid cat Doge ⑤

2023-11-23 16:00
文章标签 cat doge 8463 stupid

本文主要是介绍8463:Stupid cat Doge ⑤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

描述
动物园的规划和城市规划一样是个令人头疼的大问题。不幸的是,动物园规划师R.V.L.先生高估了小动物们的智商,他设计了一个极其复杂的动物园道路规划方案,如下图所示:
在这里插入图片描述

动物园按照下述方法进行扩建:当动物园规模扩大之后,R.V.L.先生设计的解决方案是把与原来动物园结构一样的区域复制或旋转90度之后按照图中的方式建设在原来的动物园周围(即将原来的动物园复制一遍放在原动物园上方,将顺时针旋转90度后的动物园放在原动物园的左上方,将逆时针旋转90度后的动物园放在原动物园的左方),再用道路将四部分的首尾连接起来,即可提升动物园的等级。

容易看出,等级提升后的动物园仍然是由一条道路连接,等级为N的动物园共能容纳2^2N只小动物,每只小动物将被分配到唯一的一间房屋。对于任意等级的动物园,我们从左上角开始沿着唯一的道路走,按照道路为房屋标号,就能够得到每间房屋的编号了。

说了这么多,智商余额不足的Stupid cat和Doge早已晕头转向。他们想知道,如果城市发展到了一定等级,他俩各自所处的房屋之间的直线距离是多少。房屋之间的距离是指两座房屋中心点之间的距离,你可以认为每间房屋都是边长为10米的正方形。

输入
输入包含多组测试数据,第一行有一个整数 T 表示测试数据的数目。
每组测试数据包含一行用空格隔开的三个整数 N, S, D,表示动物园等级,Stupid cat分配到的房屋编号和Doge分配到的房间编号。
输出
对于每组测试数据,在单独的一行内输出答案,四舍五入到整数。
样例输入
3
1 1 2
2 16 1
3 4 33
样例输出
10
30
50
提示
【数据范围】
N≤31,1≤S,D≤2^2N,1≤T≤10000.

解题

思路是把图不断分成4小块,然后看动物在哪个块上,然后根据每块图的逻辑计算出xy地址,然后两只动物的xy即可求出距离

分为两部分思考

  • 图分块
    因为知道了等级,就能算出图的大小,把他分为4块,用动物的位置,即可求出动物在哪块,然后再在小块上细分
  • 图位置的逻辑
    1234块,23是相同的,3是初始位置,
    将3沿左上至右下轴旋转即为1的位置,就是x和y交换
    将块的长度减去1的坐标即为第4块的坐标

参见 https://blog.csdn.net/qq_37657307/article/details/72582165

代码
#include <cmath>
#include <iostream>
using namespace std;
typedef long long ll;
int map[5][2] = {{0, 0}, {0, 0}, {0, 1}, {1, 1}, {1, 0}};
void find_how(ll i, ll n, ll &x, ll &y) {//找到如何来变换if (i == 1 || i == 4) {ll temp = x;x = y;y = temp;}if (i == 4) {ll temp = pow(2, n);x = temp - x - 1;y = temp - y - 1;}
}
void find_xy(ll n, ll animal, ll &x, ll &y) {//找到x和y的值if (n == 0)return;ll one_block = pow(2, 2 * (n - 1));//一块的大小ll i;for (i = 1; i <= 4; i++)if (one_block * i >= animal)break;find_xy(n - 1, animal - (i - 1) * one_block, x, y);find_how(i, n - 1, x, y);x += pow(2, n - 1) * map[i][0];y += pow(2, n - 1) * map[i][1];
}
int main() {int t;cin >> t;while (t--) {ll n, s, d;cin >> n >> s >> d;ll sx = 0, sy = 0, dx = 0, dy = 0;find_xy(n, s, sx, sy);find_xy(n, d, dx, dy);ll ans = round(sqrt(pow((sx - dx), 2) + pow((sy - dy), 2)) * 10);cout << ans << endl;}
}

这篇关于8463:Stupid cat Doge ⑤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/419083

相关文章

_get_gt_mask、cat_mask、_get_other_mask

import torch# 定义获取标签掩码的函数def _get_gt_mask(logits, target):print("原始 logits:\n", logits)print("目标 target:\n", target)# 将 target 拉平为一维张量target = target.reshape(-1)print("拉平后的 target:\n", target)# 创建一个和

Linux命令学习笔记(1)----cat命令

写在前面     只是记录一下自己学过的命令,毕竟这些命令太多,每一个的用法也很多,所以只记录自己学过的 cat命令     介绍:cat用来显示文件中的内容,创建文件,或者连接文件形成新文件     语法:         查看文件:cat[选项] 文件名          新建文件:cat > 新建文件名           连接文件:cat 已有

cat 链接并显示文件

3.11 cat链接文件并显示 3.11.1 语法 cat [OPTION]… [FILE]… 例如:【cat /etc/shells】显示当前系统所支持的shell 例如:【cat -n /etc/statetab】 [root@gdy103 ~]# cat -n /etc/statetab1 #2 # A list of paths which should be bind-

Linux下使用cat、grep、sed查看文件任意几行的数据

使用grep命令 grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行grep -B 5 foo file 显示foo及前5行grep -A 5 foo file 显示foo及后5行 grep -C 行数 要查的关键字 文件名  使用cat与tail、head的组合命令 1、查看最后1000行的数据 cat filename | tail -n 1

【Rust日报】2021-07-24 xlcat 就像 cat,用于 xlsx 文件

Paperoni:0.6.0发布 你好 r/rust 的小伙伴,我今天发布了 Paperoni 的 v0.6.0-alpha1。Paperoni 是一个文章下载器,可以将网络文章下载到 EPUB 文件中。此当前版本还允许您将文章导出为 HTML 文件,这为导出为 PDF 提供了可能性。这是大约 3 个月前当我第一次发布关于这个项目时要求的功能。请随意检查并提供任何反馈。谢谢! 文章链接,http

linux查看日志文件内容命令tail、cat、tac、head、echo

-- linux 下修改文件内容保存并退出 vim /etc/profile e i shift+: 退出保存 wq ctrl+z sudo shutdown -r now chmod -777 修改权限 如果用命令chmod 777 tt.htm,结果是 -rwxrwxrwx 1 bu users 2254 2006-05-20 13:47 tt.htm

使用C语言,写一个类似Linux中执行cat命令的类似功能

一、详细的代码案例 #include <stdio.h>#include <stdlib.h>#include <string.h>// 函数声明void cat_file(const char *filename);int main(int argc, char *argv[]) {if (argc < 2) {fprintf(stderr, "Usage: %s filename1 [

搭建 Cat 监控集群平台

懒得 copy 一份了。。。 看个人公众号文章链接: 搭建 Cat 监控集群平台

Linux shell编程学习笔记58:cat /proc/mem 获取系统内存信息

0 前言 在开展系统安全检查的过程中,除了收集cpu信息,我们还需要收集内存信息。在Linux中,获取内存信息的命令很多,这里我们着重研究 cat /proc/mem命令。 1 cat /proc/mem命令  /proc/meminfo 文件提供了有关系统内存的使用情况报告。 当我们想找出已用和可用内存、交换空间或缓存和缓冲区等统计信息时,我们可以分析此文件的内容。 需要注意的

torch.cat 与 torch.concat函数

文章目录 区别torch.cat介绍作用参数使用实例关于参数dim为None的使用 区别   先说结论:没有区别在功能、用法以及作用上,concat函数就是cat函数的别名(官方就是这样说的)。下面截图为证:   因此接下来就主要是介绍 torch.cat 函数的功能和用法。 torch.cat介绍 参考🔗:link torch.cat(tensors, dim=0