第四屆上海理工大學程序設計全國挑戰賽---昨日方舟

知識點:模擬
?

題目描述

《昨日方舟》是一款塔防類游戲。在游戲中,我們要通過部署角色來抵御怪物的入侵。在這款游戲中,有一名角色名字為 “今”,他的能力為能夠在地圖上部署小蛇,小蛇在某些條件下可以與其他小蛇合體,成為大蛇,大蛇不能再與其他小蛇或大蛇合成。

現在有一個大小為 nnn 行 mmm 列的地圖,自上往下分別為第 111 行……第 nnn 行,自左往右為第 111 列……第 mmm 列。格子分為可部署格和不可部署格。小蛇只能部署在可部署格上,并且小蛇在部署時,會有一個確定的朝向。

大蛇的合成規則如下:

1. 若當前部署的小蛇所面向的相鄰格子中存在另一條小蛇,則當前部署的小蛇消失,面向的小蛇變成大蛇,朝向不變(與原來的小蛇一致)。
2.?若 1 中情況不滿足,但存在已經部署的其他小蛇面向當前部署的格子,且與當前部署的格子相鄰,那么這些小蛇中最后一條部署的小蛇消失,當前部署的小蛇變成大蛇,朝向與當前部署小蛇一致。
現在給定 n×mn \times mn×m 的地圖的每個格子的可部署情況,以及無限只待部署的小蛇,初始狀態下地圖中不存在小蛇與大蛇,并且按照時間順序給定 kkk 次嘗試部署小蛇的位置和朝向(可能嘗試部署在其他小蛇,大蛇和不可部署位置上,此時視作部署失敗,不會發生任何事),請輸出最后地圖上的小蛇與大蛇的存在情況。

輸入描述:

 

輸入第 111 行包含 333 個用空格分隔的正整數 n,m,kn, m, kn,m,k ,代表地圖的大小與嘗試部署的次數。(1≤n,m≤103,?1≤k≤2×105)(1 \leq n,m \leq 10^3,\ 1 \leq k \leq 2\times 10 ^ 5 )(1≤n,m≤103,?1≤k≤2×105)

接下來 nnn 行每行有 mmm 個用空格分隔的整數,第 iii?行第 jjj 個整數代表了地圖中第 iii 行第 jjj 列格子的可部署情況,“0”?代表不可部署格,“1”?代表可部署格子。

最后?kkk 行,每行包含 222 個整數 x,?yx,\ yx,?y 與一個字符 ccc ,第 iii 行表示按照時間順序,第 iii 次嘗試部署的小蛇位置為第 xxx 行第 yyy 列,且朝向為 ccc 。 (1≤x≤n,?1≤y≤m,?c∈{u,d,l,r}1 \leq x \leq n,\ 1 \leq y \leq m,\ c \in \{u,d,l,r\}1≤x≤n,?1≤y≤m,?c∈{u,d,l,r},u,d,l,ru, d, l, ru,d,l,r 分別代表朝向為上、下、左、右)。

輸出描述:

輸出 nnn 行,每行包含 mmm 個字符,第 iii 行第 jjj 列的字符 ccc 代表最終地圖上第 iii 行第 jjj 列格子的狀態。“X” 表示該格為不可部署區域,“O” 表示該格為可部署區域,但不存在小蛇與大蛇部署在該格,“u”, “d”, “l”, “r” 表示該格部署了小蛇,并且朝向為上、下、左、右,“U”, “D”, “L”, “R” 表示該格部署了大蛇,且朝向為上、下、左、右。

示例1

輸入

復制2 2 4 1 1 1 1 1 1 r 1 2 l 2 1 l 2 2 r

2 2 4
1 1
1 1
1 1 r
1 2 l
2 1 l
2 2 r

輸出

RO
lr

示例2

輸入

3 9 12
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1
1 2 d
2 1 r
3 2 u
2 2 r
1 5 d
2 4 r
3 5 u
2 5 d
1 8 d
2 7 r
3 8 u
2 8 r

輸出

OdOOdOOdO
rROrOOrXO
OOOOUOOuO
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
char gz[1010][1010];
int dx[]={-1,1,0,0};//上下左右
int dy[]={0,0,-1,1};
int t[1010][1010];
struct ty{int x,y,t;  
};
bool cmp(ty a,ty b){return a.t>b.t;
}
int main(){scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){int a;cin>>a;if(a) gz[i][j]='O';else gz[i][j]='X';}}for(int i=1;i<=k;i++){int a,b;char c;cin>>a>>b>>c;if(gz[a][b]!='O') continue;t[a][b]=i;if(c=='u'){int x=dx[0]+a,y=dy[0]+b;if(gz[x][y]=='d'||gz[x][y]=='u'||gz[x][y]=='l'||gz[x][y]=='r') {if(gz[x][y]=='u') gz[x][y]='U';else if(gz[x][y]=='d') gz[x][y]='D';else if(gz[x][y]=='l') gz[x][y]='L';else if(gz[x][y]=='r') gz[x][y]='R';continue;}}else if(c=='d'){int x=dx[1]+a,y=dy[1]+b;if(gz[x][y]=='d'||gz[x][y]=='u'||gz[x][y]=='l'||gz[x][y]=='r') {if(gz[x][y]=='u') gz[x][y]='U';else if(gz[x][y]=='d') gz[x][y]='D';else if(gz[x][y]=='l') gz[x][y]='L';else if(gz[x][y]=='r') gz[x][y]='R';continue;}}else if(c=='l'){int x=dx[2]+a,y=dy[2]+b;//cout<<x<<" "<<y<<" "<<gz[x][y]<<endl;if(gz[x][y]=='d'||gz[x][y]=='u'||gz[x][y]=='l'||gz[x][y]=='r') {if(gz[x][y]=='u') gz[x][y]='U';else if(gz[x][y]=='d') gz[x][y]='D';else if(gz[x][y]=='l') gz[x][y]='L';else if(gz[x][y]=='r') gz[x][y]='R';continue;}}else if(c=='r'){int x=dx[3]+a,y=dy[3]+b;if(gz[x][y]=='d'||gz[x][y]=='u'||gz[x][y]=='l'||gz[x][y]=='r') {if(gz[x][y]=='u') gz[x][y]='U';else if(gz[x][y]=='d') gz[x][y]='D';else if(gz[x][y]=='l') gz[x][y]='L';else if(gz[x][y]=='r') gz[x][y]='R';continue;}}vector<ty> v;for(int j=0;j<4;j++){int x=a+dx[j];int y=b+dy[j];if(x>n||x<1||y>m||y<1) continue;if(j==0&&gz[x][y]=='d') v.push_back({x,y,t[x][y]});else if(j==1&&gz[x][y]=='u') v.push_back({x,y,t[x][y]});else if(j==2&&gz[x][y]=='r') v.push_back({x,y,t[x][y]});else if(j==3&&gz[x][y]=='l') v.push_back({x,y,t[x][y]});}if(v.size()==0){gz[a][b]=c;continue;}sort(v.begin(),v.end(),cmp);for(int j=0;j<v.size();j++){if(c=='u')gz[a][b]='U';else if(c=='d') gz[a][b]='D';else if(c=='r') gz[a][b]='R';else if(c=='l') gz[a][b]='L';gz[v[j].x][v[j].y]='O';break;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<gz[i][j];}cout<<endl;}
}

WA的原因:

1.dx和dy數組的上下和左右弄反了,好多次了!!!

2.排序排反了,是最晚放置的,我排成最早了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10999.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于 IIS 開啟匿名訪問網站仍要賬號密碼登錄網站的解決方法

歡迎關注公總號【云邊小網安】 問題提出&#xff1a;發現雖然勾選了允許匿名訪問網站&#xff0c;但在訪問某一網站的時候仍然需要登錄賬號密碼 解決方法一&#xff1a;登錄管理員賬號密碼解決方法二&#xff1a;添加訪問網站文件夾的用戶 訪問某一網站本質上來講&#xff0…

C++入門必讀-Qt的安裝與配置

QT簡介 Qt是一個跨平臺的C圖形用戶界面應用程序框架。它為應用程序開發者提供建立圖形界面所需的所有功能。它是完全面向對象的&#xff0c;很容易擴展&#xff0c;并且允許真正的組件編程。 QT下載 訪問下載網站: Index of /archive/qt 安裝編譯器 QT安裝 建議安裝之前將網絡斷…

1064 朋友數

solution 給出n個整數&#xff0c;統計可能的位數和&#xff0c;并按升序輸出&#xff08;考慮用set實現&#xff09; #include<iostream> #include<set> using namespace std; int main(){set<int> st;int n, x, sum;scanf("%d", &n);while…

前端Vue架構

1 理解&#xff1a; 創建視圖的函數&#xff08;render&#xff09;和數據之間的關聯&#xff1b; 當數據發生變化的時候&#xff0c;希望render重新執行&#xff1b; 監聽數據的讀取和修改&#xff1b; defineProperty&#xff1a;監聽范圍比較窄&#xff0c;只能通過屬性描…

Docker 直接運行一個 Alpine 鏡像

由于鏡像很小&#xff0c;下載時間往往很短&#xff0c;讀者可以直接使用 docker run 指令直接運行一個 Alpine 容器&#xff0c;并指定運行的 Linux 指令&#xff0c;例如&#xff1a; PS C:\Users\yhu> docker run alpine echo 123 Unable to find image alpine:latest lo…

Commit failed (details follow):is out of date

Commit failed (details follow):is out of date 關于SVN提交時報out-of-date錯誤的解決方法 提交項目文件時&#xff0c;報如下的信息&#xff1a; Item is out-of-date svn: Commit failed (details follow): svn: Item ‘/xxx/xxx/xxx/xxx/xxx/xxx’ is out of date 原因&…

手寫Spring5【筆記】

Spring5【筆記】 前言前言推薦Spring5【筆記】1介紹2手寫 最后 前言 這是陳舊已久的草稿2022-12-01 23:32:59 這個是刷B站的時候&#xff0c;看到一個手寫Spring的課程。 最后我自己好像運行不了&#xff0c;就沒寫。 現在2024-5-12 22:22:46&#xff0c;發布到[筆記]專欄中…

隊列(詳解)

一.隊列的概念 隊列&#xff08;Queue&#xff09;是一種常見的數據結構&#xff0c;它按照先進先出的原則管理數據。這意味著最先進入隊列的元素將被最先移出隊列&#xff0c;類似于現實生活中排隊的場景。 在隊列中&#xff0c;數據項被添加到隊列的一端&#xff0c;稱為隊尾…

cmu15445 2023fall project3 詳細過程(下)QUERY EXECUTION

QUERY EXECUTION task3/task4 Task #3 - HashJoin Executor and Optimization1、HashJoin1.1 思路1.2 代碼 2 NestedLoopJoin優化為HashJoin2.1 思路2.2 代碼 Task #4 Sort Limit Executors Top-N Optimization Window Functions1、Sort1.1 思路1.2 代碼 2、Limit Executors2…

數據可視化第五天(讀取文件獲得男生女生身高信息,并且可視化在一個圖像)

文件 需要學生文件的可以私信我 過程 利用numpy的loadtxt文件讀取學號&#xff0c;性別&#xff0c;和身高。 import numpy as np import matplotlib.pyplot as pltfilename/Users/oommnn/Desktop/python學習/數據分析/網課資料/第04天/student-data.txtuser_infonp.dtype(…

文獻閱讀——LPPLS(2)

A study on the bursting point of Bitcoin based on the BSADF and LPPLS methods 文獻來源[2] Yao, Can-Zhong, and Hong-Yu Li. “A study on the bursting point of Bitcoin based on the BSADF and LPPLS methods.” The North American Journal of Economics and Financ…

貓頭虎分享已解決Bug || **Vue.js腳手架安裝失敗** Error: unable to fetch template`

貓頭虎分享已解決Bug &#x1f42f; || Vue.js腳手架安裝失敗 &#x1f6ab;Error: unable to fetch template 博主貓頭虎的技術世界 &#x1f31f; 歡迎來到貓頭虎的博客 — 探索技術的無限可能&#xff01; 專欄鏈接&#xff1a; &#x1f517; 精選專欄&#xff1a; 《面試題…

CodeTop 高頻筆試題總結(持續更新)

&#x1f3c6; 頻率從高到低排序 &#x1f468;?&#x1f3eb; 參考的頻率數據&#xff1a;CodeTop &#x1f468;?&#x1f3eb; 力扣hot100 無重復字符的最長子串 雙指針 滑動窗口 哈希&#x1f468;?&#x1f3eb; 力扣hot100 反轉鏈表 指針 遞歸 一題多解&#x1f468;?…

7. path路徑繪制:使用path繪制曲線

曲線在SVG中通常是通過貝塞爾曲線命令來繪制的&#xff0c;包括二次貝塞爾曲線&#xff08;Q&#xff09;和三次貝塞爾曲線&#xff08;C&#xff09;。這些命令允許我們創建平滑的曲線路徑。 貝塞爾曲線的原理 貝塞爾曲線的基本原理是通過控制點和錨點來定義一條曲線的形狀。…

命名規范總結Java

小駝峰命名 主要用于變量和方法的命名&#xff0c;當標識符是一個單詞時首字母小寫&#xff0c;當標識符為多個單詞時第一個單詞首字母小寫&#xff0c;其他單詞首字母大寫 大駝峰命名 主要用于類(Class)名等。標識符各個單詞首字母大寫。 全部大寫命名 常量名 全部小寫命…

持續總結中!2024年面試必問 100 道 Java基礎面試題(四十一)

上一篇地址&#xff1a;持續總結中&#xff01;2024年面試必問 100 道 Java基礎面試題&#xff08;四十&#xff09;-CSDN博客 八十一、Java內存模型是什么&#xff1f; Java內存模型&#xff08;Java Memory Model, JMM&#xff09;是Java虛擬機&#xff08;JVM&#xff09;…

海豚知道知識付費平臺,大V都在用,新手也能做,網絡營銷是什么?如何向銷售轉化?

我國的市場營銷已經全面步入互聯網時代&#xff0c;教育行業也逐漸網絡化&#xff0c;通過互聯網發家壯大的機構比比皆是&#xff0c;然而仍舊有很多中小型教育培訓機構&#xff0c;沒有從事網絡營銷推廣&#xff0c;或者從事了效果非常不理想。網絡營銷是什么&#xff0c;如何…

流暢的python-學習筆記_對象引用、可變性、垃圾回收

變量不是盒子 即變量是引用&#xff0c;而不是實際內存&#xff0c;多個標識賦值相同變量時&#xff0c;多余標識是引用 標識、相等性、別名 比較對象的值&#xff0c;is比較對象的id。實際調用對象的__eq__方法。is速度比快&#xff0c;因為is不能重載&#xff0c;省去了尋…

UNIT6,NFS網絡文件系統的應用

實驗要求&#xff1a; 1.配置2臺服務器要求如下&#xff1a; a&#xff09;服務器1&#xff1a; 主機名&#xff1a;user-server.timinglee.org ip地址&#xff1a; 172.25.254.100 配置好軟件倉庫 b&#xff09;服務器2&#xff1a; 主機名&#xff1a;storage-server.timing…

力扣 300. 最長遞增子序列 python AC

動態規劃 dp[i]表示到當前位置為止最多個數的遞增子序列 簡單的對每個位置從頭遍歷 class Solution:def lengthOfLIS(self, nums):size len(nums)dp [1] * sizefor i in range(1, size):for j in range(i):if nums[i] > nums[j]:dp[i] max(dp[i], dp[j] 1)return max…