题目链接:

https://www.luogu.org/problemnew/show/P1640

分析:

这道题用二分图来解决即可.应该可以作为网络流中的模板题来食用,

每一个武器有两个属性,但是只能取一个用,由此我们便可以想到与二分图挂钩。

二分图匹配当中,一个点只能和一个点匹配

问题当中要从小到大使用所有属性,所以肯定要有以1…10000属性为点的一侧

把装备放在另一侧,装备和它的两个属性连边.

(也就相当于从左到右一连,再从右到左一连,才相当于用了两个属性。

从小到大匹配属性点,

因为题目要求必须要每个技能依次释放,所以要有else break环节,这是一个网络流二分图中需要重点注意的环节,有时要加而有时不要,这里要加上还是比较好理解的。

代码:

#include<cstdio>
#include<vector>
#include<cmath>
using namespace std;
vector<int>v[10005];
int vis[1000005],link[1000005];
int t;
bool find(int x)//二分图模板,简单而且理解也不难,墙裂建议借鉴
{
for(int i=0;i<v[x].size();i++)
{
int p=v[x][i];
if(vis[p]!=t)
{
vis[p]=t;
if(link[p]==0||find(link[p]))
{
link[p]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int n;
scanf("%d",&n);
int maxf=0;
for(int i=1;i<=n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
v[a].push_back(i);
v[b].push_back(i);
}
int cnt=0;
for(int i=1;i<=n;i++)
{
t++;
if(find(i))
{
cnt++;
}
else
break;
}
printf("%d\n",cnt);
return 0;
}

最新文章

  1. A*寻路算法
  2. 2015 MVP OpenDay 及 Community Camp 演讲PPT分享
  3. 【C语言入门教程】2.2 常量 与 变量
  4. nginx_tomcat负载均衡环境
  5. UITableViewCell分割线左边部分缺少一些的解决方法
  6. SqlSever中Index Seek的匹配规则(一)
  7. C++注意事项锦集
  8. java,&lt;E&gt;什么意思?
  9. Kooboo中怎么新增一个关联的Details 动态页面。
  10. 使用Doxygen工具生成Cocos2D-x 2.1.0文档
  11. BNUOJ 34985 Elegant String 2014北京邀请赛E题 矩阵快速幂
  12. c++野指针 之 实战篇
  13. vs2015web工程中的html引用压缩后css后无法智能提示的问题解决
  14. 二分 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D
  15. BZOJ 4568: [Scoi2016]幸运数字 [线性基 倍增]
  16. golang 读书笔记
  17. MySQL中varchar最大长度是多少?
  18. 转Git配置SSH,并Push到GitHub上的相关流程
  19. hive中的with用法
  20. _itemmod_refresh

热门文章

  1. WPF 用Main函数方式启动程序
  2. LigerUI中Grid的使用时关于url请求不到数据的问题
  3. Tomcat Java SSL
  4. MySQL InnoDB缓冲池(Buffer Pool)
  5. 浅议Delphi中的Windows API调用(举的两个例子分别是String和API,都不错,挺具有代表性)
  6. SPOJ130_Rent your airplane and make money_单调队列DP实现
  7. Hadoop集群(第6期)JDK和SSH无密码配置
  8. SYN5307型数字式电秒表
  9. 怎么安装IDEA?
  10. iOS开发(5):设备唯一标识与全局变量