嵊州普及Day4T2
2024-09-07 01:39:51
题意:有一个单行走廊,每回合第ai个展柜会冒出来一只鬼,右边尽头有一个人间大炮和向最左传送门(费用均1金币),你需要每回合将所有鬼交换展柜,全部至最右,问若从一到n所有回合结束是需多少金币可射死所有鬼。
思路:花一块可将一只鬼挪至最右,然后使用一个指针储蓄最右有几个鬼,然后相减就可以了。
见代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,k,a[],b[];
bool c[];
int main()
{
freopen("coin.in","r",stdin);
freopen("coin.out","w",stdout);
cin>>n;
k=n;
b[]=;
for(int i=;i<=n;i++)
{
cin>>a[i];
c[a[i]]=true;
if(a[i]==k)
{
while(c[k]==true)
k--;
if(k==n-i)
b[i]=;
else
b[i]=b[i-];
}
else
b[i]=+b[i-];
}
for(int i=;i<=n;i++)
cout<<b[i]<<" ";
return ;
}
又双叒叕炸掉了!
原因是部分在右部分不在右的情况未考虑清。
见代码*2:
#include<iostream>
using namespace std;
int n,k,a[],b[];
bool c[];
int main()
{
cin>>n;
k=n;
b[]=;
for(int i=;i<=n;i++)
{
cin>>a[i];
c[a[i]]=true;
b[i]=b[i-]+;
if(a[i]==k)
{
while(c[k]==true)
{
b[i]--;
k--;
}
}
}
for(int i=;i<=n;i++)
cout<<b[i]<<" ";
return ;
}
好题哉!!!
最新文章
- (转载)哈夫曼编码(Huffman)
- Java基础-四要素之一《抽象》(接口)
- 【译】 AWK教程指南
- 下面css hack的写法分别用于哪些浏览器
- CSS下背景属性background的使用方法
- 计蒜客模拟赛D1T2 蒜头君的树:树上节点之间最短距离和
- Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)
- c语言基础学习09_关于复合类型的复习
- EasyUI easyui-combobox实现数据联动
- How to Build a New Habit: This is Your Strategy Guide
- [Leetcode 104]求二叉树的深度Depth of BinaryTree
- 为什么 c = tf.matmul(a, b) 不立即执行矩阵乘法?
- FPGA三分频,五分频,奇数分频
- 理解bind函数
- 利用JDK自带工具keyTool生成安全证书
- Linux内核程序的编译:模块化编译
- 除了GPS外的4种获得用户地理位置数据的方法
- [BZOJ2429][HAOI2006]聪明的猴子(最小生成树)
- 手动编译安装Libvirt之后利用systemctl管理libvirtd服务
- spi总结