Tournament Chart

题目描述

In 21XX, an annual programming contest, Japan Algorithmist GrandPrix (JAG) has become one of the most popular mind sports events.

JAG is conducted as a knockout tournament. This year, N contestants will compete in JAG. A tournament chart is represented as a string. '[[a-b]-[c-d]]' is an easy example. In this case, there are 4 contestants named a, b, c, and d, and all matches are described as follows:

Match 1 is the match between a and b.
Match 2 is the match between c and d.
Match 3 is the match between [the winner of match 1] and [the winner of match 2].
More precisely, the tournament chart satisfies the following BNF:

<winner> ::= <person> | "[" <winner> "-" <winner> "]"
<person> ::= "a" | "b" | "c" | ... | "z"
You, the chairperson of JAG, are planning to announce the results of this year's JAG competition. However, you made a mistake and lost the results of all the matches. Fortunately, you found the tournament chart that was printed before all of the matches of the tournament. Of course, it does not contains results at all. Therefore, you asked every contestant for the number of wins in the tournament, and got N pieces of information in the form of "The contestant ai won vi times".

Now, your job is to determine whether all of these replies can be true.

输入

The input consists of a single test case in the format below.

S
a1 v1
:
aN vN
S represents the tournament chart. S satisfies the above BNF. The following N lines represent the information of the number of wins. The (i+1)-th line consists of a lowercase letter ai and a non-negative integer vi (vi≤26) separated by a space, and this means that the contestant ai won vi times. Note that N (2≤N≤26) means that the number of contestants and it can be identified by string S. You can assume that each letter ai is distinct. It is guaranteed that S contains each ai exactly once and doesn't contain any other lowercase letters.

输出

Print 'Yes' in one line if replies are all valid for the tournament chart. Otherwise, print 'No' in one line.

样例输入

[[m-y]-[a-o]]
o 0
a 1
y 2
m 0

样例输出

Yes

【题解】

类似于表达式求值,每次都把比赛中较大者减1,最后判断是否全为0即为Yes。

 #include<bits/stdc++.h>
using namespace std; unordered_map <char,int> Hash;
stack <char> Ops;
stack <char> Nums;
bool f ; void Calc( ){
char v = Nums.top() ; Nums.pop();
char u = Nums.top() ; Nums.pop();
/*
if( !( Hash[u] == Hash[v] + 1 || Hash[v] == Hash[u] + 1 ) ){
f = false ; cout << u << " # " << v << endl;
cout << Hash[u] << " # " << Hash[v] << endl;
}
*/
if( Hash[u] > Hash[v] ) Nums.push(u) , Hash[u] -- ;
else Nums.push(v) , Hash[v] -- ;
Ops.pop();
} int main()
{
ios_base :: sync_with_stdio(false);
cin.tie(NULL) , cout.tie(NULL); string s ;
cin >> s ; f = true;
char ch ;
int len = s.length() , v , m = ;
for(int i=;i<len;i++) m += ('a' <= s[i] && s[i] <= 'z' ); for(int i=;i<m;i++){
cin >> ch >> v ;
Hash[ch] = v ;
}
/*
for(int i=0;i<26;i++){
cout << 'a' + i << " " << Hash['a'+i] << endl;
}
*/ for(int i = ; i<len ; i++ ){
if( s[i] == '[' ){
Ops.push(s[i]);
}else if( 'a' <= s[i] && s[i] <= 'z' ){
Nums.push(s[i]);
}else if( s[i] == ']' ){
while( Ops.top() != '[' ) Calc() ;
Ops.pop();
}else if( s[i] == '-'){
Ops.push(s[i]);
}
/*else{
puts(" Invaild Operator \n");
}*/
} /*
for(int i=0;i<26;i++){
cout << char('a' + i) << " " << Hash['a'+i] << endl;
}
*/ //cout << s << endl;
if( f ){
//int t = 0 ;
for(int i=;i<;i++){
if( Hash['a'+i] != )
f = false ;
}
//if( t ) f = false ;
}
if( f ){
printf("Yes\n");
}else{
printf("No\n");
}
return ;
} /* [[[a-b]-c]-[d-e]]
a 3
b 0
c 0
d 1
e 0 */

【数据结构】Tournament Chart的更多相关文章

  1. Tournament Chart【模拟+vector+map+string】

    Tournament Chart 传送门:链接  来源:UPC10889 题目描述 In 21XX, an annual programming contest, Japan Algorithmist ...

  2. Chart.js中文文档-雷达图

    雷达图或蛛网图(Radar chart) 简介 A radar chart is a way of showing multiple data points and the variation bet ...

  3. 数据结构与算法 Big O 备忘录与现实

    不论今天的计算机技术变化,新技术的出现,所有都是来自数据结构与算法基础.我们需要温故而知新.        算法.架构.策略.机器学习之间的关系.在过往和技术人员交流时,很多人对算法和架构之间的关系感 ...

  4. 一款开源且功能强大的C#甘特图控件.NET Winforms Gantt Chart Control

    甘特图在项目管理中非常重要,甘特图的思想比较简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间.它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比.管理 ...

  5. jQuery 实现Bootstrap Chart 图表

    很多时候我们制作报表的时候需要图表,如果你使用bootstrap开发你的网站,如果你需要使用图表,那么最简单的方法就是就是使用bootstrap 的chart.js来实现图表,下面介绍方法 1.引入c ...

  6. Winfrom Chart实现数据统计

    简介 Chart图标根据实际使用情况,部分图表适用于多组数据的数据分析统计功能,例如柱状图:部分图表适用于单组数据的数据分析统计,例如饼状图. 主要属性 注意使用: Chart图表的如下属性:Lege ...

  7. [DT] 数据结构术语中英文对照

    数据结构术语中英文对照 数据 Data 数据元素 Data element 数据项 Data item 数据结构 Data structure 逻辑结构 Logical structure 数据类型 ...

  8. 推荐一个学习Flex chart的好网站

    推荐一个学习Flex chart的好网站 2013-03-04 14:16:56|  分类: Flex |  标签: |字号大中小 订阅     推荐一个学习Flex chart的好网站 最近在做一个 ...

  9. Chart.js docs

    原文链接:http://www.bootcss.com/p/chart.js/docs/ 引入Chart.js文件 首先我们需要在页面中引入Chart.js文件.此工具库在全局命名空间中定义了Char ...

随机推荐

  1. dsu on tree学习笔记

    前言 一次模拟赛的\(T3\):传送门 只会\(O(n^2)\)的我就\(gg\)了,并且对于题解提供的\(\text{dsu on tree}\)的做法一脸懵逼. 看网上的其他大佬写的笔记,我自己画 ...

  2. ML_Review_SVM(Ch9)

    Note sth about SVM(Support Vector Machine) 支持向量机(SVM)从入门到放弃再到掌握这篇博客讲得挺仔细. 动机:   SVM的中文名字--支持向量机.本质是一 ...

  3. Lasso回归的坐标下降法推导

    目标函数 Lasso相当于带有L1正则化项的线性回归.先看下目标函数:RSS(w)+λ∥w∥1=∑Ni=0(yi−∑Dj=0wjhj(xi))2+λ∑Dj=0∣wj∣RSS(w)+λ∥w∥1=∑i=0 ...

  4. linux内核中#if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别

    1. #if IS_ENABLED(CONFIG_XXX) 1.1 IS_ENABLED的定义如下: /* * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CON ...

  5. PAT 甲级 1062 Talent and Virtue (25 分)(简单,结构体排序)

    1062 Talent and Virtue (25 分)   About 900 years ago, a Chinese philosopher Sima Guang wrote a histor ...

  6. PAT 甲级 1038 Recover the Smallest Number (30 分)(思维题,贪心)

    1038 Recover the Smallest Number (30 分)   Given a collection of number segments, you are supposed to ...

  7. 单层反查BOM

    *&---------------------------------------------------------------------* *& Report YCX_001 * ...

  8. 无法连接App Store

    试了很多网上的方法,都没有效果,最后把hosts文件清空了,就可以了,不知道是为啥,同一份hosts文件在屋里能用,公司就不能用.

  9. TrippleDESCSPEncrypt 加密解密试试看

    public class TrippleDESCSPEncrypt { //12个字符 private static string customIV = "4vHKRj3yfzU=" ...

  10. Ajax校验--最近更新

    Ajax(Asynchronous JavaScript and Xml) 整合了JavaScript,XML,CSS,DOM,Ajax引擎(XMLHttpRequest). JavaScript语言 ...