LINK:Perfect Triples

初看这道题 一脸懵逼..

完全没有思路 最多就只是发现一点小规律 即。

a<b<c. 且b的最大的二进制位一定严格大于a b的最大二进制位一定等于c.

但是这对解题没有任何用处。

考虑打个表看看有什么规律没有.

通过这道题 我承认 打表找规律也是一个技术活.

虽然能看出来到了第二排 a的数值是递增的 考虑特判前面几个我们就能快速找到a了.

但是b 和 c还是难找。那继续观察后面几项的规律。

我的败笔也是出自这里 规律一般也是符合较小的数据的 没道理不符合1~15这些数值。

我找了10min 失败 虽然勉强看出来4个为一组 但是还是难以找到b,c的规律。无法快速定位。

但是这不是考试 可以不用自闭了。

翻了一篇题解 那篇题解上给了一个比较猛的规律.

这个是一个以三个数字为节点的四叉树。

考虑把这个四叉树画出来 可以惊奇的发现 儿子和父亲有很大的联系。

仔细观察第一个节点(1,2,3) 和第一个儿子(4,8,12).

简单的得到 前者二进制位左移两位得到后者。

考虑第一个节点的第二个儿子 显然由第一个儿子加上(1,2,3)得到。第三个儿子由第一个儿子加上(2,3,1)得到。第四个儿子由第一个儿子加上(3,1,2)得到。

至此 我们直接从根节点一路下来定位即可 由于是四叉树 所以每次查询是log4(n)的复杂度。

这道题告诉我 规律要从小的地方开始找 且一般都符合较小的数字集。这样容易看出来。

实际上 输出也很难搞 我想了20min yy出来一个方法。

由父亲定位过于困难 定位父亲较为简单。

可以发现这是一个层数前缀和的形式 先定位层数。这个可以利用前缀和搞。

然后就可以定位到父亲的位置了 然后把自己的位置变成父亲的第几个儿子。

这样再从上往下做就很容易了。注意直接定位父亲的做法是错误的 因为这是一个前缀的形式很可能定位错误。

const ll MAXN=100010;
ll n,T,top;
ll s[MAXN],a,b,c;
ll p[MAXN],maxx,sum[MAXN];
int main()
{
freopen("1.in","r",stdin);
get(T);p[0]=1;maxx=27;sum[0]=1;
rep(1,maxx,i)p[i]=p[i-1]*4,sum[i]+=sum[i-1]+p[i];
//putl(sum[maxx]);
while(T--)
{
get(n);top=0;
ll ww=(n-1)/3+1;
ll cc=n%3==0?3:n%3;
ll w1=0;
while(sum[w1]<ww)++w1;
ww=ww-(w1==0?0:sum[w1-1]);
while(w1)
{
ll p1=(ww-1)/4+1;
s[++top]=ww-(p1-1)*4;
ww=p1;--w1;
}
a=1;b=2;c=3;
while(top)
{
a=a<<2;b=b<<2;c=c<<2;
if(s[top]==2)a+=1,b+=2,c+=3;
if(s[top]==3)a+=2,b+=3,c+=1;
if(s[top]==4)a+=3,b+=1,c+=2;
--top;
}
if(cc==1)putl(a);
if(cc==2)putl(b);
if(cc==3)putl(c);
}
return 0;
}

CF R 633 div 1 1338 C. Perfect Triples 打表找规律的更多相关文章

  1. Tetrahedron(Codeforces Round #113 (Div. 2) + 打表找规律 + dp计数)

    题目链接: https://codeforces.com/contest/166/problem/E 题目: 题意: 给你一个三菱锥,初始时你在D点,然后你每次可以往相邻的顶点移动,问你第n步回到D点 ...

  2. Codeforces Round #493 (Div. 2)D. Roman Digits 第一道打表找规律题目

    D. Roman Digits time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. CF R 209 div 2 CF359B Permutation 构造

    LINK:Permutation 休闲一下 开了一道构造题. 看起来毫无头绪 其实仔细观察第二个条件 0<=2k<=n. 容易想到当n是奇数的时候 k的范围更小 再手玩一下第一个条件 容易 ...

  4. Codeforces Round #242 (Div. 2) C. Magic Formulas (位异或性质 找规律)

    题目 比赛的时候找出规律了,但是找的有点慢了,写代码的时候出了问题,也没交对,还掉分了.... 还是先总结一下位移或的性质吧: 1.  交换律 a ^ b = b ^ a 2. 结合律 (a^b) ^ ...

  5. hdu-3524 Perfect Squares---打表+找规律+循环节

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3524 题目大意: 求i^2 mod 2^n有多少可能 解题思路: 先打表,求出n较小的时候的数据 n ...

  6. Codeforces Round #493 (Div. 1) B. Roman Digits 打表找规律

    题意: 我们在研究罗马数字.罗马数字只有4个字符,I,V,X,L分别代表1,5,10,100.一个罗马数字的值为该数字包含的字符代表数字的和,而与字符的顺序无关.例如XXXV=35,IXI=12. 现 ...

  7. 【博弈论】【SG函数】【找规律】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) E. Game of Stones

    打表找规律即可. 1,1,2,2,2,3,3,3,3,4,4,4,4,4... 注意打表的时候,sg值不只与剩下的石子数有关,也和之前取走的方案有关. //#include<cstdio> ...

  8. CF Round #510 (Div. 2)

    前言:没想到那么快就打了第二场,题目难度比CF Round #509 (Div. 2)这场要难些,不过我依旧菜,这场更是被\(D\)题卡了,最后\(C\)题都来不及敲了..最后才\(A\)了\(3\) ...

  9. 竞赛题解 - CF Round #524 Div.2

    CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...

随机推荐

  1. MySQL实验 子查询优化双参数limit

    MySQL实验 子查询优化双参数limit 没想到双参数limit还有优化的余地,为了亲眼见到,今天来亲自实验一下.   实验准备 使用MySQL官方的大数据库employees进行实验,导入该示例库 ...

  2. requests接口自动化7-Multi/form-data文件上传形式的post请求:files

    Multi/form-data文件上传形式的post请求:用files传参 fiddler里请求响应内容; 代码: import requests from requests_toolbelt imp ...

  3. 数据可视化之powerBI基础(九)Power BI中的“新表”,你会用吗?

    https://zhuanlan.zhihu.com/p/64413703 通常情况下,在PowerBI进行分析的各种数据表都是从外部的各种数据源导入进来的,但并不总是如此,某些情况下在PowerBI ...

  4. Angular 懒加载找不到模块问题解决方法

    问题: 懒加载无法找到模块 解决办法: 在app-routing.module.ts中引入该模块

  5. 模板方法模式(c++实现)

    外观模式 目录 外观模式 模式定义 模式动机 UML类图 源码实现 优点 缺点 模式定义 模板方法模式(Facade),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变 ...

  6. OSCP Learning Notes - WebApp Exploitation(5)

    Remote File Inclusion[RFI] Prepare: Download the DVWA from the following website and deploy it on yo ...

  7. 7.CSMA协议

    载波监听多路访问协议CSMA CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据. MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上 协议思想:发送帧 ...

  8. Crontab定时启动Supervisor任务

    1.  Crontab介绍 crontab的语法规则格式: 代表意义 分钟 小时 日期 月份 周 命令 数字范围 0~59 0~23 1~31 1~12 0~7 需要执行的命令 周的数字为 0 或 7 ...

  9. Vue使用定时器定时刷新页面

    1. 需求说明 在前端开发中,往往会遇到页面需要实时刷新数据的情况,给用户最新的数据展示. 2. 逻辑分析 如果需要数据实时更新,我们自然是需要使用定时器,不断的调用接口数据,会相对的消耗内存. 3. ...

  10. vue中使用触摸事件,上滑,下滑,等

    第一步,下载一个包 npm install kim-vue-touch -s 在当前项目中下载包 第二部 import vueTouch from 'kim-vue-touch' Vue.use(vu ...