2019icpc南昌网络预赛E(模拟)

https://nanti.jisuanke.com/t/41352

这题很看读题,平时就要训练把题目读懂,把每个细节都注意到的能力!

题意:

一副牌顺序排列,魔术师会洗牌。他要求观众先任意说一个小于10的数(这是第二个步骤进行的次数),并且做两步操作,直到牌全取完为止,问我们洗牌后的第几张牌对应的号码是多少?

题意有些绕,还是自己先去读读。

思路:

deque模拟,数据结构

数组模拟

对于这道模拟题,思路就是直接模拟,按照题意进行m次放牌操作,对deque的队头和队尾进行操作

#include
using namespace std;
const double eps  = 0.00000001;
const int N = 1e7;
#define INF 0x3f3f3f3f
deque st;
int main()
{
    int T,n,m,k;int tmp;
    scanf("%d",&T);
    while(T--)
    {
      scanf("%d%d%d",&n,&m,&k);
      st.clear();
      int l=n-1;
      st.push_back(n);
      while(l>1)
      {
          st.push_front(l--);
          for(int i=1;i<=m;i++)
          {
              tmp=st.back();
            st.pop_back();
            st.push_front(tmp);
          }
      }
      st.push_front(1);
      for(int  i = 1;i <= k;++i)
      {
          scanf("%d",&tmp);
          printf("%d\n",st[tmp-1]);
      }
    }
}

 

你可能感兴趣的:(STL)