bzoj1854
神奇了
朴素的做法不难想,二分图最大匹配(汗,我其实还是想了一会,太弱了)
左边点集为能打的属性值,右边把武器作为一个点
武器和两个属性连边,
然后和superhero那题差不多,顺次找匹配,找不到了就退
然后分析一下规模,感觉能卡过去,于是就真卡过去了(……)
其实,因为n很大,每次找匹配要fillchar一下visit数组很浪费时间
于是就加了个队列记录前一次访问过的点
竟然就过去了……论常数优化的重要
type node=record
next,point:longint;
end; var edge:array[..] of node;
v:array[..] of boolean;
p:array[..] of longint;
q,cx,cy:array[..] of longint;
j,t,s,n,i,x,y,ans,max:longint; procedure add(x,y:longint);
begin
inc(s);
edge[s].point:=y;
edge[s].next:=p[x];
p[x]:=s;
end; function dfs(u:longint):boolean;
var i,j:longint;
begin
i:=p[u];
while i<> do
begin
j:=edge[i].point;
if not v[j] then
begin
v[j]:=true;
inc(t);
q[t]:=j;
if (cy[j]=) or dfs(cy[j]) then
begin
cx[u]:=j;
cy[j]:=u;
exit(true);
end;
end;
i:=edge[i].next;
end;
exit(false);
end; begin
readln(n);
for i:= to n do
begin
readln(x,y);
add(x,i);
add(y,i);
if x>max then max:=x;
if y>max then max:=y;
end;
ans:=max;
for i:= to max do
if cx[i]= then
begin
for j:= to t do
v[q[j]]:=false; //关键啊,能不写fillchar就不写
t:=;
if not dfs(i) then
begin
ans:=i-;
break;
end;
end;
writeln(ans);
end.
然后去看了一下正解,感觉真的不容易想到:
还是把属性值看做点,把武器看做连接两个属性值的边(无向边)
1.对于一个联通块,假如不含环(就是一棵树),那么必定可以满足其中任意的p-1个点。
2.对于一个联通块,假如含环,那么必定全部的p个点都能满足。
然后就可以利用并查集优越的时空复杂度了,
bzoj1854的更多相关文章
- 【BZOJ1854】[Scoi2010]游戏 二分图最大匹配
[BZOJ1854][Scoi2010]游戏 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当 ...
- bzoj1854 [Scoi2010]游戏 ([SCOI2010]连续攻击游戏)
bzoj1854 [Scoi2010]游戏 ([SCOI2010]连续攻击游戏) 据说正解是并查集???我不会 这不是一道匈♂牙利好题吗??? 一个装备的两个属性都向它连边,然后跑一遍匈♂牙利 注意: ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- bzoj1854 游戏
Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...
- [BZOJ1854][Scoi2010]游戏(二分图匹配/并查集)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1854 分析:很裸的一道二分图匹配对吧,但是在hzwer的blog上看见神奇的并查集做法 ...
- [bzoj1854][SCOI2010]游戏
Description 一个装备有两个属性,一个装备只能被使用一次,一次使用一种属性.攻击boss时需按属性1.属性2.属性3...属性k的顺序使用,问k最大为多少. Input 输入的第一行是一个整 ...
- BZOJ-1854 游戏 二分图匹配 (并查集)
1854: [Scoi2010]游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 3372 Solved: 1244 [Submit][Status] ...
- BZOJ两水题连发~(BZOJ1854&&BZOJ1191)
前言:两题都是省选题不过水的惊人,且都可以用二分图最大匹配做哎--- 1854: [Scoi2010]游戏 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: ...
- BZOJ1854: [Scoi2010]游戏 二分图
很早之前写的题了,发现没有更博,想了想,更一发出来. Orz ljss 这是冬令营上的例题...之后,我推出来了一种时间复杂度没有问题,空间复杂度没有问题的方法,额(⊙o⊙)…和给出的正解不同,但是能 ...
随机推荐
- Node.js之【express 安装问题】
经常在全局安装express后,在cmd里面会找不到express命令, 本地模式安装express:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件. 1.先全局安装expre ...
- WAMP环境的安装与测试
首先来点其他的补充:web服务的发展历程 对等网服务模式 没有专门的服务器,也没有专门的客户端!无法提供可靠的服务! C/S模式 client/server,各自安装不同的客户端和服务器端! B/S模 ...
- fedora 取消自动升级
fedora启动时经常CPU使用很高,看下进程原来是yumBackend.这是个yum的自动更新进程 只要关闭自动更新就可以了 gsettings set org.gnome.settings-dae ...
- [Learn Android Studio 汉化教程]第二章:Android Studio概述(一)
[Learn Android Studio ]第二章:Android Studio概述(一) Android Studio是一个视窗化的开发环境.为了充分利用有限的屏幕空间,不让你束手束脚,Andro ...
- 每日一记:搭建Memcached + php 缓存系统
服务器环境,Centos6.5 1.安装Memcached服务端 Yum -y install memcached 2.配置Memcached服务端用户以及自动启动服务等 将服务配置成自启动 chkc ...
- python解决汉诺塔问题
今天刚刚在博客园安家,不知道写点什么,前两天刚刚学习完python 所以就用python写了一下汉诺塔算法,感觉还行拿出来分享一下 首先看一下描述: from :http://baike.baidu. ...
- swift基础--字符串
(1)遍历 (2)长度 (3)拼接 (4)插值 (5)大小写 (6)trim (7)split ……等等 var a = "你好" var b = String() a.isEmp ...
- python 记录日志logging
在项目开发中,往往要记录日志文件.用python记录日志有两种方式: 1.利用python 自带的logging库,例如: # -*- coding: utf-8 -*- import osimpor ...
- BZOJ 3173 [Tjoi2013] 最长上升子序列 解题报告
这个题感觉比较简单,但却比较容易想残.. 我不会用树状数组求这个原排列,于是我只好用线段树...毕竟 Gromah 果弱马. 我们可以直接依次求出原排列的元素,每次找到最小并且最靠右的那个元素,假设这 ...
- 论MOBA类游戏五号位的重要性
观众朋友们,也许你对题目很好奇,才打开这篇文章.为什么技术圈中会出现游戏类的软文?如果时间充足,可以继续往下看. MOBA 类游戏的兴起,逐渐吞噬游戏市场,以病毒式的扩张方式肆意改变着游戏玩家内心对游 ...