洛谷 P1640 [SCOI2010]连续攻击问题
一句话题意:
每个武器有两种属性,每种武器只能选择一种属性,从属性1连续递增才算攻击,求最大连续攻击次数。
因为同学告诉我这是二分图最大匹配,自然就往那个方向去想。
那么怎么建图呢?
每个武器只能用一次,所以武器占二分图的一边,另一边放属性。
每个武器对应的属性之间连边。
因为要从属性1开始连续递增,所以用属性那一边匹配武器,for循环寻找武器,找到了就ans++,若没找到就输出ans,return 0;
这里要说一个细节,那个同学的标记数组vis是int类型,所以memset的时候会非常慢。所以可以考虑改成bool类型。
code:
#include <bits/stdc++.h>
using namespace std;
const int N=1000010;
bool vis[N];
int n,ans;
int s[N<<1][2],o[N],pos[N];
void add(int x,int y)
{
s[++o[0]][1]=o[x],s[o[0]][0]=y,o[x]=o[0];
}
bool find(int x)
{
if (vis[x]) return 0;
vis[x]=1;
for (int i=o[x];i;i=s[i][1]) {
int y=s[i][0];
if (!pos[y]||find(pos[y])) {
pos[y]=x;
return 1;
}
}
return 0;
}
int main()
{
int a1,a2;
cin>>n;
for (int i=1;i<=n;++i) {
scanf("%d%d",&a1,&a2);
add(a1,i),add(a2,i);
}
for (int i=1;i<=n;++i) {
if (find(i)) ++ans;
else break;
memset(vis,0,sizeof(vis));
}
cout<<ans;
return 0;
}
洛谷 P1640 [SCOI2010]连续攻击问题的更多相关文章
- 洛谷 P1640 [SCOI2010]连续攻击游戏 解题报告
P1640 [SCOI2010]连续攻击游戏 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备 ...
- 洛谷——P1640 [SCOI2010]连续攻击游戏
P1640 [SCOI2010]连续攻击游戏 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备 ...
- 洛谷P1640 [SCOI2010]连续攻击游戏(二分图)
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 洛谷—— P1640 [SCOI2010]连续攻击游戏
https://www.luogu.org/problem/show?pid=1640 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1, ...
- 洛谷P1640 [SCOI2010]连续攻击游戏 题解
题目链接: https://www.luogu.org/problemnew/show/P1640 分析: 这道题用二分图来解决即可.应该可以作为网络流中的模板题来食用, 每一个武器有两个属性,但是只 ...
- 洛谷 P1640 SCOI2010 连续攻击游戏 并查集
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 洛谷P1640 SCOI2010 连续攻击游戏 (并查集/匹配)
本题介绍两种做法: 1 并查集 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1000005; 4 int ...
- [洛谷P1640][SCOI2010]连续攻击游戏
题目大意:有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.每种装备最多只能使用一次,且只能使用其中一种属性.装备所使用的属性值必须从1开始连续.问最多能攻击多少次? ...
- 洛谷 P1640 【连续攻击游戏】
question bank :luogu question Number :1640 title :Continuous attacking game link :https://www.luogu. ...
随机推荐
- android-pull方式解析xml文件以及XML文件的序列化
android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...
- sql 写法注意点
a.CRUD(create,read,update,delete)操作方法写法格式 字段格式要个数据库表字段一致,字母不区分大小写,支持下划线. 例如: screenName or scrEenNam ...
- 流水线策略 相关算法 Tomasulo算法与记分牌调度算法
设计流水线策略时,可参考 Tomasulo算法与记分牌调度算法 (这两个是霍老师推荐的算法,自己未了解过)
- Android自定义圆形进度条,完成类似LOFTER效果
1.http://stackoverflow.com/questions/3760381/rotating-image-animation-list-or-animated-rotate-androi ...
- Easy UI datebox控件无法正常赋值
<input id="AcceptDetail_IssuingDate" class="easyui-datebox" data-options=&quo ...
- Atitit.linq java的原理与实现 解释器模式
Atitit.linq java的原理与实现 解释器模式 1. Linq from where 的实现1 2. Where expr 的实现1 3. Attilax的一点变化2 4. 解释器模式的 ...
- Tomcat闲聊
上面是Tomcat的执行过程. 下面说几个概念: 1.JSP:这个就是在html文件中嵌入Java代码之后重新生成的一个文件(.jsp的文件) 2.servlet:就是一个处理动态资源的小程序,一般位 ...
- 微信小程序下拉按钮动画
有些时候要求下拉按钮需要动画效果,但又不需要引入插件. 这时需要手动写一个动画. 主要思路: 动态切换class 默认与动画转向的样式编写 上图是默认给出的按钮向下的样式, 上图是动画转向后的样式 上 ...
- AJAX动态加载评论
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Mysql 5.7.24 解压版安装步骤
1.设置 MYSQL_HOME 变量(在mysql解压根目录下) 例如:C:\Program Files\mysql-5.7.24 2.系统path 变量最后面增加 %MYSQL_HOME%\bin ...