说实话递归也挺简单的
查看原帖
说实话递归也挺简单的
703707
JURUO17楼主2024/8/30 15:09
#include <bits/stdc++.h>  
using namespace std;  
const int N=1e4+10,M=1e2+10,Mod=20123;
int n,m,a;  
int x[N][M],d[N][M],xm[N][M];
int cnt[N];
int ans=0;
void f(int id,int start){
	ans=(ans+x[id][start])%Mod;
	if(id==n){
		cout<<ans%Mod;
		exit(0);
	}int sum=0;
	if(!xm[id][start]) xm[id][start]=cnt[id];
	for(int i=start;i<=m;i++){
		if(d[id][i]) sum++;
		if(sum==xm[id][start]) f(id+1,i);
	}for(int i=1;i<start;i++){
		if(d[id][i]) sum++;
		if(sum==xm[id][start]) f(id+1,i);
	}
}
int main() {  
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    	for(int j=1;j<=m;j++){
    		cin>>d[i][j]>>x[i][j];
    		cnt[i]+=d[i][j];
		}
	}cin>>a;
	a++;
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) xm[i][j]=x[i][j]%cnt[i];
	f(1,a);
    return 0;  
}
2024/8/30 15:09
加载中...