简单题。倒着做,每次隔一个扔一个到最后,模拟一下就好了。\(O(q \log n)\)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
LL n,Q;
int main(){
scanf("%lld%lld",&n,&Q);
while(Q--){
LL p; scanf("%lld",&p);
LL pre=p-1,lst=n-p;
while(pre&1){
lst+=(pre-1)/2; p+=lst+1; pre=lst; lst=0;
}
if(p==(n-1)*2) printf("%lld\n",n);
else printf("%lld\n",(p+1)/2);
}
return 0;
}