这逆天数据真是让我一言难尽
查看原帖
这逆天数据真是让我一言难尽
382201
Hellen68楼主2024/8/22 23:06

这数据一看就是随机造的,我一个假解竟然只错2个点……

看出来是没考虑到有我这种骗分选手的可能性吧……

这种骗分应该狠狠的卡才行(没错,我是良心的)

以下骗分解骗了63pts,真不愧是太便宜了

#include <bits/stdc++.h>
using namespace std;
int n , p;
int a[505][505] , b[505] , c[505];
int cnt;
int main() {
//	freopen("virus.in" , "r" , stdin);
//	freopen("virus.out" , "w" , stdout);
	cin >> n;
	for(int i = 1 ; i <= n ; ++ i) {
		for(int j = 1 ; j <= n ; ++ j) {
			cin >> a[i][j];
		}
	}
	cin >> p;
	if(p == 1) {
		for(int i = 1 ; i <= n ; ++ i) {
			if(a[i][1] == i) {
				cnt ++;
				b[i] = 1;
			}
		}
		cout << cnt << endl;
		for(int i = 1 ; i <= n ; ++ i) {
			if(b[i]) cout << i << " ";
		}
	}
	else {
		for(int i = 1 ; i <= n ; ++ i) {
			if(a[i][1]  == i) {
				b[i] = 1;
				c[i] = 1;
				cnt ++;
			}
		}
		for(int i = 1 ; i <= n ; ++ i) {
			for(int j = 1 ; j <= n ; ++ j) {
				
				bool flag = 1;
				for(int k = 1 ; k <= n ; ++ k) {
					if(b[a[i][j]] == 1) {
						flag = 0;
						break;
					}
				}
				if(a[i][j] == i) flag = 0;
				if(flag) {
					if(!c[a[i][j]]) cnt ++;
					c[a[i][j]] = 1;
//					cout << i << endl;
				}
				else break;
			}
		}
		cout << cnt << endl;
		for(int i = 1 ; i <= n ; ++ i) {
			if(c[i]) cout << i << " ";
		}
	}
	return 0;
}

最后放上一张经久不衰的图:

咱也说不了啥

2024/8/22 23:06
加载中...