1008

题意:半径为n的六边形(由半径为1的小六边形组成),从某一个小六边形出发有六个方向,找到一条转向次数最多的路径(用方向表示)遍历所有的六边形(一个六边形只访问一次)。

题解:先画出n=3/4满足条件的路径,发现走每一条边的转弯方式(由两个方向表示)一致 ,n增加2,转弯次数也增加2

下图为n = 4的情况:

  1. 中间一圈是245612

  2. 615 衔接之后进入第二圈的左上边的连续转弯处46

  3. 3衔接, 24连续转弯

  4. 2衔接, 13连续转弯

  5. 1衔接, 62连续转弯

  6. 6衔接, 51连续转弯

下图是n = 5的情况:

  • 路径同n = 4的2~6步

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+50;
ll n, k;
ll imax,sum;
string s;
void get(int x) {
s += "615";
for(int i = 1; i <= x-2; i++) s += "46";
s += '4';
for(int i = 1; i <= x-1; i++) s += "35";
s += '3';
for(int i = 1; i <= x-1; i++) s += "24";
s += '2';
for(int i = 1; i <= x-1; i++) s += "13";
s += '1';
for(int i = 1; i <= x-1; i++) s += "62";
s += '6';
for(int i = 1; i <= x-1; i++) s += "51";
}
int main() {
int T;scanf("%d",&T);
while(T--) {
scanf("%d",&n);
if( n%2 == 0) {
s = "245612";
for(int i = 3; i <= n; i += 2) get(i);
cout << s << endl;
}
else {
s = "";
for(int i = 2; i <= n; i += 2) get(i);
cout << s <<endl;
}
}
}

最新文章

  1. vue之自定义指令directive
  2. 在SpringMVC中获取request对象
  3. Linux Shell 高级编程技巧2----shell工具
  4. WPF 设置透明度和圆形图片
  5. paip.python连接mysql最佳实践o4
  6. Executing modules as scripts
  7. Windows操作 - Photoshop为图片添加透明立体水印
  8. iOS - UI - UIPageControl
  9. ArrayList源代码深入剖析
  10. puTTY与SecureCRT的比较
  11. [python]通过urllib2设置代理访问网址
  12. ECLIPSE实现了界面显示所有类
  13. Openjudge-计算概论(A)-计算三角形面积
  14. hdu 4123--Bob’s Race(树形DP+RMQ)
  15. selenium 断言与验证
  16. 详解Ajax请求(三)——jQuery对Ajax的实现及serialize()函数对于表单域控件参数提交的使用技巧
  17. react create-react-app 跨域
  18. shell编程—注释、字符串和数组(四)
  19. Linux常用指令之二
  20. [UE4]编程师外挂Visual Assist X

热门文章

  1. 5种设置ASP.NET Core应用程序URL的方法
  2. CSS字体大小: em与px、pt、百分比之间的对比
  3. JavaScript 实现 (ECMAScript 6)
  4. 如何实现一个 markdown 图片粘贴上传的博客后台系统
  5. React 16.x Roadmap
  6. macOS 屏幕共享, 远程协助
  7. redis五种数据类型的应用
  8. Hadoop生态常用数据模型
  9. ffmpeg第4篇:为视频添加动态水印
  10. 行业动态 | 通过使用Apache Cassandra实现实时供应链管理