社区讨论

高消20pts玄关求条

P3265[JLOI2015] 装备购买参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mm30rtuz
此快照首次捕获于
2026/02/26 13:25
上周
此快照最后确认于
2026/02/27 18:05
上周
查看原帖
感觉和lyd的思路一样。But只有20pts。
CPP
#include <bits/stdc++.h>

using namespace std;

const int N = 510;
const double eps = 1e-4;
struct Info {
	double a[N];
	int v;
} b[N];
int n, m, t, cnt, ans;

inline void Gauss() {
	t = n;
	for (int i = 1; i <= n; i++) {
		for (int j = i + 1; j <= n; j++) if (fabs(b[j].a[i]) > eps && b[j].v < b[i].v)
			swap(b[i], b[j]);
		if (fabs(b[i].a[i]) < eps) {
			t = i - 1;
			break;
		}
		for (int j = 1; j <= n; j++) if (j != i) {
			double rate = b[j].a[i] / b[i].a[i];
			for (int k = i; k <= m; k++)
				b[j].a[k] -= rate * b[i].a[k];
		}
	}
	for (int i = 1; i <= t; i++)
		ans += b[i].v;
}

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
			scanf("%lf", &b[i].a[j]);
	for (int i = 1; i <= n; i++)
		scanf("%d", &b[i].v);
	Gauss();
	printf("%d %d\n", t, ans);
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...