AGC 022 C - Remainder Game
阿新 • • 發佈:2018-07-12
並且 http i++ blank 一個 con ont targe div
題面在這裏!
顯然權值是 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\n",ans); return 0; }
AGC 022 C - Remainder Game