1414: Kick Ass【栈+思维】
来源:互联网 发布:新闻推荐系统数据集 编辑:程序博客网 时间:2024/06/05 07:44
1414: Kick Ass [字符串]
时间限制: 1 Sec 内存限制: 128 MB题目描述
你玩过一个叫做"Kick Ass - Destroy the web"的游戏吗?如果你想玩的话
当然,你没有玩过也没关系,这个游戏是通过js来加载一个飞船,让你可以通过控制它发射子弹来摧毁网页上的元素,从而获得分数。
我们知道HTML是超文本标记语言,简单地说就是通过一些标签来指明元素的展示方式,比如<p></p>
就可用作表明这是一个段落,<div></div>
表明这是一个区块。
假设有一个网页只含有<p></p>
、<div></div>
两种标记,其中<p><p>
中只含有数字,摧毁<p></p>
标记可获得其中各个数字之和的分数,摧毁<div></div>
可获得其中包含的所有<p></p>
分数与包含的<div></div>
分数二倍之和的分数。
现在给你一个网页,你能否计算出完全摧毁它可得到的分数。
为了简化难度,你可以假设:
- 所给网页的字符只有数字和标签
- 所给网页的标签都正确匹配
- 保证所给网页中的数字都在
<p></p>
标签内 <p></p>
标签内不会含有标签<div></div>
标签内可能含有<p></p>
标签和<div></div>
标签
输入
多组测试数据,请处理到文件结束。
每组占一行,有一个长度不大于1000的字符串代表所给网页。
输出
请输出完全摧毁此网页可获得的分数。
样例输入
<div><p>123</p><div><p>123</p></div></div>
样例输出
18
读题要仔细dfs || stack都能实现,利用的都是递归思想,分块处理。本题难以处理的就是div字符(仔细读题<p>的用法,读题仔细点),把div标记一下,出现 /div 时进行配对消除(类似于栈处理括号问题),消除后如果还有div,那就把 栈顶元素*2。总之就是把记录的数值压入栈,分块进行div的配对。
#include <cstdio>#include <cstring>#include <cmath>#include <stack>#include <algorithm>using namespace std;typedef long long LL;char str[1010]; int main() {while(~scanf("%s", str)) {stack<LL> s; //记录数值 LL ans = 0, sum = 0, res = 0;for(int i = 0; i < strlen(str); i++) {if(str[i] == '<' && str[i + 1] == 'd') {res++;s.push(-1); //标记一下 }else if(str[i] == '<' && str[i + 1] == '/' && str[i + 2] == 'd') {while(!s.empty() && s.top() != -1) {ans += s.top();s.pop();}s.pop();res--;if(res) s.push(2 * ans); //外围有div else s.push(ans);ans = 0;}else if(str[i] == '<' && str[i + 1] == 'p') {i += 3;while(str[i] != '<') {ans += str[i++] - '0';}s.push(ans);ans = 0;}}while(!s.empty()){sum += s.top();s.pop();}printf("%lld\n", sum);}return 0;}
阅读全文
1 0
- 1414: Kick Ass【栈+思维】
- 【HPU 1414: Kick Ass】
- 1414: Kick Ass [字符串]
- HPUOJ 1414: Kick Ass [字符串]
- Kick Ass小游戏
- Kick Ass小游戏
- 【hpu1414】Kick Ass
- Kick Ass Biu
- hpu1414: Kick Ass [字符串]
- 1416: Kick Ass Biu [几何]
- 1416: Kick Ass Biu [几何]
- 【HPU 1416 Kick Ass Biu】几何
- 多校联萌第三场 问题 A: Kick Ass
- 【HPUOJ 1416】Kick Ass Biu 【几何】
- 【HPUOJ 1414:】Kick As 【栈】
- 10 Free Server & Network Monitoring Tools that Kick Ass
- 50 Kick-Ass Websites You Need to Know About
- ShineTime – A Kick-Ass New jQuery & CSS3 Gallery With Animated Shine Effects
- SVN-备份加版本控制
- solr集群搭建
- 《大话数据结构》第九章 排序
- 01背包问题,华为机试题
- ctf 文件上传测试
- 1414: Kick Ass【栈+思维】
- bootstrap 栅栏系统练习1
- 二分法
- NYOJ 289-苹果(01背包)
- mybatis~configuration 之九子
- PageRank算法--从原理到实现
- 理解JavaScript的闭包
- List<String>为何不能赋值给List<Object>
- SSH整合上传文件问题