比赛 |
2024暑期C班集训2 |
评测结果 |
MMMMMMMMMM |
题目名称 |
雨滴之歌 |
最终得分 |
0 |
用户昵称 |
AeeE5x |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2024-07-02 09:43:54 |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int n,m;
int a[200010],b[200010];
bool map[30010][30010];
bool ed[30010][30010];
int ans;
struct nod{
int x,y;
};
void f(int s){
queue<nod> que;
que.push((nod){s,1});
while(!que.empty()){
nod fr=que.front();
if(fr.x<n&&map[fr.x+1][fr.y]&&!ed[fr.x+1][fr.y]) ed[fr.x+1][fr.y]=1,que.push((nod){fr.x+1,fr.y});
if(fr.y<n&&map[fr.x][fr.y+1]&&!ed[fr.x][fr.y+1]) ed[fr.x][fr.y+1]=1,que.push((nod){fr.x,fr.y+1});
if(fr.y==m) ans++;
que.pop();
}
memset(ed,0,sizeof ed);
}
int main(){
freopen("expansion.in","r",stdin);
freopen("expansion.out","w",stdout);
scanf("%d%d",&n,&m);
// if(n>300||m>300) return 114514;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=m;i++) scanf("%d",&b[i]);
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) map[i][j]=(a[i]+b[j]>=0);
for(int i=1;i<=n;i++) if(map[i][1]) f(i);
printf("%d",ans);
return 0;
}