ACM-ICPC 2018 南京赛区网络预赛 B The writing on the wall
这道题不想写了,直接看我队友的写的博客吧,网上其他博客其他方法我也看不懂。。
ACM-ICPC 2018 南京赛区网络预赛 B The writing on the wall
code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int b[100010][110],up[110];
int main(){
int T,cas = 0;
scanf("%d",&T);
while(T--){
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i = 0; i <= n; i++){
for(int j = 0; j <= m; j++){
b[i][j] = 0;
up[j] = 0;
}
}
for(int i = 0; i < k; i++){
int x,y;
scanf("%d%d",&x,&y);
b[x][y] = 1;
}
ll ans = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(b[i][j]) up[j] = i;
}
for(int j = 1; j <= m; j++){
ll minn = 0x7f7f7f7f7f7f7f7f;
for(int k = j; k > 0; k--){
minn = min(minn,(ll)(i-up[k]));
ans += minn;
}
}
}
printf("Case #%d: %lld\n",++cas,ans);
}
return 0;
}