社区讨论
救命!求调!
P1005[NOIP 2007 提高组] 矩阵取数游戏参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m0qc3uqg
- 此快照首次捕获于
- 2024/09/06 14:27 2 年前
- 此快照最后确认于
- 2025/11/04 21:41 4 个月前
CPP
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
using ll = __int128;
namespace awa {
const ll N = 100;
ll a[N], f[N][N];
ll maxx[N];
int t = 1;
int n, m;
ll read();
void dp(int, int);
void out(ll);
void solve() {
n = read(), m = read();
for (t = 1; t <= n; t++) {
for (int i = 1; i <= m; i++) a[i] = read();
for (int i = 1; i <= m; i++)
f[i][i] = a[i] * (1 << m);
for (int i = 1; i <= m; i++) {
for (int j = i ; j <= m; j++) {
f[i][j] = max(f[i + 1][j] + a[i] * (1 << (m - j + i)),
f[i][j - 1] + a[j] * (1 << (m - j + i)));
}
}
maxx[t] = f[1][m];
}
ll sum = 0;
for (int i = 1; i <= n; i++) {
sum += maxx[i];
}
out(sum);
}
void out(ll x) {
if (x == 0) {
putchar('0');
return;
}
int q[42], top = 0;
memset(q, 0, sizeof q);
while (x > 0) {
q[++top] = x % 10;
x = x / 10;
}
for (int i = top; i >= 1; i--)
printf("%d", q[i]);
}
ll read() {
ll x = 0, f = 1;
char c = getchar();
while (!isdigit(c)) {
if (c == '-')
f = -1;
c = getchar();
}
while (isdigit(c)) {
x = x * 10 + c - '0';
c = getchar();
}
return x * f;
}
}
int main() {
awa::solve();
return 0;
}
就是方程应该没问题,但是样例都过不去。。。
求助QAQ。
回复
共 1 条回复,欢迎继续交流。
正在加载回复...