求助洛谷P1076

啊啊啊全WA
优化了,于是全WA

为什么模拟题也会错啊w(゚Д゚)w

#include<bits/stdc++.h>
using namespace std;
int n,m,ans,start;
struct node{
	int flag;
	int x;
}a[10005][105];
int stair[10005];
int findid(int f,int room){
	int cnt=a[f][room].x%stair[f];
	int er=room;
	if(!cnt) return er;
	while(cnt){
		if(a[f][er].flag) cnt--;
		if(!cnt) break;
		er++;
		if(er>=m) er=0;
	}
	return er;
} 
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=0;j<m;j++){
			cin>>a[i][j].flag>>a[i][j].x;
			if(a[i][j].flag) stair[i]++;
		}
	}
	cin>>start;
	int id=start;
	for(int i=1;i<=n;i++){
		ans=(ans+a[i][id].x)%20123;
		id=findid(i,id);
	}
	cout<<ans%20123;
	return 0;
}

悬赏一个解决方案

#include<bits/stdc++.h>
using namespace std;
int n,m,x,i,j,ans,l;
int dp[10005][205],a[10005][205];
int main()
{
	cin>>n>>m;
	for(i=1;i<=n;i++)
	{
		l=0;
		for(j=0;j<m;j++)
		{
			cin>>a[i][j];
			if(dp[i][j]==1) l++;
		}
		dp[i][m]=l;
	}
	cin>>x;
	i=1;
	while(i<=n)
	{
		ans+=a[i][x];
		ans%=20123;
		int k=0;
		for(j=x;;j++)
		{
			if(j==m) j=0;
			if(dp[i][j]==1) k++;
			if(k==(a[i][x]-1)%dp[i][m]+1) break;
		}
	        x=j;
		i++;
	}
	cout<<ans;
	return 0;
}

没思路?

不是,不知道错哪里了