嵊州D4T2 硬币

【问题描述】

卡拉赞的展览馆被入侵了。 展览馆是一条长长的通道,依次摆放着 n 个展柜(从西到东编号依次 为 1—n)。

入侵者玛克扎尔在第 n 个展柜东边召唤了一个传送门,一共施放了 n 次法术,每一次会选取一个展柜,并在那个展柜里召唤一只小鬼, 小鬼被生成前该展柜里的展品会被自动转移(除此以外不能取出展品)。

作为展览馆的守护者,馆长需要选择一个时机进行反击,消灭所有小鬼并摧毁传送门。

展览馆的东端设置了一台巨大的 Morisa 炮,它可以摧毁它正前方一定 范围内的一切(为了安全,开炮时馆长必须在展览馆最西边)。馆长不想误伤展品,所以他需要移动展柜。

馆长可以站在两个展柜中间,交换这两 个展柜。

展览馆被设置了魔法结界,只可以单向通行,所幸在炮台旁有一 个传送门,可以通向展览馆的最西端,但是馆长每次通过传送门都会消耗 一枚麦迪文留下的幸运币,发射魔炮也需要一枚。

现在,馆长想知道他每次召唤后进行反击最少需要多少枚硬币解决危机。

来吧,展览馆只对访客开放。

【输入格式】

第一行一个数n。

第二行n个数,A[i]表示第i次小鬼召唤的位置。

【输出格式】

一行 n+1 个数,B[i]表示第 i 次召唤后反击所需要的最小硬币数(第 一次是传送门的召唤)。

【输入输出样例】

coin.in coin.out
3 1 2 3 1 2 3 1

【样例解释】

【数据说明】

对于40%数据n ≤ 20

对于60%数据n ≤ 100

对于100%数据 1 ≤ n ≤ 300000

有人来教教我吗!

有人来教教我吗!

 #include<bits/stdc++.h>
using namespace std;
int n;
bool g[];
int move(int num){
if(n==num) return ;
for(int i=;i<=num;i++)//假设鬼从左往右生成
{
g[i]=;
}
bool flag1=,flag2=;
int coin=;
do//传送到左边
{
for(int i=;i<=n;i++)//模拟交换,每一组(不是次)只能从右边开始
{
if(g[i]&&(!g[i+])&&i!=n) swap(g[i],g[i+]);
if()
} for(int i=;i<=n;i++)
{
if(g[i]&&(flag2==)) {
flag2==;
if(i+num==n) flag1=;
break;
}
} }
while(flag1&&++coin);
return coin+;
} int main(){
// freopen("coin.in","r",stdin);
// freopen("coin.out","w",stdout);
cout<<"";
cin>>n;
int a;
for(int i=;i<=n;i++){
cin>>a;
cout<<move(a)<<" ";
}
return ;
}
/*
发射魔炮需1个coin
这与鬼的数量无关 假设鬼从左往右生成
原本馆长在最左边,故至少传送到左边去(为了安全)发射要一枚硬币 */

在下小见,请过目~

最新文章

  1. 【问题排查记录】Field &#39;id&#39; doesn&#39;t have a default value;
  2. Java菜鸟学习 Script 脚本语言(简介)
  3. [转]Python中urllib与urllib2的区别与联系
  4. FFMpeg那些事——独立运行的二进制文件ffmpeg编译
  5. 【转】android开发工具Eclipse,androidStudio,adt网盘下载--不错
  6. 《Head First 设计模式》学习笔记——工厂模式 + 抽象工厂模式
  7. NYOJ-745蚂蚁的难题(二)
  8. mui实现退出当前应用
  9. poj3090欧拉函数求和
  10. HDU 1896 Stones (优先队列)
  11. HDU 2614 Beat(DFS)
  12. ArrayList,LinkedList的对比
  13. 输入和输出--IO流
  14. idea 打包springboot项目报错:404
  15. js obj对象转formdata格式代码
  16. Java8新特性之Collectors
  17. python与redis
  18. Ubuntu 下wifi掉线
  19. 人生苦短,我用python,为什么选择python,python简介
  20. Oracle11g服务详细介绍

热门文章

  1. 使用委托实现c#,窗体与窗体之间的传值
  2. 梧桐那时雨http://blog.csdn.net/fuchaosz/article/details/51882935?readlog
  3. Android零基础入门第16节:Android用户界面开发概述
  4. C# ToolStrip在父窗体失去焦点时,点击里面的按钮无效
  5. Docker Explanation and Apache Image
  6. 使用Disk2VHD进行P2V转换需要知道的一些事
  7. 三种扩展 Office 软件功能的开发模型对比 – Office Add-In Model, VBA 和 VSTO
  8. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)
  9. 使用QPainter的drawPixmap()绘制多幅图片 good
  10. CTO的职责,以及Goolge内部流程