2021牛客OI赛前集训营-提高组(第四场)

题目大意

给你三个整数 n , d , l n,d,l n,d,l, n n n为正整数、负整数或0, d , l d,l d,l为正整数,你现在有一个数 k = 1 k=1 k=1,请你用以下三种操作,将 k k k的值变为 n n n

  • 如果 min ⁡ ( ∣ k ∣ , ∣ k − d ∣ ) ≤ l \min(|k|,|k-d|)\leq l min(∣k∣,∣k−d∣)≤l,将 k k k变为 k − d k-d k−d
  • 将 k k k变为 2 k 2k 2k
  • 如果 k ≡ 1 ( m o d 3 ) k\equiv 1\pmod3 k≡1(mod3),将 k k k变为 n − 1 3 \dfrac{n-1}{3} 3n−1​

求将初始的 k k k(此时 k = 1 k=1 k=1)的值变为 n n n的操作方法,注意操作次数不能超过 1500 1500 1500。

题解

我们把构造的过程反过来,从 n n n到 1 1 1构造,那么操作 2 2 2和操作 3 3 3可以看做 n = n / 2 n=n/2 n=n/2和 n = 3 n + 1 n=3n+1 n=3n+1。可以想到角谷猜想。

如果 n n n为正整数,那么一定能让 n n n变为 1 1 1。

如果 n n n为负整数或0,则经过角谷猜想的操作,那么一定能使 n n n变为在 − 100 -100 −100到 0 0 0之间的整数。那么显然 ∣ n ∣ ≤ l |n|\leq l ∣n∣≤l,我们不断让 n n n变为 n + d n+d n+d,直到 n > 0 n>0 n>0,然后再用角谷猜想的操作让 n n n变为 1 1 1即可。

这样操作的次数并不会超过 1500 1500 1500次,实际上大部分都在 200 200 200到 300 300 300步左右。

code

#include<bits/stdc++.h>
using namespace std;
int q,d,l,n,re,ans[10005];
void dd(int i){while(i!=1&&i!=0&&i!=-1&&i!=-5&&i!=-17){if(i%2) i=i*3+1;else i/=2;ans[++ans[0]]=i;}re=i;
}
int main()
{scanf("%d%d%d",&q,&d,&l);while(q--){ans[0]=0;scanf("%d",&n);if(n==0){printf("1 1 0\n");continue;}ans[++ans[0]]=n;dd(n);while(re<=0){re+=d;ans[++ans[0]]=re;}dd(re);printf("%d ",ans[0]-1);while(ans[0]){printf("%d ",ans[ans[0]]);--ans[0];}printf("\n");}return 0;
}

2021牛客OI赛前集训营-提高组(第四场) T2空间跳跃相关推荐

  1. 2021牛客OI赛前集训营-提高组(第五场)D-牛牛的border【SAM】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/20110/D 题目大意 求一个长度为nnn的字符串的所有子串的borderborderborder长度和. 1 ...

  2. 2021牛客OI赛前集训营-提高组(第五场)C-第K排列【dp】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/20110/C 题目大意 一个长度为nnn的字符串SSS,SSS中存在一些???,有N/O/I/PN/O/I/P ...

  3. 2020牛客NOIP赛前集训营提高组(第四场)B-色球【链表】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/7611/B 题目大意 nnn个杯子,mmm个操作 在第zzz个杯子中依次加入xxx个颜色为yyy的球 在第yy ...

  4. 【2020牛客NOIP赛前集训营-提高组(第一场)题解】( 牛牛的方程式,牛牛的猜球游戏,牛牛的凑数游戏,牛牛的RPG游戏)

    未完待续... T1:牛牛的方程式 title solution code T2:牛牛的猜数游戏 title solution code T3:牛牛的凑数游戏 title solution code ...

  5. 2020牛客NOIP赛前集训营-提高组(第一场) T2 牛牛的猜球游戏

    题目链接: 牛客原站 通过记录: 题目链接2:T277380 牛牛的猜球游戏(被我们搬到洛谷力): 洛谷搬运 题目描述   有十个数 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ...

  6. 【2020牛客NOIP赛前集训营-提高组(第二场)】题解(GCD,包含,前缀,移动)

    文章目录 T1:GCD title solution code T2:包含 title solution code(正解code补充在上面了) T3:前缀 title solution code T4 ...

  7. 2020牛客NOIP赛前集训营-提高组(第三场)C-牛半仙的妹子Tree【虚树,最短路】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/7609/C 题目大意 给出nnn个点的一棵树,mmm个时刻各有一个操作 标记一个点,每个点被标记后的每一个时刻 ...

  8. 2020牛客NOIP赛前集训营-提高组(第六场)A-袜子分配【组合数学,结论】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/7615/A?&headNav=acm&headNav=acm 题目大意 nnn对颜色一样的袜子 ...

  9. 2020牛客NOIP赛前集训营-普及组第三场C牛半仙的妹子树

    链接:https://ac.nowcoder.com/acm/contest/7608/C 来源:牛客网 牛半仙有 n​ 个妹子,她们所在的位置组成一棵树,相邻两个妹子的距离为 1​. 有 m​ 个妹 ...

最新文章

  1. CSS样式----标记选择器
  2. 美国计算机专业录取率,美国留学高录取率院校计算机专业申请条件是什么? 爱问知识人...
  3. 隐藏画质代码_【和平精英】变成恐怖精英?玩家在墙上发现了一幅隐藏的壁画!...
  4. akae-arm9异常
  5. 深入理解分布式技术 - 两阶段的应用 MySQL XA 规范
  6. 解决iIntelliJ IDEA导入jstl后,jsp中taglib指令无法自动添加uri地址
  7. 有一种情人节叫,别人家的情人节......
  8. java 模拟form_java模拟form上传数据
  9. tensorflow随笔-底层梯度
  10. javascript foreach中获取数组下标/index
  11. 1011 A+B 和 C (15分)
  12. UI(1)---2018 UI 设计趋势
  13. 利用swoole coroutine协程实现redis异步操作
  14. Strategy模式的一点思考
  15. windows 10字体突然变小变细,模糊
  16. 又订阅了万维刚的精英日课
  17. html页面导出pdf截断问题,html2canvas 与 jspdf 相结合生成 pdf 内容被截断的终极解决方案...
  18. workbook 读取excel表格
  19. rewind函数+php,PHP SplFixedArray rewind()用法及代码示例
  20. 用计算机设计软件,平面设计中计算机设计软件的作用

热门文章

  1. LeetCode26 删除有序数组中的重复项
  2. CSS3打造不断旋转的CD封面
  3. Uncaught URIError: URI malformed
  4. 小哈哥开知识星球了,希望小哈哥可以陪伴你们一起成长【小哈和他的朋友们】
  5. 有限理性建模的方法和计算机平台,一类有限理性的建模和决策分析方法是的研究.docx...
  6. 【初学者】SVG图片加载失败,求解
  7. 努比亚出售中兴物联全部股权 此前占股90%
  8. MySQL基础篇(上,超详细)
  9. 微服务技术初探:基于IDEA使用Maven构建SpringCloud项目
  10. python图片加水印