HDU-6862 Hexagon (2020HDU 多校 D8 H)
2024-09-06 18:51:31
1008
题意:半径为n的六边形(由半径为1的小六边形组成),从某一个小六边形出发有六个方向,找到一条转向次数最多的路径(用方向表示)遍历所有的六边形(一个六边形只访问一次)。
题解:先画出n=3/4
满足条件的路径,发现走每一条边的转弯方式(由两个方向表示)一致 ,n增加2,转弯次数也增加2
下图为n = 4
的情况:
中间一圈是
245612
615
衔接之后进入第二圈的左上边的连续转弯处46
3
衔接,24
连续转弯2
衔接,13
连续转弯1
衔接,62
连续转弯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;
}
}
}
最新文章
- vue之自定义指令directive
- 在SpringMVC中获取request对象
- Linux Shell 高级编程技巧2----shell工具
- WPF 设置透明度和圆形图片
- paip.python连接mysql最佳实践o4
- Executing modules as scripts
- Windows操作 - Photoshop为图片添加透明立体水印
- iOS - UI - UIPageControl
- ArrayList源代码深入剖析
- puTTY与SecureCRT的比较
- [python]通过urllib2设置代理访问网址
- ECLIPSE实现了界面显示所有类
- Openjudge-计算概论(A)-计算三角形面积
- hdu 4123--Bob’s Race(树形DP+RMQ)
- selenium 断言与验证
- 详解Ajax请求(三)——jQuery对Ajax的实现及serialize()函数对于表单域控件参数提交的使用技巧
- react create-react-app 跨域
- shell编程—注释、字符串和数组(四)
- Linux常用指令之二
- [UE4]编程师外挂Visual Assist X