2 条题解
-
0
a=[[0 for i in range(19)] for j in range(19)] flag=0 x=0 y=0 def out() : for i in range(19) : print(a[i]) def check() : for i in range(0,15) : for j in range(0,15) : num=a[i][j]+a[i][j+1]+a[i][j+2]+a[i][j+3]+a[i][j+4] sun=a[i][j]+a[i+1][j]+a[i+2][j]+a[i+3][j]+a[i+4][j] if num==5 or sun==5 : return 1 if num==-5 or sun==-5 : return -1 for i in range(4,19) : for j in range(0,15) : num=a[i][j]+a[i-1][j+1]+a[i-2][j+2]+a[i-3][j+3]+a[i-4][j+4] if num==5 : return 1 if num==-5 : return -1 for i in range(0,15) : for j in range(0,15) : num=a[i][j]+a[i+1][j+1]+a[i+2][j+2]+a[i+3][j+3]+a[i+4][j+4] if num==5 : return 1 if num==-5 : return -1 while(1) : if(flag==0) : print("请黑方落子",end="") else : print("请白方落子",end="") x,y=map(int,input().split()) if(a[x][y]!=0) : continue if(flag==0) : a[x][y]=1 else : a[x][y]=-1 out() ans=check() if ans==1 : print("黑赢",end="") break elif ans==-1 : print("白赢",end="") break flag=(flag+1)%2
-
0
N=200008 tr=[0 for i in range(N*4)] ssum=[0 for i in range(N*4)] lsum=[0 for i in range(N*4)] rsum=[0 for i in range(N*4)] b=[[0 for i in range(20001)]for i in range(200)] a=[0 for i in range(20001)] def up(x): tr[x]=tr[x<<1]+tr[x<<1|1] ssum[x]=max(max(ssum[x<<1],ssum[x<<1|1]),rsum[x<<1]+lsum[x<<1|1]) lsum[x]=max(lsum[x<<1],tr[x<<1]+lsum[x<<1|1]) rsum[x]=max(rsum[x<<1|1],tr[x<<1|1]+rsum[x<<1]) def build(x,l,r): if(l==r): tr[x]=a[l] ssum[x]=lsum[x]=rsum[x]=tr[x] return mid=(l+r)>>1 build(x<<1,l,mid) build(x<<1|1,mid+1,r) up(x) def query(x,l,r,L,R): if(l<=L and R>=r): return ssum[x] mid=(l+r)>>1 ret=-100000 if(L<=mid): ret=max(query(x<<1,l,mid,L,R),ret) if(R>mid): ret=max(query(x<<1|1,mid+1,r,L,R),ret) return ret n,m=map(int,input().split()) for i in range(1,m+1): a[i]=-100000 for i in range(1,n+1): b[i]=[0]+list(map(int,input().split())) for i in range(1,n+1): for j in range(1,m+1): a[j]=max(a[j],b[i][j]) build(1,1,m) print(query(1,1,m,1,m))
线段树大法好
- 1
信息
- ID
- 339
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 110
- 已通过
- 39
- 上传者