萌新刚学 oi 全 WA 求调 qwq
查看原帖
萌新刚学 oi 全 WA 求调 qwq
511609
无钩七不改名楼主2024/4/12 07:06

https://www.luogu.com.cn/record/155417567

用的倍增,没有用周期,thx qwq

#include<bits/stdc++.h>
using namespace std;

const int N=10005,M=105,X=25,mod=20123;

int n,m,num[N][M];
bool lt[N][M];
int nx[M][X],ans;

int read(){
	int f=1,k=0;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-')f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		k=k*10+c-'0';
		c=getchar();
	}
	return f*k;
}

int main(){
	//cout<<log2(1000000);//19.... 
	n=read();m=read();
	for(int i(1);i<=n;++i)
		for(int j(0);j<m;++j)lt[i][j]=read(),num[i][j]=read();
	int w=read();
	for(int i(1);i<=n;++i){
		int fst=m-1;
		while(!lt[i][fst])--fst;
		int nxt=fst;
		for(int j(nxt);~j;--j){
			if(lt[i][j])nxt=j;
			nx[j][0]=nxt;//cout<<j<<": "<<nxt<<'\n';
		}
		for(int j(fst+1);j<m;++j)nx[j][0]=nxt;
		for(int k(1);k<20;++k)
			for(int j(0);j<m;++j)
			nx[j][k]=nx[nx[j][k-1]][k-1];
		int stp=num[i][w];(ans+=stp)%=20123;
		for(int k(20);~k;--k)if(stp&(1<<k))w=nx[w][k];
		//cout<<stp<<'\n';
	}
	printf("%d",ans);
	//printf("%lld",ans);
	return 0;
}
2024/4/12 07:06
加载中...