[SCOI2010]连续攻击游戏
题目描述:
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<bits/stdc++.h>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
[SCOI2010]连续攻击游戏相关推荐
- 洛谷——P1640 [SCOI2010]连续攻击游戏
P1640 [SCOI2010]连续攻击游戏 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备 ...
- P1640 [SCOI2010]连续攻击游戏 匈牙利算法
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- P1640 [SCOI2010]连续攻击游戏
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 【洛谷1640】[SCOI2010]连续攻击游戏
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- P1640 [SCOI2010]连续攻击游戏:(二分图)
lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使 ...
- [luoguP1640] [SCOI2010]连续攻击游戏(二分图最大匹配)
传送门 我们将每一个属性和物品连边,然后枚举从小到大属性跑匈牙利,直到找不到连边 #include <cstdio> #include <cstring> #include & ...
- P1640 [SCOI2010]连续攻击游戏 (二分图)
传送门 题面: 题解: 不看标签还是很难想到建图,看了标签也想不到怎么建图. 因为每个数字只能被选择一次,每个装备也只能被选择一次,那么就可以考虑装备与两个属性之间建边. 那么问题就变成了二分图最大匹 ...
- 【二分图】洛谷P1640连续攻击游戏
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- [二分图]luogu 1640 连续攻击游戏
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- Luogu1640 连续攻击游戏
并查集的做法 暂时还不会. 二分图 思路很可以 超时的问题:即使把vis改成bool还是超,于是了解了"时间戳"QwQ(还是很好理解的) 原来memset真的还是挺费时间的 所以二 ...
最新文章
- 独家 | Python的“predict_prob”方法不能真实反映预测概率校准(如何实现校准)...
- lambda函数详解
- Thymeleaf——访问静态资源(static)解决方案
- nssl1296-猫咪的进化【dp】
- java数组数据结构_Java数据结构之数组
- 关于asp.net上传图片自动生成缩略图
- DPDK-VPP 学习笔记-04 Load Balancer plugin nat4 PATCH
- 雪球产品定价-蒙特卡罗模拟法
- RFC 2544阅读笔记
- UM2 3D 打印机 DIY 实践 (1)结构篇
- FAT32文件系统格式详解(图文针对具体文件存储,分析fat32 SD卡)
- 互联网+时代的7个引爆点(读书笔记)
- 康师傅红烧牛肉面:守护平凡英雄,成就烟火人生
- 适合打游戏的计算机,最适合玩游戏的笔记本电脑 广受好评的三款笔记本
- linux for 迅雷,关于迅雷for linux
- 关于怎么学习好一门技术一门语言
- 利用pytesser识别简单图形验证码
- 2022CCF中国软件大会(CCF ChinaSoft)“系统软件教育”论坛成功召开
- setHeader方法的参数说明
- JS中children与childNodes的区别