社区讨论
与题解一思路一致但一直WA,求dalao调
P6648 [CCC 2019] Triangle: The Data Structure参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjssfoo
- 此快照首次捕获于
- 2025/11/04 07:55 4 个月前
- 此快照最后确认于
- 2025/11/04 07:55 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int MAXN=3e3+2,MAXI=3;
int n,p,m[MAXN][MAXN][MAXI];
long long ans=0;
int max_(int x,int y){
int L=log2(p),l=L%3;
int z;
z=max(m[x][y][l],max(m[x-p+(1<<L)][y][l],m[x][y+p-(1<<L)][l]));
if(z>0) z=max(z,max(m[x][y+(p/2-(1<<(L-1)))][l],max(m[x+p/2+(1<<(L-1))][y+(p/2-(1<<(L-1)))][l],m[x+p/2+(1<<(L-1))][y+(p/2-(1<<(L-1)))][l])));
return z;
}
int main(){
scanf("%d%d",&n,&p);
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
scanf("%d",&m[i][j][0]);
int L=log2(p);
for(int k=1;k<=L;k++){
int K=k%3;
for(int i=(1<<k);i<=n;i++){
for(int j=1;j<=i;j++)
if(j+(1<<k)-1<=i){
m[i][j][K]=max(m[i][j][(K+2)%3],max(m[i-(1<<(k-1))][j][(K+2)%3],m[i][j+(1<<(k-1))][(K+2)%3]));
if(k>1) m[i][j][K]=max(m[i][j][K],max(m[i][j+(1<<(k-2))][(K+2)%3],max(m[i-(1<<(k-2))][j][(K+2)%3],m[i-(1<<(k-2))][j+(1<<(k-2))][(K+2)%3])));
// printf("%d ",m[i][j][K]);
}
// printf("\n");
}
}
for(int i=p;i<=n;i++)
for(int j=1;j<=i;j++)
if(j+p-1<=i)
ans+=max_(i,j);
printf("%lld",ans);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...