2019ICPC(南昌) - Magic Master(模拟)
生活随笔
收集整理的這篇文章主要介紹了
2019ICPC(南昌) - Magic Master(模拟)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目鏈接:點(diǎn)擊查看
題目大意:桌子上有按順序排列n張牌,我們需要循環(huán)進(jìn)行以下操作,直到牌沒有
然后給出q次詢問,每次詢問第k張牌是什么時(shí)候拿出來的
題目分析:比賽的時(shí)候不知道被誰帶偏了,一直在考慮約瑟夫環(huán),其實(shí)這就是個(gè)簡單模擬,只是用vector寫完后一直RE,連本地都跑不過,賽后看了別人的代碼,發(fā)現(xiàn)真的好簡單,偷學(xué)一波deque,感覺自己已經(jīng)是stl依賴癥晚期了,懶死了
對(duì)了,這個(gè)題給的數(shù)據(jù)范圍是4e8,如果用一個(gè)deque模擬,用一個(gè)數(shù)組存結(jié)果的話,會(huì)爆內(nèi)存,所以只能用一個(gè)deque模擬最后的結(jié)果,也可以在一個(gè)數(shù)組上操作,我看網(wǎng)上有大佬推出來的結(jié)論是,倒著從n遍歷,將每個(gè)數(shù)字插入到最前端,然后執(zhí)行m次循環(huán),這樣能直接得到答案,真的太強(qiáng)了。。反向模擬
上代碼吧:模擬即可
#include<iostream> #include<string> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<cstdio> #include<queue> #include<deque> #include<memory> using namespace std; typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e8+100;deque<int>q;int main() {int w;cin>>w;while(w--){int n,m;scanf("%d%d",&n,&m);q.clear();q.push_front(n);for(int i=n-1;i>1;i--){q.push_front(i);for(int i=1;i<=m;i++){q.push_front(q.back());q.pop_back();}}q.push_front(1);int t;scanf("%d",&t);while(t--){int x;scanf("%d",&x);printf("%d\n",q[x-1]);}}return 0; }?
總結(jié)
以上是生活随笔為你收集整理的2019ICPC(南昌) - Magic Master(模拟)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019ICPC(南昌) - Fire-
- 下一篇: 2019ICPC(南昌) - Hello