题解 Fractal Streets
#include<cstdio>
#include<math.h>
#include<utility>//pair
using namespace std;
#define ll long long
#define pr pair<ll,ll>
#define mp make_pair
pr get(int n,ll m) {//返回值是第n层第m个的坐标
if (!n) return mp(0,0);
ll len=1ll<<(n-1),cnt=(1ll<<(2*n))/4;
pr pos=get(n-1,m%cnt);
//我们把它在下一层的坐标求出来,然后根据它在这一层的方位(左上,左下,右上,右下),还原它旋转移动前的坐标
ll x=pos.first,y=pos.second,z=m/cnt;
if (z==0) return mp(y,x);
else if (z==1) return mp(x,y+len);
else if (z==2) return mp(x+len,y+len);
else if (z==3) return mp(-y+2*len-1,-x+len-1);
//z==1,2都是可以直接平移得到,而z==0,3需要旋转
//其实路径的形状并不重要,关键是第n层与第n+1层间的的坐标是怎样变换的。
}
int main() {
int T,n;
ll a,b,x,y;
scanf("%d",&T);
while(T--) {
scanf("%d%lld%lld",&n,&a,&b);
pr A=get(n,a-1),B=get(n,b-1);
x=A.first-B.first,y=A.second-B.second;
printf ("%.0lf\n",sqrt(x*x+y*y)*10);
}
}
这种基础题说它简单吧,它的确不难,主要就是思维难度。但如果基础不扎实的话,这种题目就会让你在考场上耗费很多时间(譬如小蒟蒻我qwq)
题解 Fractal Streets的更多相关文章
- POJ 3889 Fractal Streets(逼近模拟)
$ POJ~3889~Fractal~Streets $(模拟) $ solution: $ 这是一道淳朴的模拟题,最近发现这种题目总是可以用逼近法,就再来练练手吧. 首先对于每个编号我们可以用逼近法 ...
- poj3889 fractal streets
分形街道 我干,这个毒瘤. 想起来就头痛. 首先看题就是一大难题...... 说一下题目大意吧. 每当n+1时,把n阶图复制为4份.2*2排好. 右边两个不动.左上顺时针旋转90°,左下逆时针旋转90 ...
- bzoj2263: Pku3889 Fractal Streets
给出两点编号,求如图所示的图中两点间欧氏距离*10取整 递归处理由编号求出坐标 #include<cstdio> #include<cmath> int T,n,s,t; vo ...
- POJ3889Fractal Streets
Fractal Streets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 445 Accepted: 162 Des ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 0x03
指数级枚举:1到n任意选取的所有方案数: #include<bits/stdc++.h> using namespace std; int n,a[1100],vis[1100],cnt, ...
- 题解-AtCoder-agc003F Fraction of Fractal(非矩阵快速幂解法)
Problem AtCoder-agc003F 题意:给出\(n\)行\(m\)列的01矩阵,一开始所有 \(1\) 连通,称此为\(1\)级分形,定义\(i\)级分形为\(i-1\)级分形中每个标示 ...
- 2015北京网络赛 H题 Fractal 找规律
Fractal Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/acmicpc2015beijingo ...
- codeforce1070 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) 题解
秉承ACM团队合作的思想懒,这篇blog只有部分题解,剩余的请前往星感大神Star_Feel的blog食用(表示男神汉克斯更懒不屑于写我们分别代写了下...) C. Cloud Computing 扫 ...
随机推荐
- CF 150E Freezing with Style [长链剖分,线段树]
\(sol:\) 给一种大常数 \(n \log^2 n\) 的做法 考虑二分,由于是中位数,我们就二分这个中位数,\(x>=mid\)则设为 \(1\),否则为 \(-1\) 所以我们只需要找 ...
- Node.js核心模块-http
通过node中的http模块可以创建编写服务器 引入 const http = require('http') http举例使用: const http = require('http') //引入 ...
- Beego 输出数据格式JSON、XML、JSONP
JSON.XML.JSONP beego 当初设计的时候就考虑了 API 功能的设计,而我们在设计 API 的时候经常是输出 JSON 或者 XML 数据,那么 beego 提供了这样的方式直接输出: ...
- CSS的一些文本操作有哪些
一.文本的对齐方式 text-align:center/left/right text-align:justify; font-style:normal/italic/oblique/inherit ...
- ECMAScript基本对象——Date日期对象
1.创建 var 对象名 = new Date(); 2.方法 ①toLocaleString()据本地时间格式,把 Date 对象转换为字符串.和电脑的语言位置有关 ②getTime()返回 197 ...
- extern关键字详解
基本理解 extern放在变量或者函数之前,表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义. extern有两个作用 1.当它与"C"一起连 ...
- mybatis插入嵌套对象
今晚做项目遇上了一个需求,需要插入嵌套对象. 对象结构是这样的: public class RegisterMsg{ private Header header; private short pro ...
- [USACO12DEC]First!
Description Luogu3065 Solution 首先,一个串要是最小的,别的串不能是它的前缀,且和它有相同前缀的串字典序都比他小. Trie树是显然要用的,难点在于如何判断能否最小.其实 ...
- Session方法
Session的save()和persist()方法Session的save()方法使一个临时对象转变为持久化对象.它完成以下操作:(1)将临时对象加入到Session缓存中,使其进入持久化状态.(2 ...
- 二分-F - Aggressive cows
F - Aggressive cows Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. ...