【求助】为何加上这一特判即可AC?
查看原帖
【求助】为何加上这一特判即可AC?
941560
HeiCat0725楼主2024/8/24 14:50

这是我的AC代码:

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

ll n,k;
int arr[505][505];
map<pair<int,int> ,int> mp;
vector<pair<int,int> > vt;
int main(){
	scanf("%lld%lld",&n,&k);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			scanf("%d",&arr[i][j]);
		}
	}
	if(k==1){
		printf("1");
		return 0;
	}
	int i=2,j=1;
	ll cnt=2;
	if(k==2){//!?
		printf("2");
		return 0;
	}
	while(1){
		if(mp[{i,j}]){
			break;
		}
		mp[{i,j}]=cnt-1;
		vt.push_back({i,j});
		cnt++;
		int t=i;		
		i=arr[i][j];
		j=t;
	}
	int cnts=mp[{i,j}];
	int p=(int)vt.size()-cnts+1;
	
	if(k<cnts) printf("%d",vt[k-1].first);
	else printf("%d",vt[(k-cnts-1)%p+cnts-1].first);
	return 0;
}

如题,加上注释处的特判(这个特判是正确的)可以AC,不加会WA一个点,但是我测试了一些k==2的数据可以通过(当然很可能是我的数据太水)

希望大佬能指出哪里错了或者提供hack数据orz

2024/8/24 14:50
加载中...