YAML (Yet Another Markup Language) - Kummer话你知

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YAML (Yet Another Markup Language) - Kummer话你知相关的知识,希望对你有一定的参考价值。

参考技术A

YAML是一个标记语言, 读音 "yamel",或者"雅梅尔"。

类似于其他的标记语言一样,YAML希望能提供一个标准格式,用来存储复杂的结构化数据,YAML的设计者希望YAML能满足下面几个条件:

**用途: ** YAML经常用在数据的交换与存储方面,特别是这些数据同时需要人和机器都去访问的时候。比如配置文件、模型元数据文件等方面。

从上面我们可以看出,YAML要解决的问题实际上与XML和JSON等技术一样,那既然有了XML和JSON,为什么还需要YAML呢?
我想在机器处理上,XML和JSON应该都没有太大的短板,最大的问题在于方便人的处理上,比如XML,任何一个数据前后都要加上一个标签,这样对于人来说太繁琐。
XML格式的描述

YAML格式的描述,显然YAML格式对人来说更友好一些

说明: 另外,对于嵌套数据结构,YAML支持类似于Python的方式,使用缩进来代替Json或XML的各种括号或标签,在可阅读性方面有很大的改善。

实验地址: http://nodeca.github.io/js-yaml/
注: 上面的网站提供将YAML转换为JSON的在线工具。
在开始介绍YAML详细的语法前,我们先看一个例子,描述了几门程序设计语言课程与老师的信息,大家看看,即使不知道YAML语法,是不是大概也能猜出下面一段YAML说明了什么信息?

这是在YAML中使用#进行行注释

基本类型包括字符串型,数值型,bool型,空型,日期时间型等

默认行为: 字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。

等价于json str: \'这是 一个 多行 字符串\'

保留换行: |

等价于json str: \'这是\\n一个\\n多行\\n字符串\\n\'
折叠换行: >

等价于json str: \'这是 一个 多行 字符串\\n\'

末尾换行的去留: +(保留末尾换行) -(去除末尾换行)

等价于json str: \'这是 一个 多行 字符串\\n\\n\\n\', str2: \'这是 一个 多行 字符串\'

用true或false表示bool值,用~表示空值

整数或浮点数,就直接使用文字量描述,如12 或 3.1415926

日期采用复合 iso8601 格式的年、月、日表示
时间采用 ISO8601 格式。

YAML允许使用两个!!来表示强制类型转换,比如将bool类型的true转换为字符串类型的true

复杂一点的数据类型包括数组和Key/Value对

键值对用:隔开( 注:冒号后面要加一个空格 ),多个key/value对可以用来描述一个对象,比如

连词线开头的连续几行,则构成了一个数组,比如

对于嵌套数据结构,YAML支持两种方式

Educational Codeforces Round 88 (Rated for Div. 2) D. Yet Another Yet Another Task

题目链接:https://codeforces.com/contest/1359/problem/D

题解

枚举所有可能的情况,其中一定有一个是正确答案。

即每次枚举去掉的最大值,取最大连续子序列的和。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n; cin >> n;
    int a[n] = {};
    for (int i = 0; i < n; i++) 
        cin >> a[i];
    int ans = 0;
    for (int maxn = 30; maxn >= -30; maxn--) {
        int sum = 0;
        for (int i = 0; i < n; i++) {
            sum = max(0, sum) + a[i];
            ans = max(ans, sum - maxn);
        }
    }
    cout << ans << "
";
}

 

以上是关于YAML (Yet Another Markup Language) - Kummer话你知的主要内容,如果未能解决你的问题,请参考以下文章