社区讨论
求助灵异事件
学术版参与者 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求出
这是个入门问题,所以我写了以下代码:
CPPrep(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怀疑人生去鉴赏了一下一血的代码,发现他也是这样做的,但是他的循环顺序不一样
于是我修改了我的代码:
CPPrep(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 条回复,欢迎继续交流。
正在加载回复...