码迷,mamicode.com
首页 > 其他好文 > 详细

CF 875B Sorting the Coins

时间:2017-10-25 19:56:05      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:iostream   ret   ++   硬币   交换   codeforce   include   space   ons   

题目链接: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

标签:iostream   ret   ++   硬币   交换   codeforce   include   space   ons   

原文地址:http://www.cnblogs.com/Leonard-/p/7730398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!