比赛 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;
}