题意是给你n个选手,每个选手有两种力量a,b,然后进行n-1轮淘汰赛,力量小(用同一种力量)的退出比赛,最后问你每个选手能否赢得比赛

(不会看了题解)

假如A选手可以击败B选手,B选手可以击败C选手,那么A选手可以间接淘汰C选手,这里就有一个传递关系

我们将所有选手以力量a,b从小到大排序,从大的力量选手结点出发连一条边到小的力量的选手,只要看是否任意结点是否能遍历所有结点即可

但这样做时间复杂度是n2,我们可以想到,一个选手如果想赢就必须击败(间接或直接)力量最高的选手,而力量最高的选手可以击败其他所有选手,所以一个选手只要能到达力量最高选手的结点即可赢

因此我们把所有边建立反边,只要力量最大的选手结点能到达的结点就是可以赢的选手的结点

AC代码如下

#include <bits/stdc++.h>
using namespace std;int ne[200010],v[200010],ha[200010];
int idx;
bool ans[100010];//答案
void add(int a,int b)
{idx++;v[idx]=b;ne[idx]=ha[a];ha[a]=idx;
}//建图
struct pii
{int w,id;
};bool cmp(pii &a,pii &b)
{return a.w<b.w;
}void dfs(int x,int fa)
{ans[x]=true;for(int i=ha[x];i;i=ne[i]){int k=v[i];if(k==fa || ans[k]) continue;dfs(k,x);}
}
int main(){int t;cin>>t;while(t--){idx=0;int n;cin>>n;for(int i=1;i<=2*n;i++)ne[i]=v[i]=ha[i]=0;vector<pii> a(n),b(n);for(int i=0;i<n;i++){ans[i+1]=false;cin>>a[i].w;a[i].id=i+1;}for(int i=0;i<n;i++){cin>>b[i].w;b[i].id=i+1;}sort(a.begin(),a.end(),cmp);sort(b.begin(),b.end(),cmp);for(int i=0;i<n-1;i++){add(a[i].id,a[i+1].id);add(b[i].id,b[i+1].id);//连反边}dfs(a[n-1].id,-1);//从a力量最大的结点开始dfsfor(int i=1;i<=n;i++)if(ans[i]) cout<<1;else cout<<0;cout<<"\n";}return 0;
}

codeforces1608C. Game Master题解(图论)相关推荐

  1. Dungeon Master题解bfs

    Dungeon Master 题面翻译 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 题解思路及TIME EXCEEDED问题 题解 超时题解(个人觉得没问题) 题面翻译 ...

  2. PAT甲级1139 First Contact (30 分):[C++题解] 图论、暴力枚举两个点、hash映射

    文章目录 题目分析 题目链接 题目分析 来源:acwing 题目分析: 图论模拟题. 给定暗恋的两个人A 和B,需要寻找一对C 和D ,满足:A和C是朋友,C和D是朋友,D和B是朋友.而且A.C同性别 ...

  3. PAT甲级1076 Forwards on Weibo (30 分) :[C++题解]图论、bfs

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: BFS如何搜前k层?统计前k层的点数. ac代码 #include<bits/stdc++.h> using names ...

  4. PAT甲级1154 Vertex Coloring :[C++题解]图论、模拟、结构体存边

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 这题的边不用邻接矩阵.邻接表来存,仅仅用结构体来存即可,结构体正好存边的两个端点,我们只要遍历每条边,判断端点的颜色是否相同即可. ...

  5. PAT甲级1142 Maximal Clique :[C++题解]图论、最大团、枚举

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 团:团是顶点的集合,满足该集合中任意两顶点之间都有边. 判断是不是团:所有点是否有边 判断最大团:是否可以加一个额外点,使得所有点之 ...

  6. PAT甲级1122 Hamiltonian Cycle:[C++题解] 图论、模拟

    文章目录 题目分析 题目链接 题目分析 分析 哈密顿回路:从1个点出发,经过所有点一次,然后回到起点. 四个特点: 1)回路必须包含n+1个点:2)回路是个环,第一点和最后一个点相等:3)回路中相邻两 ...

  7. Codeforces Round 649 (Rated for Div. 2)D. Ehab s Last Corollary详细题解(图论+简单环)

    树 边 : 树边: 树边:深度优先森林中的边.如果结点v是因对(u,v)的探索而首先被发现,则(u,v)是一条树边. 后 向 边 : 后向边: 后向边:后向边(u,v)是将结点u连接到其在深度优先树中 ...

  8. 第十二届蓝桥杯 2021年4月 省赛 第一场 C/C++ B组 题解

    本题解为非官方题解,可能存在包括但不限于下列问题 答案错误 时间复杂度太高,无法在规定时间内得出结果 填空题答案速览 67108864 3181 40257 2430 10266837 目录 填空题 ...

  9. 「题解」CF1468M Similar Sets

    本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷.CF1468M. 题意简述 给定 n n n 个集合 S 1 ∼ n S_{1\sim n} S1∼n​,问是否存在 ...

  10. 洛谷P2587 [ZJOI2008]泡泡堂

    传送门 1368 泡泡堂 省队选拔赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解 题目描述 Description 第XXXX届NOI期间,为了加 ...

最新文章

  1. 梯度下降算法的正确步骤是什么?
  2. How to resolve unassigned shards in Elasticsearch——写得非常好
  3. pywebio和stylecolud 做的词云gui
  4. python序列化和反序列化
  5. FILO微型计算机,IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】
  6. 电脑端跳转手机版的php代码,帝国CMS电脑端自动跳转到手机端移动端的方法
  7. ICML 2021文章引发热议:矩阵乘法无需相乘,速度提升100倍
  8. 更新部分字段 NHibernate
  9. php warning: file_get_contents,Ecshop报警告:Warning: file_get_contents
  10. Net C# 扩展方法
  11. 【第2篇】Python爬虫实战-PPT模板素材下载
  12. leetcode 273场周赛 Problem-C
  13. Enterprise Suse运维
  14. bosboot -a的作用
  15. 企业短信平台 php,梅州PHP短信平台企业,PHP短信平台
  16. react中使用ref获取
  17. python在线办公自动化oa系统django408
  18. 安卓开发之视频播放器
  19. Rancher 2.x 搭建及管理 Kubernetes 集群
  20. 咖啡粉的粗细如何影响风味?| 啡鸟集

热门文章

  1. Electron常见问题 30 - 深度填坑之阴影问题
  2. 阿里立秋:淘宝如何做智能化UI测试?
  3. 第二工业大学计算机应用大专录取分,二工大|2019年上海第二工业大学专科层次依法自主招生各专业最低录取分数线...
  4. Serv-U无法上传文件,200、227、501报错解决方法
  5. C# 快递单批量打印
  6. css面试题手写九宫格
  7. 编程工具│Fiddler 抓包 mumu 模拟器详细配置步骤
  8. 08-搭建Rest服务 - 04权限管理
  9. 电脑ping手机查看ARP抓包
  10. Android MediaPlayer整体架构源码分析 -【MediaCodec编解码器插件模块化注册和创建处理流程】【Part 6】