洛谷P1640 SCOI2010 连续攻击游戏 (并查集/匹配)
本题介绍两种做法;
1 并查集
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=1000005;
4 int fa[N],n;
5 bool vis[N];
6
7 int getf(int a){
8 if(fa[a]==a) return a;
9 else return fa[a]=getf(fa[a]);
10 }
11
12 void mg(int a,int b){
13 int af=getf(a);
14 int bf=getf(b);
15 if(af==bf) vis[af]=true;
16 else{
17 if(af<bf) swap(af,bf);
18 vis[bf]=true;
19 fa[bf]=af;
20 }
21 }
22
23 int main()
24 {
25 memset(vis,false,sizeof(vis));
26 cin>>n;
27 for(int i=1;i<=n+1;i++) fa[i]=i;
28 for(int i=1;i<=n;i++){
29 int a,b;
30 cin>>a>>b;
31 mg(a,b);
32 }
33 for(int i=1;i<=n+1;i++){
34 if(!vis[i]){
35 cout<<i-1;
36 break;
37 }
38 }
39 return 0;
40 }
2 更普遍的做法,也是更容易想到的,用二分图匹配来做,
将每个武器的两个属性分别向武器连边,因为是连续攻击(即从1开始),我们从1开始匹配,直到不能匹配为止,此时就得到答案。
代码中T表示时间戳,代替了匈牙利算法每次的memset(vis)。
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=1000005;
4 int adj[N],lk[N],id[N];
5 int to[2*N],nex[2*N];
6 int T,tot;
7
8 int read()
9 {
10 int a=0,f=1; char c=getchar();
11 while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();}
12 while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();}
13 return a*f;
14 }
15
16 void ins(int x,int y){
17 nex[++tot]=adj[x];
18 adj[x]=tot;
19 to[tot]=y;
20 }
21
22 bool mt(int x){
23 for(int i=adj[x];i;i=nex[i]){
24 int v=to[i];
25 if(id[v]==T) continue;
26 id[v]=T;
27 if(!lk[v]||mt(lk[v])){
28 lk[v]=x;
29 return 1;
30 }
31 }
32 return 0;
33 }
34
35 int main(){
36 int n=read(),i,x,y;
37 for(i=1;i<=n;i++) {
38 x=read();y=read();
39 ins(x,i);ins(y,i);
40 }
41 for(i=1;i<=10000;i++){
42 T++;
43 if(!mt(i)) break;
44 }
45 cout<<i-1;
46 return 0;
47 }
洛谷P1640 SCOI2010 连续攻击游戏 (并查集/匹配)的更多相关文章
- 洛谷 P1640 SCOI2010 连续攻击游戏 并查集
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 洛谷 P1640 [SCOI2010]连续攻击游戏 解题报告
P1640 [SCOI2010]连续攻击游戏 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备 ...
- 洛谷——P1640 [SCOI2010]连续攻击游戏
P1640 [SCOI2010]连续攻击游戏 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备 ...
- 洛谷—— P1640 [SCOI2010]连续攻击游戏
https://www.luogu.org/problem/show?pid=1640 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1, ...
- 洛谷P1640 [SCOI2010]连续攻击游戏(二分图)
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 洛谷P1640 [SCOI2010]连续攻击游戏 题解
题目链接: https://www.luogu.org/problemnew/show/P1640 分析: 这道题用二分图来解决即可.应该可以作为网络流中的模板题来食用, 每一个武器有两个属性,但是只 ...
- [洛谷P1640][SCOI2010]连续攻击游戏
题目大意:有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.每种装备最多只能使用一次,且只能使用其中一种属性.装备所使用的属性值必须从1开始连续.问最多能攻击多少次? ...
- 洛谷 P1640 [SCOI2010]连续攻击问题
洛谷 一句话题意: 每个武器有两种属性,每种武器只能选择一种属性,从属性1连续递增才算攻击,求最大连续攻击次数. 因为同学告诉我这是二分图最大匹配,自然就往那个方向去想. 那么怎么建图呢? 每个武器只 ...
- 洛谷 P1640 【连续攻击游戏】
question bank :luogu question Number :1640 title :Continuous attacking game link :https://www.luogu. ...
随机推荐
- YII http缓存
http禁止缓存原理 header('Expires: 0'); header('Last-Modified: '. gmdate('D, d M Y H:i:s') . ' GMT'); heade ...
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...
- GS2107-WTBD 用什么软件为什么新建不了GS系列
1.GS系列GOT必须使用官网上的新软件,资料下载-软件下载-GOT 1000 & GOT 2000 & GOT Simple 画面设计软件,下载安装后,机种选择GS系列即可. 2.在 ...
- 编译器工程师眼中的好代码:Loop Interchange
摘要:本文将以Loop Interchange的场景为例,讲述在编写代码时可以拿到更优性能的书写方式. 本文分享自华为云社区<编译器工程师眼中的好代码(1):Loop Interchange&g ...
- 如何在本地配置lemonlime和使用lemonlime测试交互题
如何在本地配置\(lemonlime\)和使用\(lemonlime\)测试交互题 \(lemonlime\)下载地址链接,提取码ae3z 点开\(lemonlime.exe\)然后编译器选择\(gc ...
- Spring的简单使用(1)
一:IOC(控制反转):它是由spring容器进行对象的创建和依赖注入,程序员使用时直接取出即可 正转:例如: Student stu=new Student(): stu.setname(" ...
- Spring mvc源码分析系列--前言
Spring mvc源码分析系列--前言 前言 距离上次写文章已经过去接近两个月了,Spring mvc系列其实一直都想写,但是却不知道如何下笔,原因有如下几点: 现在项目开发前后端分离的趋势不可阻挡 ...
- DECIMAL 数据处理原理浅析
注:本文分析内容基于 MySQL 8.0 版本 文章开始前先复习一下官方文档关于 DECIMAL 类型的一些介绍: The declaration syntax for a DECIMAL colum ...
- 【AGC】如何使用认证服务与云数据库处理用户信息
使用场景 华为 AGC认证服务可以为应用快速构建安全可靠的用户认证系统,可以实现多种方式关联认证登录.而如何处理这些多种登录方式的用户信息,例如在应用中发布一个活动,哪些用户参加了哪一个活动,这些信 ...
- 【unity游戏入门】1 环境安装
作者 罗芭Remoo 2021年9月24日 这一个系列随笔记录如何使用unity引擎从零开始开发游戏,软件版本均使用最新版本 有关unity的背景介绍可以通过unity官网https://unity. ...