首页 > 其他分享 >2024.7.27第二周周六学习总结

2024.7.27第二周周六学习总结

时间:2024-07-27 09:29:09浏览次数:9  
标签:map 27 2024.7 int 矩阵 cin 第二周 mp define

vj4补题(上午)

线段树+multiset(buhui)

原文链接:https://blog.csdn.net/m0_64158084/article/details/127790615

补充)set和mutiset

一个自动去重,一个不去重。
image

字典树/map

题目:给你一个N x N的矩阵,矩阵由小写字母和#组成,#为障碍。然后给出m个字符串和该字符串对应的值。然后从矩阵中截取子串,子串指矩阵中水平方向从左到右碰到障碍的最长串,或者竖直方向从上到下碰到障碍的最长串,也或是碰到矩阵边界的最长串,问这些子串是否都存在于m个给定的字符串中,若存在则输出值的总和,否则输出-1。
如果从矩阵中得到的单词在字典中不存在,那么输出 -1

题解

补充 unordered_map和map

unordered_map
不需要元素有序,只关心快速的插入、删除和查找操作,大多数查找操作都是常数时间复杂度的情况下。
map
元素的有序访问。
mp.count(s) 表示统计关联容器 mp 中键为 s 的元素出现的次数,返回次数。

点击查看代码
#include<bits/stdc++.h>
using namespace std;

#define Ios ios::sync_with_stdio(false),cin.tie(0)
#define mem(a,b) memset(a,b,sizeof a)
#define int long long
#define fi first
#define se second
#define endl '\n'

/**/

const int N = 2010, mod = 1e9+7;
int T, n, m;
char a[N][N];

unordered_map<string,int> mp, f;

signed main()
{
	Ios;
	cin >> T;
	while(T--)
	{
		cin >> n >> m;
		for(int i=1; i<=n; i++)
		{
			for(int j=1; j<=n; j++)
			{
				cin >> a[i][j];
			}
		}

		mp.clear();
//记得清空 
		for(int i=1; i<=m; i++)
		{
			string s;
			cin >> s;
			int x;
			cin>>x;
			mp[s] = x;
		}

		int ans = 0, flag = 1;
//横着扫描
		for(int i=1; i<=n; i++)
		{
			string s;
			for(int j=1; j<=n; j++)
			{
				if(a[i][j] == '#')
				{
					if(s != "" && !mp.count(s)) flag = 0;
					//矩阵中的单词不存在 
					else ans += mp[s];
					s = "";
					//置空s,重新统计 
				}
				else s += a[i][j];
				//string的拼接可用+ 
			}
			//到了边界 
			if(s != "" && !mp.count(s)) flag = 0;
			else ans += mp[s];
		}
//竖着扫描
		for(int j=1; j<=n; j++)
		{
			string s;
			for(int i=1; i<=n; i++)
			{
				if(a[i][j] == '#')
				{
					if(s != "" && !mp.count(s)) flag = 0;
					else ans += mp[s];
					s = "";
				}
				else s += a[i][j];
			}
			if(s != "" && !mp.count(s)) flag = 0;
			else ans += mp[s];
		}

		if(!flag) cout << -1 << endl;
		else cout << ans << endl;
	}

	return 0;
}

标签:map,27,2024.7,int,矩阵,cin,第二周,mp,define
From: https://www.cnblogs.com/hoshino-/p/18326631

相关文章

  • 周总结7.27
    对于本周呢,对MYSQL的学习也告一段落,大致的学习并了解了MYSQL这个数据库本周学习了:1.锁:了解到了他是计算机的一种协调多个进程或线程并发访问的一种机制,分为全局锁,表级锁,行级锁。表级锁又分为:表锁,元数据锁,意向锁;行级锁又分为:行锁,间隙锁,临键锁;2.INNODB引擎:逻辑存储空间分为表空间,......
  • 2024.7.26总结
    今天学习一些基本DP线性DP区间DP状压DP树形DP数位DP不好定转移顺序就用记忆化搜索。线性DP一般定义形如\(dp_{i,s}\)的状态,表示考虑了前\(i\)个,限制为\(s\)的最优解。视情况可以把\(i\)压掉,或者把\(s\)在枚举中体现以此压掉。区间DP是从小区间合并到大区间,注意转移顺序,......
  • 学习Java的第十一天啦(2024.7.26)
    1.死锁的条件:死锁的产生还涉及到一些具体的条件,这些条件可以被看作是死锁产生的必要条件,包括:1.互斥条件:资源不能被多个进程或线程同时访问,即资源是互斥的。2.请求保持条件:进程或线程在请求资源时,已经持有其他资源,并且不愿意释放已经持有的资源。3.不可剥夺条件:已经分配给进......
  • JAVA集中学习第二周学习记录(四)
    系列文章目录第一章JAVA集中学习第一周学习记录(一)第二章JAVA集中学习第一周项目实践第三章JAVA集中学习第一周学习记录(二)第四章JAVA集中学习第一周课后习题第五章JAVA集中学习第二周学习记录(一)第六章JAVA集中学习第二周项目实践第七章JAVA集中学习第二......
  • JAVA集中学习第二周项目实践[图书管理系统]
    系列文章目录第一章JAVA集中学习第一周学习记录(一)第二章JAVA集中学习第一周项目实践第三章JAVA集中学习第一周学习记录(二)第四章JAVA集中学习第一周课后习题第五章JAVA集中学习第二周学习记录(一)第六章JAVA集中学习第二周项目实践文章目录系列文章目录......
  • 近期题解(2024.7.26)
    CF1070AFindaNumber一个朴素的想法是设\(dp_{x,y}\)表示模\(d\)为\(x\)且和为\(y\)的最小值,那么答案就是\(dp_{0,s}\)。自然初始状态为\(dp_{0,0}=0\),但是我们发现这个转移关系是带环的,所以说要把这个dp换成最短路。直接从\((0,0)\)为源跑一遍bfs即可,时间复......
  • wsl docker 安装frp内网穿透出现error: dial tcp 127.0.0.1:xxxx: connect: connectio
    ​环境为win11+wsl2+dockerdesktop+frp镜像发生背景:wsl配置文件中我设置了networkingMode=mirrored所以一般情况下wsl2和主机ip一致,可互通原始配置文件为#frpc.toml配置文件端口映射部分[text]type=tcp#模式local_ip=127.0.0.1#本机iplocal_port=1234#本机端口rem......
  • 2024.7.25(Git、gitlab以及分支管理)
    分布式版本控制系统一、Git概述Git是一种分布式版本控制系统,用于跟踪和管理代码的变更。它是由LinusTorvalds创建的,最初被设计用于Linux内核的开发。Git允许开发人员跟踪和管理代码的版本,并且可以在不同的开发人员之间进行协作。Github用的就是Git系统来管理它们的网......
  • 7.25第二周周四学习总结
    算法竞赛(差分)(上午)初始化#include<algorithm>intarr[100];std::fill(arr,arr+100,0);//比memset更高效intarr[100]={};//所有元素都初始化为0栈溢出为局部变量每次运行时都在运行栈中分配,如果数组很大,结果会造成运行栈溢出,自然就运行不了另外,使用全局变......
  • Maxon industrial QCN6224 QCN6274 QCN9274 Wi-Fi 7 modules
    Highlights:EmbeddedQualcomm®QCN6224/QCN6274/QCN9274:Deliversgroundbreakingupto10Gbpsandoffersextremelyrevolutionaryhigh-speeddatatransmissiontoensureafluentexperienceincomprehensivemultiple-endsapplicationscenarios.PowerfulSigna......