HDU4782——Beautiful Soup(模拟)

题目大意

题目给你一些没有经过排版的HTML代码,让你按照一定的格式排版好,去掉多余空格,保持规则的缩进。

题目分析

注意的地方就是’ < /html >’ 和 ‘< html >’ 可能在同一行。

其实题目本身并没有多少技巧,就是锻炼基本的代码功底。刚开始写的时候,写了一坨稀烂的代码,结果出错之后的Debug变得非常困难。所以看似这种随意的代码风格能节省时间,其实维护的成本要高得多得多。后来又重新敲了一遍,发现其实在你有了一个全局的规划之后再动手,代码会更加清晰,出错之后也更易发现。

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;

typedef long long LL;
const int INF = 0x7fffffff;
const int MOD = 1e9 + 7;
const int N = 1e5 + 10;

char c;
int T;
int Cas = 2, Len = 0;

bool isSpace(char c) {
    return c == 32 || c == 9 || c == 10;
}
void Skip() {
    while((c = getchar()) && isSpace(c)) ;
}
void nextCase() {
    if(T == 0) {
        puts("");
        exit(0);
    }
    printf("\nCase #%d:", Cas++);
    T--;
}
void newLine() {
    putchar(‘\n‘);
    for(int i = 0; i < Len; i++) putchar(‘ ‘);
}
void printTags() {
    string Temp;

    while((c = getchar()) && c != ‘>‘) Temp += c;
    int l = Temp.size();
    if(Temp[0] == ‘/‘) {
        Len--;
        newLine();
        printf("<%s>", Temp.c_str());
    } else if(Temp[l - 1] != ‘/‘) {
        newLine();
        printf("<%s>", Temp.c_str());
        Len++;
    } else {
        newLine();
        printf("<%s>", Temp.c_str());
    }
    if(Len == 0) nextCase();
}
void printText() {
    newLine();
    putchar(c);

    while((c = getchar()) && c != ‘<‘) {
        if(isSpace(c)) {
            Skip();
            if(c == ‘<‘) break;
            putchar(‘ ‘);
        }
        putchar(c);
    }
}
int main() {
#ifdef Tally_Ho
    freopen("in.txt", "r", stdin);
#endif // Tally_Ho
    scanf("%d", &T);
    c = getchar();
    printf("Case #1:");
    T--;
    while(true) {
        if(isSpace(c)) {
            Skip();
        } else if(c == ‘<‘) {
            printTags();
            c = getchar();
        } else {
            printText();
        }
    }
    return 0;
}
时间: 2024-08-29 14:37:32

HDU4782——Beautiful Soup(模拟)的相关文章

hdu4872 Beautiful Soup 模拟

Beautiful Soup Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1912    Accepted Submission(s): 391 Problem Description Coach Pang has a lot of hobbies. One of them is playing with “tag soup” wit

HDU4782 Beautiful Soup

成都赛里的一道坑爹码力题,突然间脑抽想做一下弥补一下当时的遗憾.当时没做出这道题一是因为当时只剩大概45分钟,对于这样的具有各种条件的题无从下手,二则是因为当时估算着已经有银牌了,所以就不挣扎了.但是像这种题还是一定要敲一下的. 这学期学了编译原理,知道了一些在编译上处理这种题目的一些姿势,例如自动机,parse tree什么的,所以写起来就会更清晰.其实说白了本题的难点在于tokenizer,就是将里面有意义的部分全部弄出来,归结起来可以看成4种,分别是opentag,closetag,bla

HDU 4782 Beautiful Soup(模拟)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4782 Problem Description Coach Pang has a lot of hobbies. One of them is playing with "tag soup" with the help of Beautiful Soup. Coach Pang is satisfied with Beautiful Soup in every respect, except

爬虫---Beautiful Soup 爬取知乎热榜

前两章简单的讲了Beautiful Soup的用法,在爬虫的过程中相信都遇到过一些反爬虫,如何跳过这些反爬虫呢?今天通过豆瓣网写一个简单的反爬中 什么是反爬虫 简单的说就是使用任何技术手段,阻止别人批量获取自己网站信息的一种方式.关键也在于批量. 反反爬虫机制 增加请求头---headers为了模拟更真实的用户场景 更改IP地址---网站会根据你的IP对网站访问频密,判断你是否属于爬虫 ua限制---UA是用户访问网站时候的浏览器标识,其反爬机制与ip限制类似 模拟帐号登录----通过reque

[Python]HTML/XML解析器Beautiful Soup

[简介] Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.即HTML/XMLX的解析器. 它可以很好的处理不规范标记并生成剖析树(parse tree). 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作.它可以大大节省你的编程时间. [安装] 下载地址:点击打开链接 Linux平台安装: 如果你用的是新版的Debain或ubuntu,那么可以通过系统的软件包管理来安装: $ apt-get install Python-bs4 B

python标准库Beautiful Soup与MongoDb爬喜马拉雅电台的总结

Beautiful Soup标准库是一个可以从HTML/XML文件中提取数据的Python库,它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式,Beautiful Soup将会节省数小时的工作时间.pymongo标准库是MongoDb NoSql数据库与python语言之间的桥梁,通过pymongo将数据保存到MongoDb中.结合使用这两者来爬去喜马拉雅电台的数据... Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是

HDU-4782-Beautiful Soup(模拟)

Problem Description Coach Pang has a lot of hobbies. One of them is playing with "tag soup" with the help of Beautiful Soup. Coach Pang is satisfied with Beautiful Soup in every respect, except the prettify() method, which attempts to turn a sou

爬虫学习——网页解析器Beautiful Soup

一.Beautiful Soup的安装与测试 官方网站:https://www.crummy.com/software/BeautifulSoup/ Beautiful Soup安装与使用文档:  https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 1.首先测试一下bs4模块是否已经存在,若不存在再安装即可,我用的是kali测试发现bs4模块已经存在,下面介绍如何测试与安装 新建python文档输入以下代码 1 import bs4 2

Beautiful Soup的使用

Beautiful Soup简单实用,功能也算比较全,之前下载都是自己使用xpath去获取信息,以后简单的解析可以用这个,方便省事. Beautiful Soup 是用 Python 写的一个 HTML/XML 的解析器,它可以很好的处理不规范标记并生成剖析树.通常用来分析爬虫抓取的web文档.对于 不规则的 Html文档,也有很多的补全功能,节省了开发者的时间和精力. Beautiful Soup 的官方文档齐全,将官方给出的例子实践一遍就能掌握.官方英文文档,中文文档 一 安装 Beauti