CF515Bドラジルと彼の幸せな友達题解

CF515Bドラジルと彼の幸せな友達

質問:男の子はn人、女の子はm人です。t日には、t%n人の男の子とt%m人の女の子が夕食に招待されます。楽観的な人もいますが、楽観的な人と一緒に食事をすることは楽観的になる可能性があります。数日後に質問してください。すべての人が楽観的になることができるかどうか。

解決策:直接的な暴力は問題ありません。最初に考えたときはWAでした。後で、後ろの人が楽観的だと、n * m回ループするだけでは前の人に更新できないと思ったので、次のようにします。複数回ループします。将来的には、小さなデータの問題は最後まで循環する必要があります。

コード

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
const int N = 110;
int n, m, nn, mm;
int a[N], b[N];
int tu[N][N];
int va[N], vb[N];
int main() {
    
    
	int x;
	scanf("%d%d", &n, &m);
	scanf("%d", &nn); while(nn--) scanf("%d", &x), a[x] = 1;
	scanf("%d", &mm); while(mm--) scanf("%d", &x), b[x] = 1;
	int t = 0;
	for(int t = 0; t <= n*m*2; ++t)  //就是这里!!
		if(a[t%n] || b[t%m]) a[t%n] = b[t%m] = 1;
	int f = 1;
	for(int i = 0; i < n; ++i) if(!a[i]) {
    
     f = 0; break; }
	for(int i = 0; i < m; ++i) if(!b[i]) {
    
     f = 0; break; }
	if(f) puts("Yes");
	else puts("No");
	return 0;
}

おすすめ

転載: blog.csdn.net/qq_43408978/article/details/109005575