1 条题解

  • 1
    @ 2026-7-24 15:54:13

    💡 思路

    1. 开两个 vector ,一个存整张地图数据的索引,一个存数据

      • 这么写可以做到更改大片数据的时间复杂度为 O(1)O(1) ,虽然这样访问数据的代码就变成了 data[index[x][y]] ,有点绕
    2. 为每小块陆地 (#) 都BFS,如果以前那大块陆地 (###) 算过结果,就跳过

      • 先为数据 vector 增加一个 0 ,然后给BFS到的陆地对应的索引 vector 设为最后一项
      • 以后只要还是在那大块陆地上,加面积只需要data[index[x][y]]++
    3. 查询时,去查 data[index[x][y]] ,其中x,yx,y两个变量就是题目中让你输入的

    🤔 BFS 实现逻辑

    如果还不会 BFS 的看 OI Wiki ,这里不赘述

    1️⃣ 准备

    开一个存搜索位置的队列,为数据 vector 增加项目,并以最后一项 (n-1) 作为此次搜索预设索引值,以及地图索引表 (二维数组, vectorvector 和数据类型为 vector 的数组均可)

    2️⃣ 搜索

    在地图对应位置标记预设索引,数据vector的 预设索引项 ++

    3️⃣ 往下搜

    下一个位置能搜索的条件为:

    1. 没越界
    2. 是陆地
    3. 没被标记索引值

    然后给对应位置标记预设索引 (标记了两次,可能要改改,但是能过) ,接着 q.push({tx, ty})

    💻 代码

    被我加密了,解密器,额外使用了模式 x ,偏移量 1997

    /lˋ8	¢↓iG3£b◎△e○~BCˋ〇¥… ↓▲─〓¢M2Voe┅◎━_
    4¥F66n0V	VbE←En0e→m◆C◇ H↓85〆▲★※L〆 〆i〇m5¥D→←Od…£ G2MT━◆	JN5C┃i■↑9Q◆々ˋDE◎ejk ┄※│a…·◎e·…□C☆…7●k┄●Z0→d◇〓↑M7T▽j▲ 々RDR3←9 ̄9A6RI9·↑_
    ON§ˋ£~ME┅ ̄Gnˊ□9¥bI─◎…々S▼〆91━※☆B¥◎T┅e┃●々I↑¢Q7¢〆▲Z IˊQoOˇF│¢e○£H1━│◇3○V ̄E○▼→bB	3〓iM_
    klH↓d…▲☆Lˊ│↓bOJ▼○ ̄↓▼1○	→OR~G1BDT~▲◇bˊSH¢3●LbA◎△n☆1〆EZ▼┅●bmCJ→■9Fj£△┅ˇD〇│ 0 j↑8〓 j↓QZe→7L〇l2★abQˋB〇I·ˊ7I━●┄◎F·¢l£◆□j◇6a○m	A▽ˊlH〆▽jAoH£┄ReVˊI¢ˊ·△	↑◇ ̄5k5CZ2_
    〓▽☆j┃9▼Nm2━A々↓3〆~■bˋF△8	↓J7¥o§RHJ9B━▽↑★↓TF4VF↑7→L6◇★◎n¢SER◇an○_
    ┅■3△LO	SQ▽l9G3←0iHI ̄HI┅△LQ△△■£Z0〇←G76~↓…¥oHe◇m8i★S·◆Lki┄↓3☆↑□─¢Z□O│b◆○┄~━c↓L※BBD□┃B┃3V▲O8※22Di●↓8I↑a■◆k~NH→▲1~●om〆▼6M─◆■G£ˋ·ZZ─d■S9※eo〆bL8~j▽ZC━┄┅RBˋI◎ˊ ̄←1Z0GEalGHlHG·o1Rb┅5◆│lM々aGEo▲97│0n□J2ndI0〇l○·i│a◎m§┅Mi┃i1△◆★ˊ bC─aH┄※m┃Z┃┅┄2 0▼→D_
    RO1d0·Gi━l2┃H─ˋ9Hd~M	Z£◎ZSH4■nid※S─▽~〆☆E8Q·ˋeN~┅〇→_
    0l↓Z□l→☆jCb↑ˋV△jIQj£〓k ─ ■I£_
    GJM3m※16┄○Hl─E○C々m93┅§…S←QED8┅S〇b  ̄iT6↑0△〇C●¥〓┃│ ̄◇mm£jI1DiA¢D〆k~~○■Qlm○8¢C0Rk E※々←4~BB◆ ~~│━☆\
    
    • @ 2026-7-24 15:56:04

      这么快就发题解,我才刚补完题。。。

  • 1

信息

ID
233
时间
1000ms
内存
256MiB
难度
3
标签
递交数
183
已通过
17
上传者