社区讨论

求助灵异事件

学术版参与者 9已保存回复 8

讨论操作

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

当前回复
8 条
当前快照
1 份
快照标识符
@mll58ahi
此快照首次捕获于
2026/02/14 01:10
5 天前
此快照最后确认于
2026/02/17 10:15
前天
查看原帖
问题:给出n*m的矩阵,n<=1000,m<=13,对于{1..m}的每一个子集S求出maxi=1n[jS]Aij\max_{i=1}^n\sum [j\in S]A_{ij}
这是个入门问题,所以我写了以下代码:
CPP
rep(i,1,n)rep(j,1,(1<<m)-1){
  int sum=0;rep(k,1,m)if((j>>(k-1))&1)sum+=a[i][k];
  ckmax(F[j],sum);
}
这个代码每个点要跑450ms
然后我TLE怀疑人生去鉴赏了一下一血的代码,发现他也是这样做的,但是他的循环顺序不一样
于是我修改了我的代码:
CPP
rep(j,1,(1<<m)-1)rep(i,1,n){
  int sum=0;rep(k,1,m)if((j>>(k-1))&1)sum+=a[i][k];
  ckmax(F[j],sum);
}
这个代码每个点跑80ms
以上

回复

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

正在加载回复...