我似乎就70 @[Little_AC_Prince](/space/show?uid=18993)
by REFLAME_ASH @ 2018-10-05 21:42:42
@[Little_AC_Prince](/space/show?uid=18993) 你连你的状态是啥都不说,我们怎么给你看
by ___I_AK_IOI @ 2018-10-05 21:43:04
我是按前者写的
by REFLAME_ASH @ 2018-10-05 21:45:11
@[白哥小葱](/space/show?uid=54520) 枚举i,即前i个兵,f[j][k]表示和为j共选了k个兵的方案是否可行。
by 以墨 @ 2018-10-05 21:51:32
@[Little_AC_Prince](/space/show?uid=18993)
题目中讲了,两队人数不能相差超过1
by REFLAME_ASH @ 2018-10-05 21:52:41
@[dimension_missing](/space/show?uid=36882) 我也不太确定到底怎么错的。YGP说要往后退的,可能是玄学。
by 以墨 @ 2018-10-05 21:52:56
另外,对于你的AC代码,我提供一组hack数据
```
3
3 3 7
```
你程序输出的是 3 10
应该是 6 7
by REFLAME_ASH @ 2018-10-05 21:55:03
@[dimension_missing](/space/show?uid=36882)
```cpp
#include<cstdio>
using namespace std;
const int N=207;
int f[N<<6][N],n,su,a[N];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]),su+=a[i];
f[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=su>>1;j>=a[i];j--)
for(int k=i;k>=1;k--)
f[j][k]=f[j-a[i]][k-1]|f[j][k];
for(int j=su>>1;j>=0;j--)
if(f[j][n>>1]){
printf("%d %d\n",j,su-j);
return 0;
}
return 0;
}
```
我发现第一份改了个输出也A了......
by 以墨 @ 2018-10-05 21:55:09
@[dimension_missing](/space/show?uid=36882) 呃呃呃。数据水炸了。
by 以墨 @ 2018-10-05 21:56:22
我现在还是70
by REFLAME_ASH @ 2018-10-05 21:57:15