CF 875B Sorting the Coins
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF 875B Sorting the Coins相关的知识,希望对你有一定的参考价值。
题目链接:http://codeforces.com/problemset/problem/875/B
题意:一开始给定n个不流通的硬币,每次增加让其中一个硬币流通,流通的硬币的下一个如果不流通,那么就交换两个硬币。
直到两个流通的硬币在一起,或者两个不流通的硬币在一起,那就不用交换了。初始观察次数为1,操作完再继续观察,不符合继续操作(交换)。
求最后的观察次数。
题解:每次把流通的硬币都拿来往后推,看的次数可以看成当前每个硬币推到后面一堆的时候需要的次数。
已经在后面一堆的硬币当然不用推啦。
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 const int N=300000+10; 6 int num[N],vis[N]; 7 8 int main(){ 9 int n,ans=1; 10 cin>>n; 11 for(int i=1;i<=n;i++) cin>>num[i]; 12 cout<<1; 13 int pos=n; 14 for(int i=1;i<=n;i++){ 15 vis[num[i]]=1; 16 ans++; 17 while(vis[pos]) pos--,ans--; 18 cout<<" "<<ans; 19 } 20 return 0; 21 }
以上是关于CF 875B Sorting the Coins的主要内容,如果未能解决你的问题,请参考以下文章
codeforces 876 D. Sorting the Coins
[CF930E]/[CF944G]Coins Exhibition