阅 读 程 序 题
  • 板块学术版
  • 楼主蒟蒻炒扇贝
  • 当前回复9
  • 已保存回复9
  • 发布时间2020/10/17 15:03
  • 上次更新2023/11/5 10:34:48
查看原帖
阅 读 程 序 题
19228
蒟蒻炒扇贝楼主2020/10/17 15:03

关于下面的程序,蒟蒻有几个问题(

#pragma GCC optimize(2)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
using namespace std;
#define int long long
int n,m,q,cnt,ans,vis[10005][10005];
string s[10005],zd[1000005];
map<string,int>mp;
signed main()
{
	cin>>n>>m>>q;
	for(int i=0;i<n;i++)
	{
		cin>>s[i];
		zd[cnt++]=s[i];
		if(!mp[zd[cnt-1]])
		{
			mp[zd[cnt-1]]=1;
			ans++;
		}
	}
	for(int j=0;j<n;j++)
	{
		for(int i=0;i<m;i++)
			zd[cnt].push_back(s[i][j]);
		if(!mp[zd[cnt]])
		{
			mp[zd[cnt]]=1;
			ans++;
		}
		cnt++;
	}
	printf("%lld\n",ans);
	while(q--)
	{
		int x,y;
		char ch;
		cin>>x>>y;
		cout<<x<<" "<<y<<endl;
		getchar();
		cin>>ch;
		s[x-1][y-1]=ch;
		for(int i=0;i<m;i++)
			zd[cnt].push_back(s[x-1][i]);
		if(!mp[zd[cnt]])
		{
			ans++;
			mp[zd[cnt]]=1;
		}
		cnt++;
		for(int i=0;i<n;i++)
			zd[cnt].push_back(s[i][y-1]);
		if(!mp[zd[cnt]])
		{
			ans++;
			mp[zd[cnt]]=1;
		}
		cnt++;
		printf("%lld\n",ans);
	}
}

这个代码在做什么并不重要

这个程序在n=3000n=3000m=3000m=3000,q=500000q=500000时会MLE。

然而这个蒟蒻并不知道这个程序是因为string还是因为map而MLE,所以我就来这里发帖求助了!

谢谢你们!ORZ

2020/10/17 15:03
加载中...