Description

我走在每天必须面对的分岔路/我怀念过去单纯美好的小幸福/爱总是让人哭/让人觉得不满足/天空很大却看不清楚/好孤独/天黑的时候/我又想起那首歌/突然期待下起安静的雨/原来外婆的道理早就唱给我听/下起雨/也要勇敢前行/我相信/一切都会平息/我现在好想回家去/天黑黑/欲落雨/天黑黑/黑黑
当整个世界陷入黑暗的时候,身为光明之神的Zyh想要用自己的若干个能量源和若干个集流器将这些能量源并成一个最大的能量源,这样他就可以造出最大的灯来照亮整个世界。
具体地来说每个能量源可以直接给出Ei的能量。而每个集流器是由两个接受端口和一个输出端口组成的。集流器有两种:A类和B类。A类是叠加集流器,可以将两个接收端口的能量叠加并输出。B类是取代集流器,可以将两个接受端口的能量较大那个输出。
现在有n-1个集流器,n个能量源。Zyh给出了集流器的连接方式,他想知道怎样放置能量源,能够使最后的输出最大化。

Input

第一行是一个字符串,表示连接的方式。给出的形式是这样的:X,表示一个单独的输出能量源的放置处;AS1S2,其中S1和S2表示两个输出能量,A表示使用叠加集流器将能量并成一个,然后这本身也成为一个新的输出能源;BS1S2也是同理,只不过是使用取代集流器。并且保证A和B的个数为n-1个。X的个数为n个。
第二行是n个正整数,表示这几个能量源。

Output

一个数,表示最大的输出能源。

Sample Input

输入1:

BXBXX
8 2 3

输入2:

AXBXX
8 2 3

Sample Output

输出1:

8

输入2:

11

Data Constraint

对于 20% 的数据 n<10n
对于 60% 的数据 n<=3000n
对于 100% 的数据 n<=200000Ei<=10000n

Hint

Solution

  • 这题实在太坑啦啦啦!!!

  • 先前我打了一个本应 AC 的程序,但由于 OJ 更新把栈限制深度改小了

  • 导致 莫名 错误,调了我几个小时,很来改用人工栈也迷之WA!

  • 好了,回归正题,这题的正解处理很简洁

  • 观察题目,A只会使答案增加,而B却放弃了一些元素

  • 那么贪心地填,将元素排序,选择最终剩余元素个数的那些即可!

  • 使用一个栈,维护可用元素个数,从字符串的后面往前扫,遇到X则压栈,即

    Stack[++top]=1

    Stack[++top]=1

  • 如果遇到A,则合并两个元素,即:

    Stack[top−1]+=stack[top],top−−

    Stack[top-1]+=stack[top],top--

  • 如果是B,就取两个元素的最大值,即:

    if(stack[top]>stack[top−1])stack[top−1]=stack[top],top−−;

    if(stack[top]>stack[top-1]) stack[top-1]=stack[top],top--;

  • 那么最后 Stack[1]Stack[1] 就是可用元素个数了,依次累加答案即可!

  • 这样时间复杂度就是 O(N)O(N) !

Code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=200002;
int n,top,ans;
int a[N],stack[N];
char s[N*2];
inline int read()
{int data=0; char ch=0;while(ch<'0' || ch>'9') ch=getchar();while(ch>='0' && ch<='9') data=data*10+ch-'0',ch=getchar();return data;
}//读入优化
void put(int x)
{  int num=0; char c[11];while(x) c[++num]=(x%10)+48,x/=10;while(num) putchar(c[num--]);
}//输出优化
int main()
{scanf("%s",s+1);for(int i=strlen(s+1);i;i--)if(s[i]=='X') stack[++top]=1,n++; elseif(s[i]=='A') stack[top-1]+=stack[top],top--; else{if(stack[top]>stack[top-1]) stack[top-1]=stack[top];top--;}for(int i=1;i<=n;i++) a[i]=read();sort(a+1,a+1+n);for(int i=n-stack[1]+1;i<=n;i++) ans+=a[i];put(ans);return 0;
}

JZOJ 3814. 【NOIP2014模拟9.7】天黑黑相关推荐

  1. jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修

    Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...

  2. JZOJ 3809. 【NOIP2014模拟8.25】设备塔

    Description 为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔. 简单的说,这座设备塔是一个漂浮在异空间中的圆柱体,圆柱体两头的圆是计算核心,而侧面则是 传输信息所用的数据通 ...

  3. JZOJ 3815. 【NOIP2014模拟9.7】克卜勒

    Description 一闪一闪亮晶晶/好像你的身体/藏在众多孤星之中/还是找得到你/挂在天上放光明/反射我的孤寂/提醒我/我也只是一颗寂寞的星星/oh~/浩瀚的世界里/更迭的人海里/和你互相辉映/而 ...

  4. JZOJ 3775. 【NOIP2014模拟8.15】因子的排列

    Description 一天,小B学习了分解质因数的相关内容.他发现,一个数的质因子可以有许多不同的排列方式,例如20=2*2*5=2*5*2=5*2*2,那么小B认为20的质因子有3种不同的排列方式 ...

  5. JZOJ 3899. 【NOIP2014模拟】逻辑的连通性

    Description 假如有命题p 一定能推出命题q,则称p 是q 的充分条件,q 是p 的必要条件. 特别的,当p 既是q 的充分条件,又是q 的必要条件时,称p 和q 互为充要条件 现在有n 个 ...

  6. JZOJ 3731. 【NOIP2014模拟7.10】庐州月

    Description [引子] 桥上的恋人入对出双 桥边红药叹夜太漫长 月也摇晃人也彷徨 乌蓬里传来了一曲离殇 庐州月光洒在心上 月下的你不复当年模样 太多的伤难诉衷肠 叹一句当时只道是寻常 庐州月 ...

  7. JZOJ 3885. 【长郡NOIP2014模拟10.22】搞笑的代码

    Description 在OI界存在着一位传奇选手--QQ,他总是以风格迥异的搞笑代码受世人围观 某次某道题目的输入是一个排列,他使用了以下伪代码来生成数据 while 序列长度< n do { ...

  8. JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护

    Description 最近徆多人投诉说C国的道路破损程度太大,以至亍无法通行 C国的政府徆重视这件事,但是最近财政有点紧,丌可能将所有的道路都进行维护,所以他们决定按照下述方案进行维护 将C国抽象成 ...

  9. JZOJ 3813. 【NOIP2014模拟9.7】我要的幸福

    Description 幸福/我要的幸福/渐渐清楚/梦想/理想/幻想/狂想/妄想/我只想坚持每一步/该走的方向/就算一路上/偶尔会沮丧/生活是自己/选择的衣裳/幸福/我要的幸福/没有束缚/幸福/我要的 ...

最新文章

  1. SAP Spartacus的url parameter
  2. OC_KVC与KVO简单介绍
  3. TCP/IP协议--ARP协议(有了IP地址为什么还需要ARP协议)
  4. Redis ops详解
  5. IDEA导入项目笔记
  6. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·007【uni-app和vue.js基础快速上手】
  7. Selenium-WebDriverApi介绍
  8. 简单区块链Python实现
  9. Windows下PHP安装配置
  10. linux服务器开启公网访问_如何在外网用SSH访问内网LINUX服务器?
  11. 【hdoj1272】小希的迷宫(并查集+坑点)
  12. 深入P2P——BT种子解析
  13. plsql 破解|oracle plsql 破解
  14. ueditor编辑器的使用
  15. 2013海淀驾校学车日记
  16. 哈佛大学幸福课笔记二
  17. 《勒索软件防护发展报告(2022年)》正式发布,助力企业高效应对勒索软件攻击
  18. bootstrap文字,图片
  19. 使用R包topGO绘制GO有向无环图
  20. c语言内涵教程练习6,C语言内涵教程练习5参考答案.doc

热门文章

  1. 可以查到的资料和可以淘到的原件 DIY 四轴
  2. 《蓝桥小记》 2018-04-01
  3. Coursera吴恩达《神经网络与深度学习》课程笔记(5)-- 深层神经网络
  4. axios 登录后设置header_axios如何利用promise无痛刷新token
  5. 退出python交互模式_python如何退出交互模式
  6. VTK修炼之道14:图像处理_创建
  7. 关于我对c#的一些看法
  8. 加快vs2010的启动速度
  9. 大型项目开发,你准备好了吗?
  10. Sql养成一个好习惯是一笔财富