Title:交谊舞

Description

描述 明显……交谊舞是2个人跳的,而且一男一女 -__-||||。 由于交谊舞之前的节目安排,所有的表演者都站成了一排。这一排人的顺序满足2点:

  • 对于一对舞伴男生站在女生的左边。
  • 任何一对舞伴之间,要么没有人,要么就有若干对舞伴。

排得过于整齐导致那些要表演交谊舞的人都没办法看到自己的舞伴,怎么办类……. 所幸的是,SDFZ的女生比男生聪明得多。她们知道自己左边有几个男生。 现在就请你再告诉这些女生,她们的舞伴距离她们多远(即包括那个男生,一共有多少男生夹在他们之间)。

Input Format

输入格式

第一行为一个数n,表示参与跳交谊舞的女生个数。

第二行n个数,从左到右表示这n个女生左边分别有多少个男生。

Output Format

输出格式

一排n个数,行末无空格。表示n个女生与其舞伴的距离。

Sample Input

6
4 5 6 6 6 6

Sample Output

1 1 1 4 5 6

Hint

各个测试点1s

n<=1500,结果小于2^31-1

Analysis

算法:贪心+模拟
简析:女生选舞伴的原则,往左找第一个未被挑选的男生(若找非第一个未被挑选的男生,则之间必然经过第一个没被挑选的男生,不符合中间是成对舞伴的条件)
做法:s[i]记录到i女生在所有人中的编号
           man[i]记录i女生左边共有多少男生
           c[i]记录可供选择的男生区间,并保证c[i]递增,c[i].l,c[i].r为区间的左右边界,c[i].now为该区间可取的为c[i].l-->c[i].now
           枚举1-n个女生,若man[i]>man[i-1]说明多出了一个可供选择的男生区间,则加入c[i](加入的是男生在全部人中的编号)
           接着输出c[tot]中可供选择的男生,若该区间已被取完则tot--,直到找到可供选择的区间。
 
注意:c[i]记录的是男生在全部人中的编号,所以计算起来较复杂
 
复杂度:O(n^2)

Code

</pre></h2></div></div><div class="markdown" style="text-indent:2em"><pre name="code" class="cpp">//by king QZqz
#include<cstdio>
#include<algorithm>
#include<cstring>
const int N=1600;
struct data{int l,r,now;
}c[N];
int man[N],s[N],n,lastman,tot;
int main()
{scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d",&man[i]);s[i]=s[i-1]+1+man[i]-man[i-1];}//man[i]-man[i-1]是在i和i-1之间的男生,+s[i-1]+1,就是到i女生在所有人中的编号 man[0]=0;for (int i=1;i<=n;i++){if (man[i]>man[i-1])//多了可供选择的男生区间 {tot++;c[tot].l=man[i-1]+i;//左边界,男生+女生得到该区间男生的初始编号 c[tot].now=c[tot].r=c[tot].l+man[i]-man[i-1]-1;//右区间为左区间加上i和i-1之间的男生(新增男生人数)-1(扣去i女生本身) }while (c[tot].now<c[tot].l&&tot>=1) tot--;//找到一个可供选择c[tot].now(舞伴的编号)int j=1;while (s[j]<c[tot].now) j++;//用于计算c[tot].now(男)和i(女)之间的女生人数 printf("%d ",man[i]+i-c[tot].now-(i-j));//man[i]+i(总人数)-c[tot].now(男生编号)=这对舞伴之间的总人数(不算i)//(i-j)这对舞伴之间的女生人数(不算i),以上两项相减即为男生人数 c[tot].now--;while (c[tot].now<c[tot].l&&tot>=1) tot--;}return 0;
}

【解题报告】【】交谊舞相关推荐

  1. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  2. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  3. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

  4. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  5. 解题报告(十三)中国剩余定理(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  6. 解题报告(四)生成函数(ACM/ OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  7. 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  8. 解题报告(一)E、(BZOJ4589)Hard Nim(博弈论 + FWT)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  9. 解题报告(五)组合计数(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  10. 解题报告(二)E、(BZOJ3513) [MUTC2013] idiots(生成函数 + FFT + 组合计数)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. “95后”曹原又双叒叕发Nature了!1个月2篇,已经第6篇了……
  2. tf.nn.l2_loss() 与 权重衰减(weight decay)
  3. python3.8自带matlop和numpy吗_Python enlop包_程序模块 - PyPI - Python中文网
  4. Java记录-SpringMVC整合Echarts画地图加散点图
  5. ThreadPoolExecutor源码解析(一)
  6. php 扩展 mysql_PHP链接MySQL的常用扩展函数
  7. 能拯救你的人也只能是自己
  8. redis的zset使用(java)——存取List< Object>
  9. 鸿蒙济判法讲义,2020-02-09《薛兆丰经济学讲义》读书笔记
  10. 11.25晚C语言答疑
  11. UNIX系统命令大全
  12. STM32—雨滴检测传感器
  13. 路由器WIFI密码忘记了怎么办
  14. 放硬币问题的解空间结构
  15. 有关微型计算机控制系统的论文,计算机控制系统 徐文尚
  16. 关于修改思科WLC SSID
  17. 爬虫之模拟强智系统登录
  18. 获取海拔高度. 实时气压
  19. SQL注入靶场:辛巴猫舍
  20. 哔哩哔哩 Web 首页重构——回首2021

热门文章

  1. 快速搭建一个简单的周报管理系统
  2. 深入分析:Onliner SpamBot7.11亿电邮账号泄露事件
  3. 《强化学习周刊》第27期:MIT研究表明通用LTL目标的强化学习很难实现
  4. python中矩阵乘以常数_在python(H.W)中单独乘以矩阵
  5. 线性代数|学习笔记|18.065MIT公开课 lecture05
  6. Effective Java读书笔记---二、创建和销毁对象
  7. 为什么说每个人适合的大数据培训课程都可能存在差异?
  8. 基于车路协同功能的路侧及车载智能设备研究
  9. 想提前躺平的程序员,这10个网站收好了!
  10. LeetCode 1710. 卡车上的最大单元数