代码训练队题单清算 2025.5.5 前缀和&差分&搜索

P1387 最大正方形

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int n, m, ans = 0;
int arr[105][105];
int sum[105][105];

int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> arr[i][j];
			sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + arr[i][j];
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			for (int k = 0; k <= min(n - i, m - j ); k++) {
				if (sum[i + k][j + k] - sum[i - 1][j + k] - sum[i + k][j - 1] + sum[i - 1][j - 1] == (k + 1) * (k + 1)) {
					ans = max(ans, k + 1);

				}
			}
		}
	}
	cout << ans;
	return 0;
}

P3397 地毯

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int n, m, arr[1005][1005], ans[1005][1005];

int main() {
	cin >> n >> m;
	int x1, y1, x2, y2;
	for (int i = 1; i <= m; i++) {
		cin >> x1 >> y1 >> x2 >> y2;
		for (int j = x1; j <= x2; j++) {
			for (int k = y1; k <= y2; k++) {
				ans[j][k]++;
			}
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cout << ans[i][j] << ' ';
		}
		cout << endl;
	}
	return 0;
}

P2280 [HNOI2003] 激光炸弹

#include <iostream>
#include <algorithm>
using namespace std;

int n, m, s[5010][5010];


int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i ++) {
		int x, y, v;
		cin >> x >> y >> v;
		s[x + 1][y + 1] += v;
	}
	int N = 5001; 
	for (int i = 1; i <= N; i ++)
		for (int j = 1; j <= N; j ++)
			s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + s[i][j];
	int ans = 0;
	for (int i = m; i <= N; i ++)
		for (int j = m; j <= N; j ++) {
			int num = s[i][j] - s[i - m][j] - s[i][j - m] + s[i - m][j - m];
			ans = max(ans, num);  
		}
	cout << ans << endl;
	return 0;
}

P4552 [Poetize6] IncDec Sequence

很有意思的一道题,解出来很有成就感

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n;
ll sum[100005], arr[100005];


int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> sum[i];
		arr[i] = sum[i] - sum[i - 1];
	}
	ll sum1 = 0, sum2 = 0;
	for (int i = 2; i <= n; i++) {
		if (arr[i] > 0) {
			sum1 += arr[i];
		}else{
			sum2 -= arr[i];
		}
	}
	ll ans = max(sum1, sum2);
	ll cat = abs(sum1 - sum2) + 1;
	cout << ans << endl << cat << endl;
	return 0;
}

P1219 [USACO1.5] 八皇后 Checker Challenge

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
using namespace std;
int a[100], b[100], c[100], d[100];
int total;
int n;
void print() {
	if (total <= 2) {
		for (int k = 1; k <= n; k++)
			cout << a[k] << " ";
		cout << endl;
	}
	total++;

}
void queen(int i) {
	if (i > n) {
		print();
		return;
	} else {
		for (int j = 1; j <= n; j++) {
			if ((!b[j]) && (!c[i + j]) && (!d[i - j + n])) { //如果没有皇后占领,执行以下程序
				a[i] = j;
				b[j] = 1;
				c[i + j] = 1;
				d[i - j + n] = 1;
				queen(i + 1);
				b[j] = 0;
				c[i + j] = 0;
				d[i - j + n] = 0;
			}
		}
	}
	return;
}
int main() {
	cin >> n;
	queen(1);
	cout << total;
	return 0;
}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇