博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SCOI2010]连续攻击游戏
阅读量:5094 次
发布时间:2019-06-13

本文共 1967 字,大约阅读时间需要 6 分钟。

题目描述:

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:

3

1 2

3 2

4 5

输出样例#1:

2

说明 Limitation

对于30%的数据,保证N < =1000

对于100%的数据,保证N < =1000000

solution:

此题可以用匈牙利算法,虽然理论上会T,但还是可以过得。。。

若第I个装备有属性A,B,则在A,I和B,I中间连一条边,应为一个装备只能用一次,又有要求连续,可以想到匈牙利算法,且只要有一个点不符合就break。

前几次提交都T:

可能原因 :

1.数组开太大。。。

2.没用printf

3.没写register。。。

反正提交7次后A了(我还是太菜了)

代码:

// luogu-judger-enable-o2#include
using namespace std;const int MAXM = 2000001;inline int read(){ int f=1,x=0; char ch; do { ch=getchar(); if(ch=='-') f=-1; }while(ch<'0'||ch>'9'); do { x=(x<<1)+(x<<3)+ch-'0'; ch=getchar(); }while(ch>='0'&&ch<='9'); return f*x;}int n;struct node{ int to; int next;};node g[MAXM];int head[MAXM/2],tot=0;inline void addedge(int u,int v){ ++tot;g[tot].to=v;g[tot].next=head[u];head[u]=tot;return;}int p[MAXM/2];bool vis[MAXM/2];int ans=0;inline bool dfs(int i){ for(register int j=head[i];j>=0;j=g[j].next) { int v=g[j].to; if(!vis[v]) { vis[v]=true; if(p[v]==0||dfs(p[v])) { p[v]=i; return true; } } } return false;}int main(){ n=read(); for(register int i=1;i<=10000;i++) { head[i]=-1; } for(register int i=1;i<=n;i++) { int x,y; x=read(); y=read(); addedge(x,i); addedge(y,i); } for(register int i=1;i<=10000;i++) { memset(vis,false,sizeof(vis)); if(dfs(i)) ans++; else break; } printf("%d",ans);}

 

转载于:https://www.cnblogs.com/wlzs1432/p/8849578.html

你可能感兴趣的文章
20172319 实验三《查找与排序》实验报告
查看>>
构造函数的继承
查看>>
Nginx的虚拟主机配置
查看>>
overflow 属性
查看>>
Java中多态的一些简单理解
查看>>
洛谷 1449——后缀表达式(线性数据结构)
查看>>
JZOJ 3.10 1539——三条直线
查看>>
[最小割][Kruskal] Luogu P5039 最小生成树
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
Javascript的调试利器:Firebug使用详解
查看>>
(转)Android之发送短信的两种方式
查看>>
使用vue脚手架搭建项目
查看>>
Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
查看>>
网络爬虫初步:从一个入口链接开始不断抓取页面中的网址并入库
查看>>
iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
查看>>
python第九天课程:遇到了金角大王
查看>>
字符串处理
查看>>
ECharts(Enterprise Charts 商业产品图表库)初识
查看>>
LeetCode Factorial Trailing Zeroes (阶乘后缀零)
查看>>