zoukankan      html  css  js  c++  java
  • HDU6862 Hexagon (2020HDU 多校 D8 H)

    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;
            }
        }
    }
    
  • 相关阅读:
    在一个很长的字符串中搜索自定义字符串的问题(通过多线程实现)
    老鼠走迷宫
    js控制父子页面传值(iframe和window.open)
    C#后台跳转
    CSS小技巧-图片自动缩放
    js中去除换行( )
    js去除首尾空格
    JQuery隔行变色
    Web开发在线工具
    JQuery标签去重与数组去重
  • 原文地址:https://www.cnblogs.com/ExileTerminus/p/13527879.html
Copyright © 2011-2022 走看看