首页 > 其他分享 >CF200D解题报告

CF200D解题报告

时间:2023-12-02 14:22:57浏览次数:30  
标签:return 函数 报告 int CF200D 解题 类型 type name

CF200D 解题报告

题意

给你 \(n\) 个函数,由函数类型函数名参数类型组成。

给你 \(m\) 个变量,由变量类型变量名组成。

给你 \(k\) 个调用关系,由调用的函数名参数名构成。

参数类型变量类型保证为 intdoublestringT 中的一个,其中 T 表示可以匹配任意类型。

分析

很明显,这是一道大模拟,可以先将函数给存储下来,变量名所对应的类型存储下来,最后调用的时候在判断符不符合就好了。

函数可以先将所有符号变成空格,然后使用 vector 将这个函数的每一项存进去,最后塞入一个大的 vector 进行存储。

变量直接使用一个 map 进行映射操作就好了。

查询时将调用函数按上面函数的处理方式处理后跟存储下来的函数进行比较,如果有相同就记录一次。

最后输出答案就切了一道绿题。

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;

int n, m, k;
string s, a, b;
map<string, string> variable_type;//变量名所对应的变量类型
vector<vector<string>> function_type;//储存所有函数,内部的存的是每一个函数的参数类型

bool check(vector<string> a, vector<string> b){//判断是否能对的上,a是函数,b是调用
	if (a.size() - 1 != b.size()) return false;//长度
	if (a[1] != b[0]) return false;//判断函数名
	for (int i = 1; i < b.size(); i++){
		if (a[i + 1] != "T" && a[i + 1] != variable_type[b[i]]) return false;//类型
	}
	return true;
}

signed main(){
	scanf("%lld\n", &n);
	for (int i = 1; i <= n; i++){
		getline(cin, s);
		vector<string> name;
		for (char &c : s) if (c == '(' || c == ')' || c == ',') c = ' ';
		istringstream ss(s);//自动分离空格
		while (ss >> s) name.push_back(s);//将分离后的每一个字符串放入
		function_type.push_back(name);//将每一个函数放入
	} 
	scanf("%lld\n", &m);
	for (int i = 1; i <= m; i++){
		cin >> a >> b;
		variable_type[b] = a;//将变量名和类型对应起来
	}
	scanf("%lld\n", &k);
	for (int i = 1; i <= k; i++){
		int cnt = 0;
		getline(cin, s);
		vector <string> name;
		for (char &c : s) if (c == '(' || c == ')' || c == ',') c = ' ';
		istringstream ss(s);
		while (ss >> s) name.push_back(s);//同上,分离空格
		for (int j = 0; j < n; j++){
			if (check(function_type[j], name)) cnt++;
		}
		printf("%lld\n", cnt);
	}
	return 0;
}

标签:return,函数,报告,int,CF200D,解题,类型,type,name
From: https://www.cnblogs.com/ccf-ioi/p/17871552.html

相关文章

  • CF718A解题报告
    CF718A解题报告题意给你一个长度为\(n\)的浮点数,最多四舍五入\(t\)次,求可以得到的最大值。注意:四舍五入之针对小数部分,不针对整数部分。输出时不能有前缀\(0\),和后缀\(0\)。当最大的数变成整数了,就不输出小数点。分析根据题面,很容易想到要用贪心,只需要再加那么一......
  • P4162解题报告
    P4162解题报告题意给你一张\(n\timesm\)的图,其中\(a_{i,j}=1\)表示有障碍,否则没有障碍,其中可以消除\(t\)个障碍,求所有格子的最大距离。分析这其实就是一道搜索的版子题。根据数据范围很容易想到可以枚举起点,然后通过广搜遍历起点到每一个点的距离和需要消除障碍的个......
  • 袋鼠云产品功能更新报告08期|近百项全新功能和优化,你要的都在这里!
    欢迎来到袋鼠云08期产品功能更新报告!在瞬息万变的市场环境中,我们深知客户的需求与期待,因此,我们及时推出袋鼠云最新产品更新及优化,包括数据治理中心、HiveSQL性能优化、新插件等,助力企业在数字世界中勇往直前。以下为袋鼠云产品功能更新报告08期内容,更多探索,请继续阅读。离线开发......
  • CMO 2023 P1 解题报告
    \zihao{4}\textbf{Problem:}\large求最小的实数$\lambda$,使得对任意正整数$n$,存在正整数$x_1,x_2,\dots,x_{2023}$,满足$n=x_1x_2\dotsx_{2023}$,且对于$i\in\{1,2,\dots,2023\}$,要么$x_i$为素数,要么$x_i\len^{\lambda}$。\\\zihao{......
  • 软件测试外包公司怎么选择?软件测试报告如何收费?
    随着科技信息的发展,软件产品质量成为企业和用户共同关注话题,因此有效保障软件产品质量的测试手段必不可少。一般为了获取更客观权威的检测报告,企业会将测试工作交由软件测试外包公司进行,也就是专门从事软件测评服务的第三方检测机构。软件测试外包有2种形式可进行:一种是甲......
  • 『Jmeter超级干货』| Linux下Jmeter安装配置、脚本设计执行、监控及报告完整过程
    (『Jmeter超级干货』|Linux下Jmeter安装配置、脚本设计执行、监控及报告完整过程)注意:1、之前写过一个是windows平台的,本文是Linux平台的;2、另外需要注意的是,本文仅为示例过程,所以将客户端和服务器都用在同一台机器上。一般情况下不建议这么做,会影响性能结果的准确性。1JDK......
  • 【专题】从新能源车险看财险经营模式变革报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34418原文出处:拓端数据部落公众号报告合集对中国新能源汽车市场的发展机遇、当前行业状况及未来趋势进行了详细分析。同时,从专业角度分享了海外市场的前沿经验以及中国新能源汽车生态的案例。报告合集总结指出,新能源汽车专属车险的发展和完善不仅......
  • 【专题】2022年中国跨境电商行业研究报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32044近年来,我国的跨境电子商务发展迅速,在过去五年中,其贸易额增长率达到了16.2%,已经成为稳定对外贸易的一支重要力量。阅读原文,获取专题报告合集全文,解锁文末52份跨境电商行业相关报告。一方面,随着跨境电子商务的发展,跨境电子商务的监管政策得到了......
  • 原语科技案例入选《2023全球隐私计算报告》
    在这个数字化迅速发展的时代,隐私计算作为保护数据安全的重要技术,正受到全球范围内越来越多的关注。11月23日,第二届全球数字贸易博览会在杭州国际博览中心隆重举行。来源:《2023全球隐私计算报告》报告亮点国内外频繁出台的隐私计算相关政策国际上今年发生的隐私计算相关动......
  • 【专题】2022汽车品牌影响力研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34404原文出处:拓端数据部落公众号近年来,汽车市场中的品牌销量排名发生了巨大的变化,形成了比亚迪和大众两大巨头。比亚迪在中国品牌中的销量增长迅速,特别是在新能源领域,引领着中国品牌的快速增长。豪华品牌方面,形成了一个由BBA和特斯拉组成的新一......