SCOI 2010 连续攻击游戏(贪心,图论)
SCOI 2010 连续攻击游戏
solution
直接就硬刚
我愿称贪心为暴力
因为题目中要求一定从小到大贪心,那么当前点的下标有能够选取的较大点,那么它一定可以和前面的一个较小点连接,所以可以直接选取这个点
若你选的当前点是较小点,那么就需要考虑后面的怎么往上接才能使得答案最优。感性理解一下,答案应该在较大点密集的地方,然后往后找到较大点等于后面的较小点,然后就像当于接住了(就那个感觉,能明白吗),连起来之后形成的最长的链的长度就是最优的答案了
为了避免爆掉数组,我们采用的vector,自动申请空间存储,i从1往后遍历尝试找可行方案,找不到就退出。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
// #define int long long
using namespace std;
inline int read(){
int x = 0,w = 1;
char ch = getchar();
for(; ch > '9' || ch < '0'; ch = getchar()) if(ch == '-') w = -1;
for(; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
return x * w;
}
const int maxn = 100010;
vector<int> G[maxn];
int cnt[maxn];
int main(){
int n = read();
for(int i = 1; i <= n ;i++){
int u = read(), v = read();
if(u > v) swap(u, v);
cnt[v]++;
G[u].push_back(v);
}
int ans = n;
for(int i = 1; i <= n; i++){
if(cnt[i]){
cnt[i]--;
continue;
}
if(!G[i].size()){
ans = i - 1;
break;
}
int tmp = G[i][0];
for(int j = 1; j < G[i].size(); j++){
if(cnt[G[i][j]] > cnt[tmp] || (cnt[G[i][j]] == cnt[tmp] && G[i][j] > tmp))
tmp = G[i][j];
}
cnt[tmp]--;
}
cout << ans << '\n';
return 0;
}
SCOI 2010 连续攻击游戏(贪心,图论)的更多相关文章
- [SCOI 2010] 连续攻击游戏
[题目链接] https://www.luogu.org/problemnew/show/P1640 [算法] 二分图匹配 实现时需要常数优化和特判 [代码] //code by byf and lm ...
- 洛谷 P1640 [SCOI2010]连续攻击游戏 解题报告
P1640 [SCOI2010]连续攻击游戏 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备 ...
- 【二分图】洛谷P1640连续攻击游戏
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 洛谷P1640 [SCOI2010]连续攻击游戏(二分图)
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- [SCOI2010]连续攻击游戏 BZOJ1854 二分图匹配
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 洛谷 P1640 BZOJ 1854 [SCOI2010]连续攻击游戏
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 洛谷—— P1640 [SCOI2010]连续攻击游戏
https://www.luogu.org/problem/show?pid=1640 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1, ...
- 连续攻击游戏【P1640洛谷】二分图匹配变形【好题】【每次memset太慢了,用时间戳id。】
lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使 ...
- P1640 [SCOI2010]连续攻击游戏 二分图最大匹配 匈牙利算法
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
随机推荐
- vue+js清除定时器
注意data数据里面一定要定义Timeout Timeout:Function,//定时器 methods里面 moseovefalse(){//需要执行的方法 var that=this; that ...
- 如何设置body内容不能复制?
通过在body标签上设置相关的属性: <body oncontextmenu="return false" ondragstart="return false&qu ...
- centos7上安装redis以及PHP安装redis扩展(一)
1.关闭防火墙: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewal ...
- python flask API 返回状态码
@app.route('/dailyupdate', methods = ['POST','GET'])def dailyUpdate(): try: db=MySQLdb.connect(" ...
- 一起读《Java编程思想》(第四版)
空余时间看<Java编程思想>(第四版)这本书,遇到不懂的知识点就记录在本博客内. 1.复用具体实现 Java代码复用的三种常见方式:继承.组合.代理. 1.继承:使用extends关键字 ...
- 附024.Kubernetes全系列大总结
Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...
- Anroid组件滚动视图(ScollView)简单使用
ScollView应用展示 在xml文件中添加滚动视图 activity_main.xml <?xml version="1.0" encoding="utf-8& ...
- 深入理解Java虚拟机学习笔记(一)-----Java内存区域
一 概述 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题 ...
- 解除git文件处于lock状态方法
解决办法: 去git文件夹下删除lock文件就可以
- Accelerate Framework in Swift
介绍: 最近看到这篇文章有对Accelerate框架有一个介绍,自己也按照作者给的思路整理了一遍,也算是对这一框架的一个重新的回顾和学习,在以前研究AR先关只是的时候有接触到这个框架,赞具体里面的东西 ...