zoukankan      html  css  js  c++  java
  • 学大伟业DAY2模拟赛

    T1忍者钩爪

    题目描述

    小Q是一名酷爱钩爪的忍者,最喜欢飞檐走壁的感觉,有一天小Q发现一个练习使用钩爪的好地方,决定在这里大显身手。

    场景的天花板可以被描述为一个无穷长的数轴,初始小Q挂在原点上。数轴上有N个坐标为整数的圆环供小Q实现钩爪移动。具体操作为:小Q可以将钩爪挂到圆环上,进而荡到关于圆环坐标轴对称的位置。例如小Q在3,圆环在7,则小Q可以通过该圆环移动到11。

    现在一个问题难倒了小Q,如何判断自己能否到达某个整点呢?

    输入输出格式

    输入格式:

     

    第一行两个整数N,M,表示圆环的数量和询问组数

    接下来一行共N个整数描述每个圆环的坐标(可重复)

    接下来M行每行包含一个整数描述询问

     

    输出格式:

     

    共M行对应M个询问,若小Q能移动到目标点,输出Yes,否则输出No

     

    输入输出样例

    输入样例#1: 
    2 2
    1 3
    3
    4
    输出样例#1: 
    No
    Yes

    说明

    对于30%的数据,M≤N≤10,输入坐标绝对值均小于1000。

    对于60%的数据,M≤N≤5000。

    对于100%的数据,M≤N≤100000,输入坐标绝对值均小于10^18。

    题目大意:从原点0,可以通过钩子跳到当前点关于钩子的对称点。

    题解:Yes和No写错了..以为没有负半轴....明天再蠢后空翻吃s

    30%记忆化搜索...

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    using namespace std;
    map<int,bool>q;
    int n,m,p[5202];
    
    void dfs(int x){
        if(q[x])return;
        if(x>1000||x<-1000)return;//没有死循环 
        q[x]=true;
        for(int i=1;i<=n;i++){
            dfs(2*p[i]-x);
        }
    }
    
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)scanf("%d",&p[i]);
        dfs(0);
        for(int i=1;i<=m;i++){
            int x;
            scanf("%d",&x);
            if(q[x])printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
    30

    正解

  • 相关阅读:
    Linux cat命令详解
    服务器使用itchat.,hotReload=True,自动LOG OUT
    ubantu,安装pip3,修改默认Python版本号
    Linux SSH 远程登录错误解决办法 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    微信防撤回python3
    微信定时发送天气python3
    微信,爬取每日一句,文本,schedule函数定时发送消息
    微信,爬取每日一句,发送至多人,多个群
    python中的轻量级定时任务调度库:schedule
    Django基础02
  • 原文地址:https://www.cnblogs.com/zzyh/p/7725518.html
Copyright © 2011-2022 走看看