#440 Div.2 D.Sorting the Coins 硬币排序问题
2017-10-21 15:42
393 查看
原题链接:
sort the coins
大意:
一排硬币排成一排,有两种硬币,把其中一种按照两两交换的规则归到右侧,求需要归并多少次才能把所有这种硬币归到右侧。
分析:
由于硬币是按照时间顺序放的,容易想到第n个答案和n-1个答案必然存在某种关系。
找规律可以发现:
每次放置一个新的点,答案都比前一个多一,当这个点放在末尾时,相当于回退一个。
每次移动后 每个硬币就是在它的下一个非法硬币的前一个位置
算法每运行一次就是一枚非法硬币归位
具体实现:
sort the coins
大意:
一排硬币排成一排,有两种硬币,把其中一种按照两两交换的规则归到右侧,求需要归并多少次才能把所有这种硬币归到右侧。
分析:
由于硬币是按照时间顺序放的,容易想到第n个答案和n-1个答案必然存在某种关系。
找规律可以发现:
每次放置一个新的点,答案都比前一个多一,当这个点放在末尾时,相当于回退一个。
每次移动后 每个硬币就是在它的下一个非法硬币的前一个位置
算法每运行一次就是一枚非法硬币归位
具体实现:
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair <int,int> pii; #define mem(s,t) memset(s,t,sizeof(s)) #define D(v) cout<<#v<<" "<<v<<endl #define inf 0x3f3f3f3f #define pb push_back //#define LOCAL const int mod=1e9+7; const int MAXN =3e5+10; int vis[MAXN],ret[MAXN]; int main() { #ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int n; scanf("%d",&n); mem(vis,0); mem(ret,0); int cnt=0,last=n; ret[0]=1; for(int i=1;i<=n;i++){ cnt++; int x; scanf("%d",&x); vis[x]++; if(x==last) while(vis[last]){ cnt--; last--; } ret[i]=cnt+1; } for(int i=0;i<=n;i++) printf("%d%c",ret[i]," \n"[i==n]); return 0; }
相关文章推荐
- 【反序表+树状数组】Codeforces Round #441(Div.2)D[Sorting the Coins]题解
- Codeforces Round #441 (Div.2) - D - Sorting the Coins
- Codeforces Round #441 (Div.2) - D - Sorting the Coins xjb搞搞。
- Codeforces Round #441 (Div.2) - D - Sorting the Coins xjb搞搞。
- Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题
- HDU 3348 coins 贪心 最少/最多硬币问题
- 母函数的一些问题:Ignatius and the Princess III&&Square Coins&&选课时间(题目已修改,注意读题)&&Holding Bin-Laden Captive!
- POJ 3260 The Fewest Coins 最少硬币个数(完全背包+多重背包,混合型)
- codeforces——875B —— Sorting the Coins
- 洛谷 P2851 [USACO06DEC]最少的硬币The Fewest Coins
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) D. Sorting the Coins
- Codeforces Round #441 D. Sorting the Coins
- 独角兽排序问题 Codeforces Round #259(Div.2)
- Codeforces Round #441 D. Sorting the Coins(线段树)
- CodeForces 875B ( Sorting the Coins) 难度蛮大的一道题目 题目说了一堆主要还是找规律
- Sorting Information with Comparable -Swift中实例的排序问题
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) D. Sorting the Coins 乱搞
- Codeforces 875B (Round 441 D1) Sorting the Coins
- Codeforces Round #441 D. Sorting the Coins(模拟)
- UVA 11292 The Dragon of Loowater(排序问题系列)