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;
}

最新文章

  1. 字符串作为map的key
  2. js活动倒计时
  3. 从angularJS看MVVM
  4. Android 开发工具之Codota
  5. php中的常用数组函数(三)(获取数组交集的函数们 array_intersect()、array_intersect_key()、array_intersect_assoc()、array_intersect_uassoc()、array_intersect_ukey())
  6. C++-标准输入输出
  7. 原生javascript-常用的函数
  8. Visual Studio 2010 中的 Web 开发
  9. UVA442 栈
  10. CSS 画三角形、圆
  11. core ML学习
  12. Linux Collection:网络配置
  13. AngularJS学习笔记(四)内置指令
  14. CSS实现DIV从隐藏到展示的过渡效果
  15. apache不能启动LoadModule php5_module modules/ph
  16. .NetCore使用Swagger进行单版本或多版本控制处理
  17. ActionScript 3操作XML 详解
  18. Fiddler Web Debugger是什么?(图文详解)
  19. TPO-22 C2 Revise a music history paper
  20. HDU 1074 Doing Homework (dp+状态压缩)

热门文章

  1. Docker安装及阿里云镜像加速器配置
  2. 无监督LDA、PCA、k-means三种方法之间的的联系及推导
  3. 120行代码打造.netcore生产力工具-小而美的后台异步组件
  4. HashMap常问面试题整理
  5. Java 切割字符串的几种方式
  6. react中使用decorator 封装context
  7. 手写网页扫雷之HTML部分
  8. GCDLCM 【米勒_拉宾素数检验 (判断大素数)】
  9. 一文读懂 Java 异常体系
  10. Linux使用手册