H y p e r l i n k Hyperlink Hyperlink

https://ac.nowcoder.com/acm/contest/1100/C


D e s c r i p t i o n Description Description

给定 n n n张双面牌,每张牌的每一面分别写着 a i , b i a_i,b_i ai​,bi​,给定 m m m组询问,问你是否能用这些牌打出 l i , r i l_i,r_i li​,ri​的顺子

数据范围:


S o l u t i o n Solution Solution

匈牙利+牌相同的特判可以拿到40分。。。代码详见总结

考虑将原题图论化,如果我们让 a i − > b i a_i->b_i ai​−>bi​,那么这就构成了一张图,一个顺子合法当且仅当这张图联通且带环

所以我们并查集预处理,处理出对于每个数 x x x,他顺子的起点的最小值 l [ x ] l[x] l[x],就可以 O ( 1 ) O(1) O(1)判断了

总的时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)


C o d e Code Code
#include<cctype>
#include<cstdio>
#include<algorithm>
#define N 100010
#define LL long long
using namespace std;int f[N],mx,n,q,x,y,belong[N],maxn,l[N];
bool h[N];
inline int find(register int x){return x==f[x]?x:f[x]=find(f[x]);}
inline LL read()
{char c;LL d=1,f=0;while(c=getchar(),!isdigit(c)) if(c=='-') d=-1;f=(f<<3)+(f<<1)+c-48;while(c=getchar(),isdigit(c)) f=(f<<3)+(f<<1)+c-48;return d*f;
}
signed main()
{mx=read();n=read();for(register int i=1;i<=mx;i++) f[i]=i,belong[i]=i;for(register int i=1;i<=n;i++){x=find(read());y=find(read());if(x>y) x^=y,y=x^y,x^=y;if(x==y) h[x]=true;else h[x]|=h[y],f[y]=x,belong[x]=max(belong[x],belong[y]);}for(register int i=1;i<=mx;i++){int x=find(i);if(belong[x]==i&&!h[x]) maxn=max(maxn,x);l[i]=maxn;}q=read();while(q--){x=read();y=read();puts(x>l[y]?"Yes":"No");}
}

牛客CSP-S提高组赛前集训营1 C 小w的魔术扑克相关推荐

  1. 牛客网CSP-S提高组赛前集训营1题解(仓鼠的石子游戏 [博弈论] + 乃爱与城市的拥挤程度 [树上DP] + 小w的魔术扑克[dfs + 离线])

    文章目录 T1:仓鼠的石子游戏 题目 题解 代码实现 T2:乃爱与城市拥挤程度 题目 题解 代码实现 T3:小w的魔术扑克 题目 题解 代码实现 T1:仓鼠的石子游戏 题目 仓鼠和兔子被禁止玩电脑,无 ...

  2. [2019 牛客CSP-S提高组赛前集训营4题解] 复读数组(数论)+ 路径计数机(数上DP)+ 排列计数机(线段树+二项式定理)

    文章目录 T1:复读数组 题目 题解 代码实现 T2:路径计数机 题目 题解 代码实现 T3:排列计数机 题目 题解 CODE T1:复读数组 题目 有一个长为n×k的数组,它是由长为n的数组A1,A ...

  3. 牛客-小w的魔术扑克【并查集】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/1100/C 题目大意 nnn个数字mmm张扑克牌,每张两面有各有一个数字,可以选择一些扑克牌使用正面的数字,一 ...

  4. 2021牛客OI赛前集训营-提高组(第四场) T2空间跳跃

    2021牛客OI赛前集训营-提高组(第四场) 题目大意 给你三个整数 n , d , l n,d,l n,d,l, n n n为正整数.负整数或0, d , l d,l d,l为正整数,你现在有一个数 ...

  5. 牛客题霸 [子数组最大乘积] C++题解/答案

    牛客题霸 [子数组最大乘积] C++题解/答案 题目描述 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积. 题解: 同时记录最大值和最小值,为什么?因为给的元素 ...

  6. 牛客题霸 [子数组的最大累加和问题] C++题解/答案

    牛客题霸 [子数组的最大累加和问题] C++题解/答案 题目描述 给定一个数组arr,返回子数组的最大累加和 例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, ...

  7. 蓝桥杯青少年创意编程C++组赛前集训教程包

    1 蓝桥杯青少年创意编程C++组 赛前集训教程包 版本-190919 蓝桥杯大赛组 2 目录 第01 课基本数据类型及运算符...................................... ...

  8. 项链(牛客竞赛2020-普及组第四场-T4)

    项链(牛客竞赛2020-普及组第四场-T4) 题目 原题链接 样例 输入1 4 3 4 3 -2 1 1 2 2 3 3 4 输出1 7 1 说明1 第一组样例,最优路径为1→2→3→41 \to 2 ...

  9. NOIP16提高组赛前训练20-day2 T2:种花 flower(组合数学)

    NOIP16提高组赛前训练20-day2 T2:种花 flower 题目描述: OI太可怕了,我决定回家种田. 我在后院里开辟了一块圆形的花圃,准备种花.种花是一种艺术,通过一定技术手法,花材的排列组 ...

  10. JZOJ2020年8月10日提高组T3 玩诈欺的小杉

    JZOJ2020年8月10日提高组T3 玩诈欺的小杉 题目 Description 是这样的,在小杉的面前有一个N行M列的棋盘,棋盘上有N∗MN*MN∗M个有黑白棋的棋子(一面为黑,一面为白),一开始 ...

最新文章

  1. c#编译器对byte类型的一些规则 (转)
  2. 【多线程】线程池拒绝策略详解与自定义拒绝策略
  3. 大学物理实验长度的测量实验报告_大学物理实验教案长度和质量的测量两篇
  4. Asterisk权威指南/第一章 一场电话革命
  5. vue伸缩效果_Vue.js - 元素展开、收起动画效果组件(附:二级菜单的展开、收缩动画效果)...
  6. pytorch自定义数据集和数据加载器
  7. python格式化输入_python-格式化(%,format,f-string)输出+输入
  8. mysql 使用内置函数来进行模糊搜索(locate()等)
  9. 使用RN开发App,引入图标失效问题的解决
  10. linux docker运行exe,如何在docker中运行windows
  11. 一阶惯性环节如何实现跟踪性能与滤波性能共存(总)
  12. 用Linux开发嵌入式项目拢共分几步?
  13. 阿特拉斯开发协议--与ATLAS 扭力控制器交互
  14. 卡巴斯基正式版 送一年
  15. LiveZilla-最好的免费在线客服介绍和详细说明
  16. 多双系统下蓝牙键盘鼠标的共享配对问题解决办法:win + debian + arch~IRK、LTK、ERand、EDIV、CSRK
  17. SNES 与 NES 游戏模拟机区别与 SNES Classic界面实现,
  18. win10系统vvv连接不上,提示:“在连接完成前,连接被远程计算机终止”的解决办法
  19. wex5开发外卖app笔记
  20. 最新cocos2d-x 3.0博客教学 小游戏[史上最坑爹的游戏] 004第三关:让坦克过桥

热门文章

  1. android刻录软件开发,Android 视频刻录
  2. 亚洲第一小鲜肉的第二次实验:网络嗅探与身份认证
  3. CNN基础和进展(上)
  4. Thinkphp 6.0 layout公共模板使用
  5. pagefault_disable的效果
  6. 荣耀MagicBook如何重装系统?荣耀MagicBook重装Win10系统教程
  7. switch的汇编分析
  8. 【转】越懒越瘦超激减肥法
  9. 2021年三校生高考成绩怎么查询,2021年三校生高考普通高考的区别?
  10. 为什么埃洛普未能当选微软新 CEO?