hdu 1075 What Are You Talking About

本文介绍如何使用字典树来处理火星文编码,并在每个火星文的末尾存储对应的英文单词,实现快速搜索与查找。

字典树简单题~~~

在每个火星文的最后一个节点放上英文单词,然后searc时返回即可!

这道题我不大理解的是一些关于char型指针和char型数组的,让我作者道题的时候纠结了!

有些代码和变量其实没必要写的,但是因为上面那个,所以写的麻烦了很多!

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

struct trie
{
    char eng[20];
    int len;
    trie* next[26];
};

void inst(trie* root,char mars[],char engl[])
{
    trie *p = root;
    int i = 0;
    while(mars[i]!='\0')
    {
        int k = mars[i]-'a';
        if(p->next[k] == NULL)
        {
            trie* tmp = new trie;
            for(int j = 0;j < 26;j ++)
            tmp->next[j] = NULL;
            tmp->len = 0;
            if(mars[i+1]=='\0') {int j;for(j = 0;j < strlen(engl);j ++)tmp->eng[j] = engl[j];tmp->eng[j]='\0'; tmp->len = 1;}
            p->next[k] = tmp;
        }
        p = p->next[k];
        i ++;
    }
}

char* search(trie* root, char mars[])
{
    trie *p = root;
    int i = 0;
    while(mars[i]!='\0')
    {

        int k = mars[i] - 'a';
        if(p->next[k] == NULL) return NULL;
        else p = p->next[k];
        i ++;
    }
    if(p->len == 0) return NULL;
    return p->eng;
}

int main()
{
    char mars[20],engl[20],words[3010],ques[20],*ans;
    trie *root = new trie;
    int i,j;
    for(i = 0;i < 26;i ++) root->next[i] = NULL;
    root->len = 0;
    while(scanf("%s",&engl))
    {
        if(strcmp(engl,"START")==0) continue;
        if(strcmp(engl,"END")==0) break;
        scanf("%s",&mars);
        inst(root,mars,engl);
    }
    getchar();
    while(gets(words))
    {
        if(strcmp(words,"START")==0) continue;
        if(strcmp(words,"END")==0) break;
        int len = strlen(words);
        j = 0;
        //cout<<words<<endl;
        for(i =0 ;i < len;i ++)
        {
            if(words[i]>='a'&&words[i]<='z') ques[j++] = words[i];
            else
            {
                if(j > 0){
                ques[j] = '\0';
                ans = search(root,ques);
                if(ans != NULL) {printf("%s",ans);}
                else printf("%s",ques);
                }
                cout<<words[i];
                j = 0;
            }
        }
        printf("\n");
    }
}


内容概要:本文介绍了一个基于冠豪猪优化算法(CPO)的无人机三维路径规划项目,利用Python实现了在复杂三维环境中为无人机规划安全、高效、低能耗飞行路径的完整解决方案。项目涵盖空间环境建模、无人机动力学约束、路径编码、多目标代价函数设计以及CPO算法的核心实现。通过体素网格建模、动态障碍物处理、路径平滑技术和多约束融合机制,系统能够在高维、密集障碍环境下快速搜索出满足飞行可行性、安全性与能效最优的路径,并支持在线重规划以适应动态环境变化。文中还提供了关键模块的代码示例,包括环境建模、路径评估和CPO优化流程。; 适合人群:具备一定Python编程基础和优化算法基础知识,从事无人机、智能机器人、路径规划或智能优化算法研究的相关科研人员与工程技术人员,尤其适合研究生及有一定工作经验的研发工程师。; 使用场景及目标:①应用于复杂三维环境下的无人机自主导航与避障;②研究智能优化算法(如CPO)在路径规划中的实际部署与性能优化;③实现多目标(路径最短、能耗最低、安全性最高)耦合条件下的工程化路径求解;④构建可扩展的智能无人系统决策框架。; 阅读建议:建议结合文中模型架构与代码示例进行实践运行,重点关注目标函数设计、CPO算法改进策略与约束处理机制,宜在仿真环境中测试不同场景以深入理解算法行为与系统鲁棒性。
要解决被HDU WAF(Web应用防火墙)拒绝的问题并调整代码,可从以下几个方面着手: ### 网络访问规范 - **IP限制**:HDU WAF可能因IP存在异常访问行为而拒绝访问。检查IP是否被列入黑名单,若因频繁请求被临时封禁,可等待封禁时间结束或联系HDU相关技术支持人员说明情况,请求解封。 - **请求频率**:过度频繁的请求会触发WAF的防护机制。调整代码中的请求频率,添加适当的延迟。以下是Python中使用`time.sleep()`函数添加延迟的示例: ```python import time import requests for i in range(10): response = requests.get('http://acm.hdu.edu.cn') print(response.text) time.sleep(1) # 每次请求间隔1秒 ``` ### 代码合规性 - **请求头设置**:确保代码中的请求头信息符合正常浏览器的请求头格式。部分WAF会根据请求头信息判断请求是否正常。以下是Python中设置请求头的示例: ```python import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get('http://acm.hdu.edu.cn', headers=headers) print(response.text) ``` - **请求参数**:检查代码中发送的请求参数是否包含恶意字符或异常内容。确保参数符合题目要求和网站规定。 ### 代码逻辑与题目要求 - **理解题目意思**:仔细阅读题目描述,确保代码逻辑符合题目要求。如VJ的题有很多格式要求,多打一个空格、没换行系统就会评测为presentation error,所以要在代码中严格遵循题目要求的输出格式[^2]。 - **优化算法复杂度**:若代码运行时间过长或占用资源过多,可能会被WAF视为异常请求。对代码中的算法进行优化,降低时间和空间复杂度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值