当前位置: 首页 > article >正文

3036: 莫比乌斯最大值isUsefulAlgorithm(2023郑州轻工业大学校赛

(SWC85VE8F6{_Y4AH8395{3

题意:

有n个问题和闲聊

问题的格式是’what’s + S 问题 S_{问题} S问题

闲聊的格式是 S 问题 S_{问题} S问题+ S 回答 S_{回答} S回答 S 问题 S_{问题} S问题的长度>=0

对于每个 S 回答 S_{回答} S回答 ,只能回答在这句话之前提问的问题

那么求最多能回答几个不同的问题

思路:

对于每个回答,他的每个前缀都可能是一个出现过的问题

那么我们对于一个回答,让他贪心的回答出现过的前缀最长的问题

因为对于一个回答,如果他的长度长,可以回答长度长的问题和长度短的问题,如果他的长度短的话就只能回答长度短的问题,所以我们优先让他回答没有回答过的长度最长的问题

用umap来记录一个问题是否出现过,以及是否被回答过。

注意:

加了ios::sync_with_stdio(false)就不能用getchar(),需要用cin.get()

对于map的每次询问都是插入,如果对于每出现过的map,需要先判断是否出现过载判断值,可以节省时间防止tle

#include<bits/stdc++.h>
using namespace std;
const int N=4e6+10;
int idx,n;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(),cout.tie();
	cin>>n;
	cin.get();//加了ios不能用getchar
	unordered_map<string,int> chuxian;//记录是否被回答过,如果等于0就是没有
	unordered_map<string,int> huida;
	int con=0;
	for(int i=1;i<=n;i++){
		string s;
		cin>>s;
		if(s=="what's"){
			cin>>s;
			chuxian[s]=1;
		}else{
			string op;
			int id=-1;
			string ans;
			for(int i=0;i<s.size();i++){
				op+=s[i];
				if(chuxian.count(op)&&chuxian[op]==1&&huida.count(op)==0){
					id=i;
					ans=op;
				}
			}
			if(id!=-1){
				huida[ans]=1;
				con++;
			}
		}
	}
	cout<<con;
	return 0;
}


http://www.kler.cn/a/6932.html

相关文章:

  • 记录java Collections.sort踩的坑
  • Linux Kernel Programming 2
  • 4.2 Android NDK 基础概念
  • 创建vue3项目步骤
  • 编写一个生成凯撒密码的程序
  • gitlab 服务器集群配置及 存储扩展配置
  • 二分法模板以及例题 (三)
  • Weblogic RCE + confluence RCE + cacti RCE正反向代理靶场
  • 王炸!ChatGPT这算是彻底打脸马云。。。
  • 「解析」Jetson orin NX烧录系统
  • 腾讯云安装docker
  • 对闭包的理解?闭包使用场景?
  • 亿信华辰全力打造金融统一监管报送平台,你值得拥有
  • 【计算机网络复习】第二章 应用层 2
  • mysql8计算商家距离,按照由近及远排序
  • Hadoop分布式集群安装部署(Redhat 6.4 64位操作系统)
  • 【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题,真题分析与代码讲解
  • 新办林业调查设计资质需要符合什么条件,多久能办下来?
  • 【云原生进阶之容器】第五章容器运行时5.4--容器运行时之Firecracker
  • 使用Nginx代理访问服务器的.mp4文件,并使用Vue播放
  • 鲁大师2023年Q1季度电动车报告:九号独占八榜,差异化竞争完成产品破圈
  • Leetcode.404 左叶子之和
  • PCB技巧(二)
  • Python基础(一)
  • 【C语言】关于我回头学的那些基础语法(一)
  • IntelliJ IDEA 2023.1 最新变化