#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了
啊,哥们回复老帖干嘛