zoukankan      html  css  js  c++  java
  • AGC 022 C

    题面在这里!

        显然权值是 2^i 这种的话就是要你贪心,高位能不选就不选。

        并且如果 % x 之后再去 % 一个>=x的数是没有用的,所以我们可以把操作的k看成单调递减序列。

        这样的话就是一个有向图联通性问题了,直接做就可以了。

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    int n,a[55],b[55];
    bool v[55][55];
    ll ans=0;
    
    inline bool can(){
    	memset(v,0,sizeof(v));
    	for(int i=1;i<=50;i++) if((1ll<<i)&ans)
    		for(int j=0;j<=50;j++) v[j][j%i]=1;
    
    	for(int i=0;i<=50;i++) v[i][i]=1;
    
    	for(int k=0;k<=50;k++)
    		for(int i=0;i<=50;i++)
    		    for(int j=0;j<=50;j++) if(v[i][k]&&v[k][j]) v[i][j]=1;
    
    	for(int i=0;i<n;i++) if(!v[a[i]][b[i]]) return 0;
    	return 1;
    }
    
    int main(){
    	scanf("%d",&n),ans=1ll<<51,ans-=2;
    	for(int i=0;i<n;i++) scanf("%d",a+i);
    	for(int i=0;i<n;i++) scanf("%d",b+i);
    
    	if(!can()){ puts("-1"); return 0;}
    
    	for(int i=50;i;i--){
    		ans^=1ll<<i;
    		if(!can()) ans|=1ll<<i;
    	}
    
    	printf("%lld
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    UI 简单练习(联动实例)
    软件工程与计算机科学
    中文编程
    自我介绍
    曾经的梦想
    即时通讯研究学习
    即时通讯研究学习
    创业
    2015-08-12-火影
    看<后海不是海>的随想
  • 原文地址:https://www.cnblogs.com/JYYHH/p/9301749.html
Copyright © 2011-2022 走看看