QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#560511 | #859. Civilizations | rotcar07 | Compile Error | / | / | C++20 | 2.8kb | 2024-09-12 16:04:32 | 2024-09-12 16:04:32 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int w[505][505],p[505][505];
int n,q;
int sum[250005],l[250005],cnt[250005];
multiset<ll> sb[250005];
typedef long long ll;
inline void solve(){
cin>>n;
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) cin>>w[i][j];
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) cin>>p[i][j],p[i][j]++;
for(int i=1;i<=n*n;i++) sum[i]=l[i]=cnt[i]=0,sb[i].clear();
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){
sum[p[i][j]]+=w[i][j];cnt[p[i][j]]++;
if(i<n)
if(p[i][j]!=p[i+1][j]) l[p[i][j]]++,l[p[i+1][j]]++;
if(j<n)
if(p[i][j]!=p[i][j+1]) l[p[i][j]]++,l[p[i][j+1]]++;
}cin>>q;
unordered_set<int> v;
for(int i=1;i<=n*n;i++)if(cnt[i])v.insert(l[i]),sb[l[i]].insert(sum[i]);
while(q--){
int x,y,z;ll A,B,C;cin>>x>>y>>z>>A>>B>>C;z++;
auto del=[&](int z){
int a=l[z];ll b=sum[z];
if(!cnt[z]) return;
sb[a].erase(sb[a].lower_bound(b));
if(sb[a].empty()) v.erase(a);
};
auto add=[&](int z){
int a=l[z];ll b=sum[z];
if(!cnt[z]) return;
// cout<<"ADD "<<z<<' '<<a<<' '<<b<<'\n';
sb[a].insert(b);
if(sb[a].size()==1) v.insert(a);
};
if(z!=p[x][y]){
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
int w=p[x][y];
for(int d=0;d<4;d++){
int xx=x+dx[d],yy=y+dy[d];
if(xx<1||yy<1||xx>n||yy>n) continue;
del(p[xx][yy]);
if(w!=p[xx][yy])l[p[xx][yy]]--;
if(z!=p[xx][yy])l[p[xx][yy]]++;
add(p[xx][yy]);
}
del(w),del(z);
for(int d=0;d<4;d++){
int xx=x+dx[d],yy=y+dy[d];
if(xx<1||yy<1||xx>n||yy>n) continue;
if(w!=p[xx][yy])l[w]--;
if(z!=p[xx][yy])l[z]++;
}cnt[w]--,cnt[z]++;
sum[w]-=::w[x][y];
add(w);
p[x][y]=z;
sum[z]+=::w[x][y];
add(z);
}
ll ans=-1e18;
// for(int i=1;i<=n*n;i++) cout<<i<<' '<<l[i]<<' '<<sum[i]<<' '<<cnt[i]<<'\n';
for(auto x:v){
ll d=A+C*x;
// cout<<x<<' '<<sb[x].size()<<'\n';
// for(auto z:sb[x]) cout<<z<<' ';cout<<'\n';
assert(!sb[x].empty());
if(d<0)ans=max(ans,B*x+d**sb[x].begin());
else ans=max(ans,B*x+d**sb[x].rbegin());
}
cout<<ans<<"\n "[!!q];
}
}
int main(){
// string name="A";freopen((name+".in").c_str(),"r",stdin);//freopen((name+".out").c_str(),"w",stdout);
std::ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t;cin>>t;
while(t--) solve();
cerr<<clock()*1.0/CLOCKS_PER_SEC<<'\n';
}
詳細信息
answer.code:6:10: error: ‘ll’ was not declared in this scope; did you mean ‘l’? 6 | multiset<ll> sb[250005]; | ^~ | l answer.code:6:12: error: template argument 1 is invalid 6 | multiset<ll> sb[250005]; | ^ answer.code:6:12: error: template argument 2 is invalid answer.code:6:12: error: template argument 3 is invalid answer.code: In function ‘void solve()’: answer.code:12:56: error: request for member ‘clear’ in ‘sb[i]’, which is of non-class type ‘int’ 12 | for(int i=1;i<=n*n;i++) sum[i]=l[i]=cnt[i]=0,sb[i].clear(); | ^~~~~ answer.code:21:62: error: request for member ‘insert’ in ‘sb[l[i]]’, which is of non-class type ‘int’ 21 | for(int i=1;i<=n*n;i++)if(cnt[i])v.insert(l[i]),sb[l[i]].insert(sum[i]); | ^~~~~~ answer.code: In lambda function: answer.code:27:19: error: request for member ‘erase’ in ‘sb[a]’, which is of non-class type ‘int’ 27 | sb[a].erase(sb[a].lower_bound(b)); | ^~~~~ answer.code:27:31: error: request for member ‘lower_bound’ in ‘sb[a]’, which is of non-class type ‘int’ 27 | sb[a].erase(sb[a].lower_bound(b)); | ^~~~~~~~~~~ answer.code:28:22: error: request for member ‘empty’ in ‘sb[a]’, which is of non-class type ‘int’ 28 | if(sb[a].empty()) v.erase(a); | ^~~~~ answer.code: In lambda function: answer.code:34:19: error: request for member ‘insert’ in ‘sb[a]’, which is of non-class type ‘int’ 34 | sb[a].insert(b); | ^~~~~~ answer.code:35:22: error: request for member ‘size’ in ‘sb[a]’, which is of non-class type ‘int’ 35 | if(sb[a].size()==1) v.insert(a); | ^~~~ In file included from /usr/include/c++/13/cassert:44, from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:106, from answer.code:1: answer.code: In function ‘void solve()’: answer.code:67:27: error: request for member ‘empty’ in ‘sb[x]’, which is of non-class type ‘int’ 67 | assert(!sb[x].empty()); | ^~~~~ answer.code:68:45: error: request for member ‘begin’ in ‘sb[x]’, which is of non-class type ‘int’ 68 | if(d<0)ans=max(ans,B*x+d**sb[x].begin()); | ^~~~~ answer.code:69:43: error: request for member ‘rbegin’ in ‘sb[x]’, which is of non-class type ‘int’ 69 | else ans=max(ans,B*x+d**sb[x].rbegin()); | ^~~~~~