题目链接

https://atcoder.jp/contests/agc022/tasks/agc022_c

题解

大水题一道

就他给的这个代价,猜都能猜到每个数只能用一次

仔细想想,我们肯定是按顺序从大到小用,一个数用多次肯定没意义,于是证完了

并且所有元素独立

所以我们就是要从大到小贪心判断每个元素是否能不用

比如当前要判断\(x\)是否能不用,那么就判断用当前已经确定要用的集合并上所有小于\(x\)的数能不能达到目的

这个东西建个图判一下连通性就行了

时间复杂度\(O(N^4)\)

代码

#include<cstdio>
#include<cstdlib>
#include<iostream>
#define llong long long
using namespace std; void read(int &x)
{
int f=1;x=0;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
x*=f;
} const int N = 50;
int f[N+3][N+3];
int a[N+3];
int b[N+3];
int n; bool check(llong sta)
{
for(int i=0; i<=N; i++) for(int j=0; j<=N; j++) f[i][j] = i==j?1:0;
for(int i=0; i<=N; i++)
{
for(int j=1; j<=i; j++)
{
if(sta&(1ll<<j)) {f[i][i%j] = 1;}
}
}
for(int k=0; k<=N; k++)
{
for(int i=0; i<=N; i++)
{
for(int j=0; j<=i; j++)
{
f[i][j] |= (f[i][k]&f[k][j]);
}
}
}
bool ret = true;
for(int i=1; i<=n; i++)
{
if(!f[a[i]][b[i]]) {ret = false; break;}
}
return ret;
} int main()
{
scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1; i<=n; i++) scanf("%d",&b[i]);
llong sta = (1ll<<38)-2;
if(!check(sta)) {puts("-1"); return 0;}
for(int i=37; i>=1; i--)
{
llong tmp = sta^(1ll<<i);
if(check(tmp)) {sta = tmp;}
}
printf("%lld\n",sta);
return 0;
}

AtCoder AGC022C Remainder Game (图论)的更多相关文章

  1. AtCoder AGC038D Unique Path (图论)

    题目链接 https://atcoder.jp/contests/agc038/tasks/agc038_d 题解 orz zjr神仙做法 考虑把所有\(C_i=0\)的提示的两点连边,那么连完之后的 ...

  2. AtCoder AGC036D Negative Cycle (图论、DP)

    题目链接 https://atcoder.jp/contests/agc036/tasks/agc036_d 题解 这都是怎么想出来的啊..目瞪口呆系列.. 第一步转化至关重要: 一张图中不存在负环意 ...

  3. 【Atcoder】AGC022 C - Remainder Game 搜索

    [题目]C - Remainder Game [题意]给定n个数字的序列A,每次可以选择一个数字k并选择一些数字对k取模,花费2^k的代价.要求最终变成序列B,求最小代价或无解.n<=50,0& ...

  4. AtCoder AGC004F Namori (图论)

    题目链接 https://atcoder.jp/contests/agc004/tasks/agc004_f 题解 神仙题.. 首先考虑树的情况,树是二分图,因此假设我们对二分图进行黑白染色,那么操作 ...

  5. AtCoder Beginner Contest 133-C - Remainder Minimization 2019

    https://atcoder.jp/contests/abc133/tasks/abc133_c 思路:由于L,R区间太大,所以不能暴力枚举.由于求(i*j)%2019的最小值,那么2019的倍数对 ...

  6. AtCoder Beginner Contest 075 C bridge【图论求桥】

    AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...

  7. Atcoder Regular Contest 092 D - Two Faced Edges(图论+bitset 优化)

    Atcoder 题面传送门 & 洛谷题面传送门 orz ymx,ymx ddw %%% 首先既然题目要我们判断强连通分量个数是否改变,我们首先就将原图 SCC 缩个点呗,缩完点后我们很自然地将 ...

  8. 【AtCoder】【思维】【图论】Splatter Painting(AGC012)

    题意: 有一个含有n个点的无向图,所有的点最初颜色均为0.有q次操作,每次操作将v[i]周围的距离小于等于d[i]的点全部都染成颜色c[i].最后输出每个点的最终的颜色. 数据范围: 1<=n, ...

  9. AtCoder Beginner Contest 103

    https://beta.atcoder.jp/contests/abc103 A - Task Scheduling Problem Time Limit: 2 sec / Memory Limit ...

随机推荐

  1. 多模块环境下修改包名Rename directory与Rename package

    选中包名->右键Refactor->Rename,如果会弹出的警告框让选择Rename directory和Rename package时,若选择Rename directory,则是只修 ...

  2. python-day30(正式学习)

    单例模式 什么是单例模式 单例模式:基于某种方法实例化多次得到实例是同一个 为什么用单例模式 当实例化多次得到的对象中存放的属性都一样的情况,应该将多个对象指向同一个内存,即同一个实例 用类方法来实现 ...

  3. Java工具类-基于SnowFlake的短地址生成器

    Twitter的SnowFlake算法,使用SnowFlake算法生成一个整数,然后转化为62进制变成一个短地址URL /** * Twitter的SnowFlake算法,使用SnowFlake算法生 ...

  4. A Horrible Poem (字符串hash+数论)

    # 10038. 「一本通 2.1 练习 4」A Horrible Poem [题目描述] 给出一个由小写英文字母组成的字符串 $S$,再给出 $q$ 个询问,要求回答 $S$ 某个子串的最短循环节. ...

  5. LoadRunner之使用JSEESIONID访问网站

    LoadRunner使用笔记 JSESSIONID的含义:https://www.cnblogs.com/caiwenjing/p/8081391.html 1.使用JSESSIONID访问网站 Ac ...

  6. Docker 数据卷与容器互联

    Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  7. command----常用命令更新ing

    common commands 1:split---拆分文件 [root@localhost split]# split -b 1M split.tar.gz split_ #按1M拆分文件 [roo ...

  8. ZuulServlet源码分析及ZuulFilter加载

    参考https://yq.aliyun.com/wenji/2...https://blog.csdn.net/lds2227... 1.声明ZuulServlet @Configuration @E ...

  9. 使用Jsoup爬取网站图片

    package com.test.pic.crawler; import java.io.File; import java.io.FileOutputStream; import java.io.I ...

  10. Binding的简单使用

    Binding可以看作是数据的桥梁,两端分别为Source和Target,一般情况,Source是逻辑层的对象,Target是UI层的控件对象,可以将数据从逻辑层送往UI层展现 简单的例子: clas ...