1 条题解

  • -12
    @ 2024-10-6 0:18:04

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,t,c[10005],sum,step,cnt; //t:进入房间;c数组统计有房间个数。 
    struct node{
    	bool f;
    	int x;
    };
    node a[10005][105];
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    	
    		for(int j=0;j<m;j++){
    			cin>>a[i][j].f>>a[i][j].x;//存入数组 
    			if(a[i][j].f==1)
    			c[i]++ ;
    		}	
    	}
    	cin>>t;
    	for(int i=1;i<=n;i++)//循环n次。 
    	{
    		sum=(sum+a[i][t].x)%20123;
    		step=a[i][t].x%c[i];//环形模拟 ,走的步数 
    		if(step==0)
    		step=c[i];
    		if(a[i][t].f==1)
    		cnt=1;//出发房间有楼梯 
    		else cnt=0;//无楼梯 
    		while(cnt<step)//假如没有走到,就循环。 
    		{
    			t=(t+1)%m;//形成环形 
    			if(a[i][t].f==1)
    			cnt++;
    		}
    		//一直到step到下一层要的房间 
    	}
    	cout<<sum;
    	return 0;
    }
    
    
    
    

    信息

    ID
    198
    时间
    2000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者