第3题wa60,求帮助

#include <bits/stdc++.h>
#define sc scanf
#define pr printf
#define ll long long
using namespace std;
ll n,m,t;
map<string, ll> val;
map<string, pair<bool,pair<string,string>>> avg;
map<string, pair<bool,pair<string,string>>> sum;
void add(string s,ll x)
{
	val[s]=x;
}
void cala(string s, string a1, string a2)
{
	val[s]=0;
	string ca1=a1;
	string ca2=a2;
	ca1.erase(0,1);
	ca2.erase(0,1);
	ll f=stol(ca1);
	ll l=stol(ca2);
	for(char i=a1[0]; i <= a2[0]; i++)
	{
		for(ll j=f; j <= l; j++)
		{
			string loc="";
			loc+=i;
			loc+= to_string(j);
			val[s]+=val[loc];
		}
	}
	val[s]/=((ll)(a2[0]-a1[0]+1)*(l-f+1));
}
void cals(string s, string a1, string a2)
{
	val[s]=0;
	string ca1=a1;
	string ca2=a2;
	ca1.erase(0,1);
	ca2.erase(0,1);
	ll f=stol(ca1);
	ll l=stol(ca2);
	for(char i=a1[0]; i <= a2[0]; i++)
	{
		for(ll j=f; j <= l; j++)
		{
			string loc="";
			loc+=i;
			loc+=to_string(j);
			val[s]+=val[loc];
		}
	}
}
void print(string s)
{
	pr("%lld\n",val[s]);
}
int main()
{
	//freopen("1.txt","r",stdin);
	sc("%lld%lld%lld",&n,&m,&t);
	for(ll i=1; i <= n; i++)
	{
		for(ll j=1; j <= m; j++)
		{
			string loc="";
			loc+=char(i+'A'-1);
			loc+=to_string(j);
			avg[loc]={0,{"",""}};
			sum[loc]={0,{"",""}};
			val[loc]=0;
		}
	}
	string s,s2;
	ll a;
	string a1,a2;
//	cin >> s;
	while(t--)
	{
		for(ll i=1; i <= n; i++)
		{
			for(ll j=1; j <= m; j++)
			{
				string loc="";
				loc+=char(i+'A'-1);
				loc+=to_string(j);
				if(avg[loc].first)
				{
					cala(loc,avg[loc].second.first,avg[loc].second.second);
				}
				else
				if(sum[loc].first)
				{
					cals(loc,sum[loc].second.first,sum[loc].second.second);
				}
			}
		}
		cin >> s >> s2;
		if(s2=="input")
		{
			cin >> a;
			add(s,a);
		}
		else if(s2=="sum")
		{
			cin >> a1 >> a2;
			sum[s].first=1;
			if(avg[s].first)
			{
				avg[s]={0,{"",""}};
			}
			sum[s].second.first=a1;
			sum[s].second.second=a2;
			cals(s,a1,a2);
		}
		else if(s2=="avg")
		{
			cin >> a1 >> a2;
			avg[s].first=1;
			if(sum[s].first)
			{
				sum[s]={0,{"",""}};
			}
			avg[s].second.first=a1;
			avg[s].second.second=a2;
			cala(s,a1,a2);
		}
		else if(s2=="output")
		{
			print(s);
		}
	}
	return 0;
}
1 个赞
#include <bits/stdc++.h>
#define sc scanf
#define pr printf
#define ll long long
using namespace std;
ll n,m,t;
map<string, ll> val;
map<string, pair<bool,pair<string,string>>> avg;
map<string, pair<bool,pair<string,string>>> sum;
void add(string s,ll x)
{
	val[s]=x;
	if(avg[s].first||sum[s].first)
	{
		avg[s]={0,{"",""}};
		sum[s]={0,{"",""}};
	}
}
void cala(string s, string a1, string a2)
{
	val[s]=0ll;
	string ca1=a1;
	string ca2=a2;
	ca1.erase(0,1);
	ca2.erase(0,1);
	ll f=stol(ca1);
	ll l=stol(ca2);
	for(char i=a1[0]; i <= a2[0]; i++)
	{
		for(ll j=f; j <= l; j++)
		{
			string loc="";
			loc+=i;
			loc+= to_string(j);
			val[s]+=val[loc];
		}
	}
	val[s]/=((ll)(a2[0]-a1[0]+1ll)*(l-f+1ll));
}
void cals(string s, string a1, string a2)
{
	val[s]=0ll;
	string ca1=a1;
	string ca2=a2;
	ca1.erase(0,1);
	ca2.erase(0,1);
	ll f=stol(ca1);
	ll l=stol(ca2);
	for(char i=a1[0]; i <= a2[0]; i++)
	{
		for(ll j=f; j <= l; j++)
		{
			string loc="";
			loc+=i;
			loc+=to_string(j);
			val[s]+=val[loc];
		}
	}
}
void print(string s)
{
	pr("%lld\n",val[s]);
}
int main()
{
	//freopen("1.txt","r",stdin);
	//freopen("2.txt","w",stdout);
	sc("%lld%lld%lld",&n,&m,&t);
	for(ll i=1ll; i <= n; i++)
	{
		for(ll j=1ll; j <= m; j++)
		{
			string loc="";
			loc+=char(i+'A'-1ll);
			loc+=to_string(j);
			avg[loc]={0,{"",""}};
			sum[loc]={0,{"",""}};
			val[loc]=0;
		}
	}
	string s,s2;
	ll a;
	string a1,a2;
//	cin >> s;
	while(t--)
	{
		cin >> s >> s2;
		if(s2=="input")
		{
			cin >> a;
			add(s,a);
		}
		else if(s2=="sum")
		{
			cin >> a1 >> a2;
			sum[s].first=1;
			if(avg[s].first)
			{
				avg[s]={0,{"",""}};
			}
			sum[s].second.first=a1;
			sum[s].second.second=a2;
			cals(s,a1,a2);
		}
		else if(s2=="avg")
		{
			cin >> a1 >> a2;
			avg[s].first=1;
			if(sum[s].first)
			{
				sum[s]={0,{"",""}};
			}
			avg[s].second.first=a1;
			avg[s].second.second=a2;
			cala(s,a1,a2);
		}
		if(s2=="output")
		{
			print(s);
		}
//		for(ll i=1ll; i <= n; i++)
//		{
//			cout << char(i+'A'-1ll)<<": ";
//			for(ll j=1ll; j <= m; j++)
//			{
//				string loc="";
//				loc+=char(i+'A'-1ll);
//				loc+=to_string(j);
//				pr("%lld ",val[loc]);
//			}
//			pr("\n");
//		}
//		pr("\n");
		for(ll i=1ll; i <= n; i++)
		{
			for(ll j=1ll; j <= m; j++)
			{
				string loc="";
				loc+=char(i+'A'-1ll);
				loc+=to_string(j);
				if(avg[loc].first)
				{
					cala(loc,avg[loc].second.first,avg[loc].second.second);
				}
				else
				if(sum[loc].first)
				{
					cals(loc,sum[loc].second.first,sum[loc].second.second);
				}
			}
		}
	}
	return 0;
}
4 个赞

在下不才求题面

3 个赞

这都7个月了,你还在看这些老帖?

3 个赞

不然呢?

2 个赞

题目ID1372,去年A了

啊,哥们回复老帖干嘛