您的位置:首页 > 其它

Codeforces Round #441 D. Sorting the Coins

2018-01-28 09:15 411 查看
原题连接:http://codeforces.com/contest/876/problem/D

题目大意:交换硬币啦啦,给定唯一能进行的操作,要求在某特定局面下要达到目标状态的操作数

思路:经过观察可以发现,最后的状态总是OOOXXX式的,也就是说在一个当前状态,末尾的一堆X不用管,然后看末尾的一堆X前面有几个X,演练下可以知道 XXOXXX XOXOXXX 这两种情况达到目标状态的操作数都是末尾X前面的X数目+1

AC代码:
#include <cstdio>
const int MAXN = 3 * 1e5 + 5;
int a[MAXN];
int save[MAXN];
int main() {
int n, last = 0;
scanf("%d", &n);
printf("1");
for (int i = 1; i <= n; i++) {
int tem;
scanf("%d", &tem);
save[tem] = 1;
while (last <= n && save[n - last] == 1) {
last++;
}
printf(" %d", i - last + 1);
}
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: