zoukankan      html  css  js  c++  java
  • Codeforces 1166E(思维)

    题面

    有一个长度为n的序列a,有m次操作。每一次操作一个人选a的一个子集x,另一个人会选x的补集y.且x集合中的数的最小公倍数比y集合中的数的最小公倍数大。现在给出所有x,判断是否有一个序列a满足条件。

    分析

    考虑不满足条件的情况:假如子集(x_i)(x_j)完全不相交,会出现矛盾

    因为(gcd(x_i)>gcd(a-x_i),gcd(x_j)>gcd(a-x_j)),我们又知道(x_j=a-x_i),因此上式可以化为(gcd(x_i)>gcd(x_j),gcd(x_j)>gcd(x,y)),矛盾

    代码

    #include<iostream>
    #include<cstdio>
    #define maxm 55
    #define maxn 10005
    using namespace std;
    int m,n;
    int a[maxm][maxn];
    int main() {
    	int sz,x;
    	scanf("%d %d",&m,&n);
    	for(int i=1; i<=m; i++) {
    		scanf("%d",&sz);
    		for(int j=1; j<=sz; j++) {
    			scanf("%d",&x);
    			a[i][x]=1;
    		}
    	}
    	for(int i=1; i<=m; i++) {
    		for(int j=1; j<=m; j++) {
    			bool flag=true;
    			for(int k=1; k<=n; k++) {
    				if(a[i][k]==1&&a[j][k]==1) {
    					flag=false;
    				}
    			}
    			if(flag) {
    				printf("impossible
    ");
    				return 0;
    			}
    		}
    	}
    	printf("possible");
    }
    
    
  • 相关阅读:
    sql试题
    DataTable转换成实体类、List、DataSet等
    ASP.NET Web Pages 的冲突版本问题
    Linux系统中使用Xbox360手柄
    QT离线安装包
    美剧爬虫
    ROS串口通信
    Eclipse中STM32工程建立步骤
    AD模块电压采集电路
    一个串口小工具
  • 原文地址:https://www.cnblogs.com/birchtree/p/10888275.html
Copyright © 2011-2022 走看看