急~求调!6pts
查看原帖
急~求调!6pts
787131
VictorTang楼主2024/8/6 22:31
#include<iostream>
#include<algorithm>
#define int long long
#define MODN 998244353
using namespace std;

char k;
int T, id, n, m, const_C, const_F;
bool mp[1005][1005];
int x[1005][1005], y[1005][1005];

void solve(){
	cin >> n >> m >> const_C >> const_F;
	for (int i=0; i<n; i++){
		for (int j=0; j<m; j++){
			cin >> k;
			mp[i][j] = k - '0';
			x[j][i] = x[j][i-1] + mp[i][j];
			y[i][j] = y[i][j-1] + mp[i][j];
		}
	}
	
	int ways_C = 0;
	int ways_F = 0;
	for (int l=0; l<m; l++){
		for (int lower=0; lower<n; lower++){
			for (int upper=lower+2; upper<n; upper++){
				if (x[l][upper] != x[l][lower-1]) break;
				
				int lower_cnt = lower_bound(y[lower], y[lower]+m, 1) - y[lower] - 1 - l;
				int upper_cnt = lower_bound(y[upper], y[upper]+m, 1) - y[upper] - 1 - l;
				if (lower_cnt < 0 or upper_cnt < 0) break;
				ways_C += (lower_cnt * upper_cnt) % MODN;
				ways_C %= MODN;

				if (upper == n - 1) continue;
				int l_cnt = lower_bound(x[l]+upper, x[l]+n, 1) - x[l] - 1 - upper;
				ways_F += ((lower_cnt * upper_cnt) % MODN * l_cnt) % MODN;
				ways_F %= MODN;
			}
		}
	}
	cout << (const_C * ways_C) << ' ' << (const_F * ways_F) << endl;
}

signed main(){
	cin >> T >> id;
	while (T --) solve();
}
2024/8/6 22:31
加载中...