[POJ1463] Strategic game

题目链接:

传送门

题目大意:

Bob非常享受玩电脑游戏的过程,尤其是策略游戏,但是在有些时候,他因为不能在第一时间找到最佳的策略而十分伤心。 现在,他遇到了一个问题。他必须保卫一个中世纪的城市,有很多道路将整个城市连起来,整体上看上去像一棵树。Bob需要放置尽可能少的士兵,保卫树上所有的边。士兵只能放在节点上,但是却可以保卫所有与这个节点相邻的边。

题目分析:

由于树本身具有二分图的性质,所以这里我把树手动染色转成二分图,然后跑最小点覆盖
(当然也可以树形dp)

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N (1500 + 5)
using namespace std;
inline int read(){int cnt = 0, f = 1; char c;c = getchar();while (!isdigit(c)) {if(c == '-') f = -f;c = getchar();}while (isdigit(c)) {cnt = cnt * 10 + c - '0';c = getchar();}return cnt * f;
}
int n, nxt[2*N], to[2*N], first[2*N], tot, x, t, y, Float[N], cnt, black, white, ans, match[N];
bool vis[N];
struct node{int x;int y;
}edge[N];
void add(int x, int y) {nxt[++tot] = first[x];first[x] = tot;to[tot] = y;
}
void Dfs(int u){for (register int i = first[u]; i; i = nxt[i]) {int v = to[i];if(!Float[v]) {Float[v] = Float[u] + 1;Dfs(v);}}
}
void build_map() {memset (first, 0, sizeof(first));memset (nxt, 0, sizeof(nxt));memset (to, 0, sizeof(to));tot = 0;for (register int i = 1; i <= cnt; i++) {int X = edge[i].x; int Y = edge[i].y;if (Float[X] % 2 == 1) {add(X, Y);if (!vis[X]) {vis[X] = true;black++;}if (!vis[Y]) {vis[Y] = true;white++;}} else {add(Y, X);if (!vis[X]) {vis[X] = true;white++;}if (!vis[Y]) {vis[Y] = true;black++;}}}
}
int find(int u) {
//      cout<<u<<"##"<<endl;for (register int i = first[u]; i; i = nxt[i]) {int v = to[i];
//      cout<<vis[v]<<" "<<v<<endl;if (vis[v]) {continue; } else {vis[v] = true;if (match[v] == -1||find(match[v])) {match[v] = u;return 1;}}}return 0;
}int hungary() {for (register int i = 1; i <= n; i++) match[i] = -1;for (register int i = 1; i <= n; i++) {for (register int j = 1; j <= n; j++) vis[j] = 0;ans += find(i);}return ans;
}int main(){while(scanf("%d", &n) != EOF) {memset(first, 0, sizeof(first));memset(nxt, 0, sizeof(nxt));memset(to, 0, sizeof(to));memset(Float, 0, sizeof(Float));memset(vis, 0, sizeof(vis));tot=0; cnt=0; ans=0;for (register int i = 1; i <= n; i++) {x = read();t = read();for (register int j = 1; j <= t; j++) {y = read();edge[++cnt].x = x+1;edge[cnt].y = y+1;add(x+1,y+1);add(y+1,x+1);}}Float[1] = 1;Dfs(1);build_map();
//      cout<<black<<" "<<white<<endl;
//      for(register int i = 1; i <= n; i++) cout<<Float[i];int res = hungary();printf("%d\n", res);}return 0;
}

转载于:https://www.cnblogs.com/kma093/p/10540883.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix邮件告警

zabbix邮件告警调用第三方邮件服务来发送邮件。 [roottiandong ~]# yum install mailx -y 修改配置文件 [roottiandong ~]# vim /etc/mail.rc 67 set from15600857257163.com smtpsmtp.163.com 68 set smtp-auth-user15600857257163.com 69 set smtp-auth-password密码&#xf…

模糊推理机制 matlab,基于模糊综合评判推理机制的学生素质评价系统设计与实现...

第22卷第2期2002年2月文章编号&#xff1a;(2002)l00l-908l2-008l-03计算机应用ComputerAppIicationsVoI.22,No.2Feb.,2002基于模糊综合评判推理机制的学生素质评价系统设计与实现尹世群(西南师范大学计算机与信息科学学院&#xff0c;重庆4007l5)摘要&#xff1a;根据模糊数学…

SweetAlert – 替代 Alert 的漂亮的提示效果

Sweet Alert 是一个替代传统的 JavaScript Alert 的漂亮提示效果。SweetAlert 自动居中对齐在页面中央&#xff0c;不管您使用的是台式电脑&#xff0c;手机或平板电脑看起来效果都很棒。另外提供了丰富的自定义配置选择&#xff0c;可以灵活控制。 在线演示 插件下载 您可…

onpagefinished等了很久才执行_今天自律了吗?停课不停锻炼 才是战疫正确姿势

近日&#xff0c;中青校媒面向全国915名高校学生发起关于“宅家运动”情况的调查&#xff0c;发现15.39%被调查者在家期间会严格执行锻炼计划&#xff0c;39.96%选择间歇性完成制订的运动目标&#xff0c;还有44.65%在家很少运动。(3月18日《中国青年报》)新冠肺炎疫情发生&…

Spring Data Couchbase 1.0 GA发布

Spring Data Couchbase 1.0 GA版本已发布&#xff01; 该项目是Spring Data项目的一部分&#xff0c;该项目旨在为新数据存储提供熟悉且一致的基于Spring的编程模型&#xff0c;同时保留特定于存储的功能。 Spring Data Couchbase项目提供了与Couchbase Server数据库的集成。 …

网络验证php接口逆向,一个专利查错的逆向(网络验证)

[C#] 纯文本查看 复制代码bool flag true;if (!fileInfo.CreationTime.ToString().Equals(configData.fileCreateTime))//这里是校验License&#xff0c;直接删除掉{MessageBox.Show("认证文件已损坏&#xff01;");flag false;Application.Exit();}if (flag){Lice…

kickstart-G

感觉自己很蠢&#xff0c;large数据只能交一次&#xff0c;忘记这回事了 A题 O(n^2)解法&#xff0c;用vector<set> 缓存j后面的数据&#xff0c;减少一重循环 1 #include <string>2 #include <vector>3 #include<iostream>4 #include<cstdio>5 …

Ocrad.js – JS 实现 OCR 光学字符识别

Ocrad.js 相当于是 Ocrad 项目的纯 JavaScript 版本&#xff0c;使用 Emscripten 自动转换。这是一个简单的 OCR &#xff08;光学字符识别&#xff09;程序&#xff0c;可以扫描图像中的文字回文本。 不像 GOCR.js&#xff0c;Ocrad.js 被设计成一个端口&#xff0c;而不是围绕…

c++ ptree判断是否存在节点_CTreeCtrl 查找 等于某值 的节点,并设置为高亮

查找节点&#xff0c;并返回该节点HTREEITEM GroupTree::FindTreeItem(HTREEITEM item,CString& strText){HTREEITEM hFind;if(item NULL)return NULL;while(item!NULL){if(m_pTree->GetItemText(item) strText)return item;if(m_pTree->ItemHasChildren(item))…

oracle安装出现getproces,oracle安装问题

一.引入问题帮朋友在CentOS上安装一个10g的Oracle&#xff0c;结果朋友的CentOS版本是6.2的版本&#xff0c;最新的一个版本&#xff0c;不过Linux上基本都差不多&#xff0c;所以按照以前的步骤&#xff0c;迅速的操作起来&#xff0c;结果遇到N多以前没有遇到过的错误。安装被…

使用Java和JCEKS进行AES-256加密

总览 由于最近爱德华斯诺登 &#xff08; Edward Snowden&#xff09;发布了文件以及针对JC Penny &#xff0c; Sony和Target等在线商业商店的黑客入侵&#xff0c;安全性已成为近年来讨论的重要话题。 虽然本文不会为您提供帮助防止使用非法来源数据的所有工具&#xff0c;但…

Sequence.js 实现带有视差滚动特效的图片滑块

Sequence.js 功能齐全&#xff0c;除了能实现之前分享过的现代的图片滑动效果&#xff0c;还可以融合当前非常流行的视差滚动&#xff08;Parallax Scrolling&#xff09;效果。让多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来非常出色的视觉体验。…

【SQL Server 学习系列】-- sql 随机生成中文名字

【SQL Server 学习系列】-- sql 随机生成中文名字 原文:【SQL Server 学习系列】-- sql 随机生成中文名字1 DECLARE fName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 姓氏2 DECLARE lName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)…

本地方法栈线程公有_Java运行时区域,哪些区域是线程私有的?哪些是共有的?...

JVM 运行时数据区域大致可以分为&#xff1a;程序计数器、虚拟机栈、本地方法栈、堆区、元空间、运行时常量池、直接内存等区域&#xff1b;就是下面这个样子的&#xff1a;其中有些区域&#xff0c;随着 JDK 版本的升级不断调整&#xff0c;例如&#xff1a;JDK 1.6&#xff0…

matlab wc wp,数字信号处理MATLAB习题.PDF

数字信号处理MATLAB习题数字信号处理MATLAB 习题电气硕 72 李弘昌第11 题分别用脉冲响应不变法和双线性变换法设计一个巴特沃斯型IIR 低通数字滤波器&#xff0c;采样频率 &#xff0c;其通带边频 处的衰减为 &#xff0c;阻带边频 处的衰减为 。给出设计该滤波器的MATLAB 程序…

开源JVM Sampling Profiler

众所周知 &#xff0c;大多数现有的采样Java Profiler都必须在安全的地方进行堆栈跟踪收集。 诸如采样探查器之类的探查器就是这种情况&#xff0c;它使用SUN / Oracle管理代理来收集其堆栈跟踪。 这种方法的问题在于&#xff0c;由于不是程序中的每个点都不是安全点&#xff0…

Solidity中的基本类型转换

Solidity中的基本类型转换&#xff08;十四&#xff09;|入门系列 2017/4/29 posted in Solidity入门系列 点击查看原文&#xff0c;获得优化的排版。 隐式转换 如果一个运算符能支持不同类型。编译器会隐式的尝试将一个操作数的类型&#xff0c;转为另一个操作数的类型&#x…

雷霆战机

前言 多年前&#xff0c;你我在一起"打飞机"。为了实现真正的打飞机&#xff0c;在下一年前踏足帝都学习了无所不能的Python&#xff0c;辣么接下来带你在俩个小时用200行代码学会打飞机。 python中提供了一个pygame的模块能够让我们快速编写一个游戏。接下来&#x…

FancyBox - 经典的 jQuery Lightbox 插件

FancyBox 是一款非常优秀的弹窗插件&#xff0c;能够为图片、HTML 内容和其它任务的多媒体内容提供优雅的弹出缩放效果。作为是最流行的 Lightbox 插件之一&#xff0c;可以通过 fitToView 实现自适应功能。主要特色&#xff1a; ✓ 能够显示图片、HTML 元素、SWF 影片、ifra…

edger多组差异性分析_简单使用DESeq2/EdgeR做差异分析

DESeq2和EdgeR都可用于做基因差异表达分析&#xff0c;主要也是用于RNA-Seq数据&#xff0c;同样也可以处理类似的ChIP-Seq,shRNA以及质谱数据。这两个都属于R包&#xff0c;其相同点在于都是对count data数据进行处理&#xff0c;都是基于负二项分布模型。因此会发现&#xff…