社区讨论
求优化,悬小号一关
P1120[CERC 1995] 小木棍参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mlrni952
- 此快照首次捕获于
- 2026/02/18 14:28 22 小时前
- 此快照最后确认于
- 2026/02/19 11:16 59 分钟前
按照深入浅出上面写的。
57 TLE Record
CPP#include <bits/stdc++.h>
using namespace std;
const int MAXN = 70;
int n, s, now;
int a[MAXN], pre[MAXN], len[MAXN];
void dfs(int rel, int rea, int mina){
if(rel == 0){ // 5
dfs(now, rea - 1, a[n]);
return;
}
if(rea == 0){
printf("%d", now);
exit(0);
}
mina = min(mina, rel);
while(mina && len[mina] == 0)
-- mina;
while(mina){
if(len[mina]){
-- len[mina];
dfs(rel - mina, rea, mina);
++ len[mina];
if(rel == rea || rel == mina) // 6
return;
}
mina = pre[mina]; // 3
}
}
signed main(){
scanf("%d", &n);
for(int i = 1; i <= n; ++ i)
scanf("%d", &a[i]), s += a[i], ++ len[a[i]];
sort(a + 1, a + n + 1); // 4
for(int i = 1; i <= n; ++ i)
if(a[i] != a[i - 1])
pre[a[i]] = a[i - 1];
for(now = a[n]; now <= s / 2; ++ now) // 2
if(s % now == 0) // 1
dfs(now, s / now, a[n]);
printf("%d", s);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...