题目链接

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. 错误:编码GBK的不可映射字符解决办法

    今天在cmd测试java代码的时候遇到了一个错误 解决办法: 输入javac  -encoding utf-8  文件名.java  原因: 由于JDK是国际版的,我们在用javac编译时,编译程序首 ...

  2. windows下搭建spark+python 开发环境

    有时候我们会在windows 下开发spark程序,测试程序运行情况,再部署到真实服务器中运行. 那么本文介绍如何在windows 环境中搭建简单的基于hadoop 的spark 环境. 我的wind ...

  3. 如何给Word参考文献加方括号

    脚注是在页面下端添加的注释,如添加在一篇论文首页下端的作者情况简介:尾注是在文档尾部(或节的尾部)添加的注释,如添加在一篇论文末尾的参考文献目录. 若用手工添加脚注和尾注,则既麻烦又易出错.当用Wor ...

  4. uoj #46[清华集训2014]玄学

    uoj 因为询问是关于一段连续区间内的操作的,所以对操作构建线段树,这里每个点维护若干个不交的区间,每个区间\((l,r,a,b)\)表示区间\([l,r]\)内的数要变成\(ax+b\) 每次把新操 ...

  5. Redis从入门到高可用,分布式实践

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  6. VUE实现国际化

    一.前言 趁着11月的最后一天,来写一篇关于前端国际化的实践型博客.国际化应该都不陌生,就是一个网站.应用可以实现语言的切换. 在这就不谈原理,只说说如何实现中英文的切换.做技术的总得先把 demo ...

  7. 解决postgresql数据库localhost可以连接,ip连接不了的问题

    解决:windows环境下,postgresql数据库,localhost可以连接,ip地址连接不了. 解决办法: 1.打开postgresql安装目录下的配置文件 pg_hba.conf       ...

  8. 网络库Alamofire使用方法

    Github地址 由于Alamofire是swift网络库,所以,以下的所有介绍均基于swift项目 导入Alamofire 以下为使用cocoapods导入,其余的方式请参考官网 source 'h ...

  9. Oracle DBA 学习总结

    对于学习Oracle 数据库,应该先要了解Oracle 的框架.它有物理结构(由控制文件.数据文件.重做日志文件.参数文件.归档文件.密码文件组成) ,逻辑结构(表空间.段.区.块),内存分配( SG ...

  10. scala下划线的作用

    https://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala Existent ...