1351C - Skier (1400)

博客介绍了1351C - Skier的题目背景,该问题涉及在NSWE四个方向上的移动,首次移动代价为5,后续移动代价为1。博主提出暴力求解的策略,即假设从原点开始,通过记录路径来解决问题。文章可能包含详细的代码示例来解释解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1351C - Skier
题意:
NSWE代表上下左右4个方向,每次走一个单位,第一次走的路花费时间5,不是第一次走的路花费时间1,求最后所花时间
思路:
暴力嗷,假设是从原点开始走的,map记录一下就能随便写了
代码附:

#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5+10;
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t,ans;
    pair<int,int> k;
    string ss;
    cin>>t;
    while(t--)
    {
        ans=0;
        cin>>ss;
        map<pair<pair<int,int>,pair<int,int>>,bool>mp;
        k.first=k.second=0;
        for(int i=0; i<ss.length(); ++i)
        {
            pair<int,int> kk=k;
            if(ss[i]=='W')
                kk.first--;
            else if(ss[i]=='E')
                kk.first++;
            else if(ss[i]=='N')
                kk.second++;
            else
                kk.second--;
            if(mp[make_pair(kk,k)]||mp[make_pair(k,kk)])
                ans++;
            else
            {
                ans+=5;
                mp[make_pair(kk,k)]=mp[make_pair(k,kk)]=1;
            }
            k=kk;
        }
        cout<<ans<<endl;
    }
    return 0;
}

### OWL-ViT 模型概述 OWL-ViT 是一种基于开放词汇的对象检测模型,其设计目标是在无需重新训练的情况下支持新类别的对象检测。该模型的核心理念是从对比学习出发,在视觉和语言之间建立共享表示空间[^2]。这种机制使得 OWL-ViT 能够理解并处理未见过的类别标签。 具体而言,OWL-ViT 的架构分为两个主要部分: 1. **预训练阶段**:利用类似于 CLIP 的框架,通过对比损失函数联合训练视觉编码器和文本编码器,从而构建一个统一的跨模态表示空间[^3]。这一过程允许模型学会如何关联图像特征与对应的自然语言描述。 2. **微调阶段(可选)**:尽管 OWL-ViT 可以直接用于零样本推理,但在某些特定任务上可以通过少量标注数据进一步提升性能。 ### NanoOWL 对 OWL-ViT 的优化 为了提高 OWL-ViT 在边缘设备上的实时性表现,NanoOWL 提供了一个专门针对 NVIDIA Jetson Orin 平台的优化版本。此项目借助 NVIDIA TensorRT 技术显著加速了前向传播速度,并开发了一种新颖的“树检测”管道来扩展模型的应用范围[^1]。这些改进不仅增强了计算效率,还实现了更复杂的嵌套结构分析能力。 ### 使用方法 以下是使用 OWL-ViT 或 NanoOWL 进行对象检测的基本流程: #### 安装依赖库 首先需要安装必要的 Python 库文件,例如 PyTorch 和 transformers: ```bash pip install torch torchvision transformers ``` #### 加载预训练模型 可以使用 Hugging Face 提供的 `transformers` 工具包快速加载 OWL-ViT 预训练权重: ```python from transformers import OwlViTProcessor, OwlViTForObjectDetection import requests from PIL import Image processor = OwlViTProcessor.from_pretrained("google/owlvit-base-patch32") model = OwlViTForObjectDetection.from_pretrained("google/owlvit-base-patch32") url = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Winter_Sports_in_the_Alps.jpg/1920px-Winter_Sports_in_the_Alps.jpg" image = Image.open(requests.get(url, stream=True).raw) texts = [["skier", "snowboarder"]] inputs = processor(text=texts, images=image, return_tensors="pt") outputs = model(**inputs) ``` 上述代码片段展示了如何定义待查询的目标名称列表 (`texts`) ,并通过处理器生成输入张量传递给模型完成预测操作。 #### 后处理结果解析 最后一步是对输出的结果进行解码以便于可视化或者后续逻辑判断: ```python target_sizes = [(image.size[1], image.size[0])] results = processor.post_process_object_detection(outputs=outputs, target_sizes=target_sizes, threshold=0.1)[0] for score, label, box in zip(results["scores"], results["labels"], results["boxes"]): print(f"Detected {model.config.id2label[label.item()]} with confidence {score:.4f} at location {box.tolist()}") ``` 以上脚本会打印出每个被成功识别物体的相关信息,包括置信度分数及其边界框坐标位置。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值