[Vijos]P1062 迎春舞会之交谊舞
来源:互联网 发布:录像软件app 编辑:程序博客网 时间:2024/04/28 09:57
->传送门
题目
背景
HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。
描述
明显……交谊舞是2个人跳的,而且一男一女 -__-||||。
由于交谊舞之前的节目安排,所有的表演者都站成了一排。这一排人的顺序满足2点:
①对于一对舞伴男生站在女生的左边。
②任何一对舞伴之间,要么没有人,要么就有若干对舞伴。
排得过于整齐导致那些要表演交谊舞的人都没办法看到自己的舞伴,怎么办类…….
所幸的是,SDFZ的女生比男生聪明得多。她们知道自己左边有几个男生。
现在就请你再告诉这些女生,她们的舞伴距离她们多远(即包括那个男生,一共有多少男生夹在他们之间)。
格式
输入格式
第一行为一个数n,表示参与跳交谊舞的女生个数。
第二行n个数,从左到右表示这n个女生左边分别有多少个男生。
输出格式
一排n个数,行末无空格。表示n个女生与其舞伴的距离。
样例1
样例输入1
64 5 6 6 6 6
样例输出1
1 1 1 4 5 6
限制
各个测试点1s
提示
n<=1500
结果小于2^31-1
题解
真心给出题人的语文水平跪了……
这道题看起来就很像括号匹配那样栈的题目,我也没想出什么比较高效的方法,就按照那个思路,用了一个不太标准的栈写的这道题.
我的想法是将每个女生离她舞伴的距离存在那个舞伴的上面,距离初始为1,这样每个女生找到栈顶元素作为舞伴,距离就是舞伴所带的权值,然后将其出栈,每次出栈的时候,就将舞伴前面的所有元素+1.
我语文好像更差啊,诸位还是看代码吧.
顺便吐槽一下这个数组大小的问题,这数据……
#include<cstdio>using namespace std;const int maxn = 10000;int n, cur =0, p = 0, s[maxn];int main(){ scanf("%d",&n); for(int i = 0; i < n; i++) { int pre; scanf("%d", &pre); for(;cur < pre; cur++) { s[++p] = 1; for(int j = 0; j < p; j++) s[j]++; } printf("%d%c",s[p--],(i == n ? '\n' : ' ')); } return 0;}
0 0
- vijos P1062 迎春舞会之交谊舞
- [Vijos]P1062 迎春舞会之交谊舞
- Vijos P1062迎春舞会之交谊舞
- 【模拟】Vijos P1062 迎春舞会之交谊舞
- Vijos-P1062-迎春舞会之交谊舞
- vijos 1061 迎春舞会之三人组舞
- Vijos P1061 迎春舞会之三人组舞
- 迎春舞会之数字舞蹈
- 迎春舞会之三人组舞 --dp
- 洛谷1538 迎春舞会之数字舞蹈
- vijos1064迎春舞会之数字舞蹈
- P1538 迎春舞会之数字舞蹈
- 洛谷 P1538 迎春舞会之数字舞蹈
- P1538 迎春舞会之数字舞蹈
- 洛谷在线测试P1538迎春舞会之数字舞蹈
- 洛谷——1538 迎春舞会之数字舞蹈
- [BZOJ1516][VijosP1061]迎春舞会之三人组舞
- Vijos P1706 舞会
- ios 一次性代码的实现
- centos开启防火墙
- zoj 3212 K-Nice 解题报告
- 函数之间传参,获取别的函数内的变量值
- UE4发报机-Create Event将函数转换为事件绑定
- [Vijos]P1062 迎春舞会之交谊舞
- form表单提交到servlet显示HTTP Status 404错误The requested resource is not available.
- C语言中的__FILE__、__LINE__和#line
- Java CAS 和ABA问题
- hdu1198
- tarjan算法(边的双连通分量)
- Codeforces548C:Mike and Frog
- Progressbar设置大小
- Eclipse背景设置