bzoj1854

匈牙利。。

 1 #include<bits/stdc++.h>
 2 #define lowbit(a) ((a)&(-(a)))
 3 #define clr(a,x) memset(a,x,sizeof(a))
 4 #define rep(i,l,r) for(int i=l;i<(r);i++)
 5 typedef long long ll;
 6 using namespace std;
 7 int read()
 8 {
 9     char c=getchar();
10     int ans=0,f=1;
11     while(!isdigit(c)){
12         if(c==‘-‘) f=-1;
13         c=getchar();
14     }
15     while(isdigit(c)){
16         ans=ans*10+c-‘0‘;
17         c=getchar();
18     }
19     return ans*f;
20 }
21 const int maxn=1000009,maxk=10009;
22 int n,ans,match[maxn+maxk],vis[maxn+maxk];
23 vector<int>e[maxn+maxk];
24 void addedge(int u,int v){
25     e[u].push_back(v);
26     e[v].push_back(u);
27 }
28 bool dfs(int k){
29     rep(i,0,e[k].size()){
30         int v=e[k][i];
31         if(vis[v]!=ans){
32             vis[v]=ans;
33             if(!match[v]||dfs(match[v])){
34                 match[v]=k;
35                 return 1;
36             }
37         }
38     }
39     return 0;
40 }
41 int main()
42 {
43     n=read();
44     rep(i,1,n+1){
45         int u=read(),v=read();
46         addedge(u,i+10000);addedge(v,i+10000);
47     }
48     int sum=0;
49     for(ans=1;ans<=10000;ans++){
50         if(dfs(ans)) ++sum;
51         else break;
52     }
53     printf("%d\n",sum);
54     return 0;
55 }

1854: [Scoi2010]游戏

Time Limit: 5 Sec  Memory Limit: 162 MB
Submit: 3029  Solved: 1102
[Submit][Status][Discuss]

Description

lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示。当他使用某种装备时,他只能使用该装备的某一个属性。并且每种装备最多只能使用一次。 游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增地攻击,才能对boss产生伤害。也就是说一开始的时候,lxhgww只能使用某个属性值为1的装备攻击boss,然后只能使用某个属性值为2的装备攻击boss,然后只能使用某个属性值为3的装备攻击boss……以此类推。 现在lxhgww想知道他最多能连续攻击boss多少次?

Input

输入的第一行是一个整数N,表示lxhgww拥有N种装备 接下来N行,是对这N种装备的描述,每行2个数字,表示第i种装备的2个属性值

Output

输出一行,包括1个数字,表示lxhgww最多能连续攻击的次数。

Sample Input

3
1 2
3 2
4 5

Sample Output

2

HINT

【数据范围】
对于30%的数据,保证N < =1000
对于100%的数据,保证N < =1000000

Source

Day1

[Submit][Status][Discuss]

时间: 2024-10-14 16:31:57

bzoj1854的相关文章

bzoj1854: [Scoi2010]游戏(匈牙利) / GDKOI Day2 T2(最大流)

题目大意:有n(<=1000000)个装备,每个装备有两个属性值(<=10000),每个装备只能用一次,使用某一个值,攻击boss必须先使用属性为1的,再使用属性为2的,再使用属性为3的,以此类推······问最多攻击多少次. 每个武器和他的两个属性值连边,跑匈牙利. 学会了新的技巧,可以省掉1w个memset(这题是真·1w个 2333333). 代码如下: #include<iostream> #include<cstdlib> #include<cstrin

BZOJ1854: [Scoi2010]游戏

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1854 题目大意:lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备               的某一个属性.并且每种装备最多只能使用一次. 游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增        

[BZOJ1854][Scoi2010]游戏(二分图匹配/并查集)

题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1854 分析:很裸的一道二分图匹配对吧,但是在hzwer的blog上看见神奇的并查集做法! 其实这题和bzoj1191惊人的相似! 把权值当作点,装备当作边,既然一个装备只能选择一个属性,也就是你要人为给边定向,箭头指到的点就表示你这个装备选的属性. 然后就和bzoj1191一样的了 如果一个集合里的点构成一个树,那么很显然,把那个权值最大的点作为根,除了根节点以外的点都可以选出,如果

bzoj1854 游戏题解(二分图/并查集)

1854: [Scoi2010]游戏 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 5547  Solved: 2229[Submit][Status][Discuss] Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使用一次. 游戏进行到最后,lxhgww遇到了终极boss

[BZOJ1854]游戏(SCOI2009)

这道题和今年GDKOI的Day2T2很像(然而gdkoi的题用网络流可以A,这道题只能拿30). 网址:http://www.lydsy.com/JudgeOnline/problem.php?id=1854 题目: 很显然,我们可以立即想到一种解法:如果第i个武器的属性是(a,b),那么就连i->a,i->b两条边,然后就跑网络流.为了确保要从1开始连续攻击,就可以二分答案,用网络流来判断,因为如果能从1打到n,就肯定能从1打到n-1(废话).判断就是每次只让1~mid的属性值流过去,看一下

【不可能的任务24/200】洛谷1640 bzoj1854游戏 匈牙利就是又短又快

bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个“大牛分站”,就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类似于匈牙利(⊙o⊙) (匈牙利的复杂度惊人,1e6秒过) 1 #include <cstdio> 2 bool b[3000001]; 3 int c[3000001],fir[3000001],to[3000001],nex[3000001]; 4 int N,n,p,q; 5 void add(int p,int

[蒟蒻修炼计划][bzoj1854][SCOI2010]游戏

Description 一个装备有两个属性,一个装备只能被使用一次,一次使用一种属性.攻击boss时需按属性1.属性2.属性3...属性k的顺序使用,问k最大为多少. Input 输入的第一行是一个整数N,表示有N种装备.接下来N行,是对这N种装备的描述,每行2个数字,表示第i种装备的2个属性值. Output 输出一行,包括1个数字,表示k. Sample Input 3 1 2 3 2 4 5 Sample Output 2 HINT 1<=属性值<=10000,N < =10000

bzoj1854 游戏

Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使用一次. 游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增地攻击,才能对boss产生伤害.也就是说一开始的时候,lxhgww只能使用某个属性值为1的装备攻击boss,然后只能使用某个属性值为2的装备攻击bo

[SCOI2010][BZOJ1854] 游戏|二分图匹配|匈牙利算法|并查集

1854: [Scoi2010]游戏 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 3018  Solved: 1099[Submit][Status][Discuss] Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使用一次. 游戏进行到最后,lxhgww遇到了终极boss