本题介绍两种做法;

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 }

最新文章

  1. ubuntu下安装mysql及卸载mysql方法
  2. go异常处理
  3. js获取url参数值(HTML之间传值)
  4. CF731C Socks并查集(森林),连边,贪心,森林遍历方式,动态开点释放内存
  5. flask学习资源
  6. 为什么上传文件的表单里要加个属性enctype
  7. chromium浏览器开发系列第四篇:如何调试最新chromium源码
  8. sql语句增删改查(转)
  9. puppet任务计划
  10. angularjs之ui-bootstrap的Datepicker Popup实现双日期选择控件
  11. JAVAWEB复习资料-01
  12. c/c++ 继承与多态 由子类向父类的转换规则
  13. 【XSY3141】哲学家 计算几何 线段树
  14. (转)解决 TortoiseGit 诡异的 Bad file number 问题
  15. Oracle EBS INV 更新状态
  16. jQuery----初识jQuery
  17. 算法笔记_179:历届试题 数字游戏(Java)
  18. BZOJ4012: [HNOI2015]开店【动态点分治】
  19. mysql服务器硬件配置选择参考
  20. Struts2(六)

热门文章

  1. 使用try_catch_finally处理流中的异常和JDK7流中的异常处理
  2. 丽泽普及2022交流赛day16 社论
  3. netdata检测工具的安装与使用
  4. Python 函数修饰器
  5. ERROR: null value in column &quot;name&quot; of relation &quot;res_company&quot; violates not-null constraint
  6. 基于Sikuli GUI图像识别框架的PC客户端自动化测试实践
  7. 论文翻译:2021_LACOPE: Latency-Constrained Pitch Estimation for Speech Enhancement
  8. AgileFontSet迅捷字体设置程序
  9. 面试常问:HTTP 1.0 和 HTTP 1.1 有什么区别?
  10. 这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架