日韩性视频-久久久蜜桃-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; }

?

總結

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

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

主站蜘蛛池模板: 天堂资源地址在线 | 日本少妇裸体做爰 | 亚洲一区二区三区四区视频 | www在线观看视频 | 欧美一级片播放 | 亚洲一区二区三区视频 | 国产在线拍揄自揄拍无码视频 | 亚洲天堂网视频 | 日韩美女在线视频 | 成人免费看片'在线观看 | 欧美成人h版在线观看 | 午夜伦理av | 少妇人妻精品一区二区三区 | 国产成人福利视频 | 蜜臀久久99精品久久久久宅男 | 伊人网影院 | 99热国| 亚洲免费一区视频 | 美女扒开腿让男生捅 | 青青青草视频在线观看 | 69影院在线观看 | 毛片av在线观看 | 久久久99久久 | 精品熟妇一区二区三区 | 免费网站污 | 韩国午夜av| 欧美小视频在线观看 | 男女插插插视频 | 成人免费短视频 | 中文字幕mv| 国产伦精品一区二区三区免费迷 | 四虎影视黄色 | 亚洲熟伦熟女新五十路熟妇 | 亚洲免费高清 | a级黄片毛片 | 国产精品丝袜 | 一区二区三区资源 | 精品国产美女 | 夜夜爽av福利精品导航 | 向着小小的花蕾绽放 | 桃色激情网 | 激情四射网站 | 中文字幕一区二区三区人妻 | 国产黄色三级网站 | 欧美日本色 | 国产制服91一区二区三区制服 | 亚洲五十路 | 自拍视频在线 | 免费看又黄又无码的网站 | 少妇献身老头系列 | 久久久久亚洲av成人网人人软件 | 在线观看成人av | 人人妻人人澡人人爽久久av | av不卡网| 免费亚洲网站 | 蜜桃中文字幕 | 国产精品嫩草影院桃色 | 国产永久毛片 | 免费av在线播放网址 | 色女人av| 成人手机视频在线观看 | 成人免费观看在线视频 | 涩涩视频在线播放 | 欧美日韩1区 | 中文字幕第31页 | 91在线视频观看 | 免费瑟瑟网站 | 色综合久久中文字幕无码 | 在线午夜 | 亚洲精品福利在线观看 | 大尺度av在线 | 欧美另类xxxx野战 | 怡红院亚洲 | 久久久久久亚洲av无码专区 | 在线观看二区 | 亚欧洲精品在线视频免费观看 | 色天天干| 色综合视频在线观看 | 国产成人精品无码片区在线 | 亚洲精品男人的天堂 | 女人做爰全过程免费观看美女 | 欧美性xxxxx极品少妇 | 欧美一区二区三区四 | 日日免费视频 | 操她视频网站 | 啪网址 | 日本精品人妻无码免费大全 | 亚洲精品20p | 天天操夜夜干 | 亚洲资源网 | 国产毛片在线 | 国产激情对白 | 国产三级做爰高清在线 | 欧美无玛| 日美女网站 | 久久特级毛片 | 好男人在线视频www 亚洲福利国产 | 欧美性受黑人性爽 | 邵氏电影《金莲外传2》免费观看 |