日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客 - 走迷宫(模拟+离线)

發布時間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客 - 走迷宫(模拟+离线) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個走迷宮的策略:

while(1){

? ? if (前面沒有障礙 && 前面還沒有走過)

? ? ? ? 前進一步();

? ? else if(右邊沒有障礙 && 右邊還沒有走過)

? ? {

? ? ? ? 右轉();

? ? ? ? 前進一步();

? ? }

? ? else

? ? ? ? 原地愣住();

}

這樣最后走出的迷宮一定是個越走越小的蛇形填數的那個樣子

1 2 3

8 9 4

7 6 5

現在給出矩陣大小n和m來表示n*m隨后給出q個詢問,詢問第幾步可以到達的位置,對于每個詢問輸出坐標

題目分析:題目不難懂,主要是該怎么實現,之前訓練的時候做過一個很類似的題目,也是優先先向前走,然后再右拐,當時的思想感覺可以放在這題目上試試,沒想到真讓我給過了。。實現的話因為n和m很大,肯定不能開矩陣先模擬,只能通過縮小范圍來模擬,因為我們知道,每次走過的邊肯定是不能再走的了,優先策略肯定是每次走一行,所以每走完一圈,整個矩陣的實際范圍就縮小了一圈,通過這樣不斷的縮小范圍來模擬就行了,對于每個查詢我們先存下來,然后離線排序,在模擬走迷宮的時候沿路把答案都更新了就行

直接看代碼好懂點,我盡量把注釋打詳細一點:

代碼:

#include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> #include<unordered_map> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e5+100;int n,m,q;struct query//存每個詢問 {int id,w;bool operator<(const query& a)const{return w<a.w;} }qu[N];pair<int,int>ans[N];void solve() {int left=0,right=m+1,down=n+1,up=0;//設置邊界(這里是開區間,也就是到達不了的邊界)int pos=1;//控制qu數組,也就是詢問數組的下標int sum=0;//記錄走過的總步數int x=1,y=0;//設置起點,為了方便處理,我將起點設為(1,0)int state=0;//方向0:→ 1:↓ 2:← 3:↑while(1){if(state==0)//→ {int k=right-y-1;//步長while(pos<=q&&k+sum>=qu[pos].w)//如果當前詢問在當前行內{ans[qu[pos].id]=make_pair(x,y+qu[pos].w-sum);//更新答案pos++;}sum+=k;//總步數實時更新y=right-1;//更新y坐標up++;//邊界改變}//下同,就不一一贅述了else if(state==1)//↓ {int k=down-x-1;while(pos<=q&&k+sum>=qu[pos].w){ans[qu[pos].id]=make_pair(x+qu[pos].w-sum,y);pos++;}sum+=k;x=down-1;right--;}else if(state==2)//← {int k=y-left-1;while(pos<=q&&k+sum>=qu[pos].w){ans[qu[pos].id]=make_pair(x,y-(qu[pos].w-sum));pos++;}sum+=k;y=left+1;down--;}else//↑ {int k=x-up-1;while(pos<=q&&k+sum>=qu[pos].w){ans[qu[pos].id]=make_pair(x-(qu[pos].w-sum),y);pos++;}sum+=k;x=up+1;left++;}state=(state+1)%4;//改變方向if(pos>q||sum==n*m)//若詢問查詢完畢,或遍歷完整個矩陣,退出循環break;}for(int i=pos;i<=q;i++)//更新剩余的答案ans[i]=make_pair(x,y); }int main() { // freopen("input.txt","r",stdin); // ios::sync_with_stdio(false);int w;cin>>w;while(w--){scanf("%d%d",&n,&m);int t;scanf("%d",&q);for(int i=1;i<=q;i++)//讀入詢問,離線處理{scanf("%d",&qu[i].w);qu[i].w++;qu[i].id=i;}sort(qu+1,qu+1+q);solve();for(int i=1;i<=q;i++)//直接輸出答案即可printf("(%d,%d)\n",ans[i].first,ans[i].second);}return 0; }

?

總結

以上是生活随笔為你收集整理的牛客 - 走迷宫(模拟+离线)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品欧美国产 | 姐姐你真棒插曲快来救救我电影 | 波多野结衣高清在线 | 亚洲国产999| 中文字幕在线不卡 | 中国美女一级黄色片 | 欧美日韩精品国产 | 欧美一区二区激情 | 国产黄色片在线免费观看 | 丁香美女社区 | 国产视频精品在线 | av中文网站 | 日韩精品一区不卡 | kendra lust free xxx| 怨女1988国语版在线观看高清 | 中文字幕一区二区三区av | 日韩三级一区二区 | 国产地址一 | 日韩精品在线免费观看 | 一级黄色性视频 | 884aa四虎影成人精品一区 | 东北少妇高潮抽搐 | 91黄色在线视频 | 国产精品另类 | 91视频入口 | 国产精品国产三级国产专区53 | 天天天天天天干 | 色综合久久88色综合天天6 | 九色亚洲 | 97伊人网| 国产丝袜美腿一区二区三区 | 男人操女人动态图 | 精品日韩在线观看 | 狠狠干青青草 | 欧美精品二区三区四区免费看视频 | 日本电影成人 | 中文字幕另类 | 就操网 | 超碰精品在线观看 | 特级丰满少妇一级aaa爱毛片 | 91久久久久久久 | 天天拍夜夜爽 | 日韩在线播放视频 | 伊人春色在线视频 | 欧美做爰xxxⅹ性欧美大片 | 麻豆成人网 | 国产精品99久久久久久久久久久久 | 欧美三级少妇高潮 | 久久女人网 | 高清国产午夜精品久久久久久 | 亚洲深夜福利 | 在线观看波多野结衣 | 无码日韩精品视频 | 绯色av一区 | japanesehdxxxx | 国产成人久久精品77777综合 | 国产日日干 | 国产一级特黄aaa大片 | 老师张开让我了一夜av | 91精品一区二区 | 国产宾馆实践打屁股91 | 无码精品黑人一区二区三区 | 国产无套内射又大又猛又粗又爽 | 亚洲av无码乱码国产精品久久 | 久青草资源福利视频 | 中文av网| 亚洲色图14p | 啄木乌欧美一区二区三区 | www.污网站| 国产一级片黄色 | 少妇被躁爽到高潮无码人狍大战 | 亚洲无人区小视频 | 成人美女毛片 | 中文字幕日韩欧美一区二区 | 能在线看的av | 国产精品人人爽人人爽 | 欧美熟妇精品黑人巨大一二三区 | 精品无码m3u8在线观看 | 国产精品久久久久一区二区 | 99热com| 粉嫩精品久久99综合一区 | 韩国黄色网址 | 日本精品成人 | 色噜噜在线观看 | 可以免费观看的av | 超碰97人人爱| 亚洲嫩草影院 | 成人综合在线观看 | 亚洲在线视频免费观看 | 国产精品一线天粉嫩av | av字幕网| 中文字幕影片免费在线观看 | 天天操夜夜操夜夜操 | 国产一区二区三区欧美 | 无码精品国产一区二区三区免费 | 五月天导航 | 中文字幕一区二区三区免费视频 | 国产尤物av尤物在线看 | 免费日b视频 |