知识点:二分,深度优先搜索

难度:4

这个题是最小化的二分,我们把求最优解问题转化为判定问题,那么就是当前拖拉机价钱能否走一半的地图,这里一半的地图就是把地图划分连通块,有没有连通块的个数达到一半,也就是起点是任意的,这个题目上面没有说,但是我看了题解里面的题意,就是这个意思,那么就很好做了,判定函数里面用了深搜来划分连通块,并且记录每个连通块里面的元素的个数,最后看看有没有哪个连通块元素的个数是超过一半的,写了17分钟过了

#include <bits/stdc++.h>using namespace std;const int N = 505;int n, a[N][N], b[N][N], c[N * N], cnt;void dfs(int x, int y, int z) {b[x][y] = cnt;c[cnt]++;int dx[4] = {-1, 0, 1, 0};int dy[4] = {0, 1, 0, -1};for (int i = 0; i < 4; i++) {int x1 = x + dx[i];int y1 = y + dy[i];if (x1 < 0 || x1 >= n || y1 < 0 || y1 >= n) continue;if (b[x1][y1] || abs(a[x][y] - a[x1][y1]) > z) continue;dfs(x1, y1, z);}
}bool check(int x) {cnt = 0;memset(b, 0, sizeof(b));memset(c, 0, sizeof(c));for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (!b[i][j]) {cnt++;dfs(i, j, x);}}}for (int i = 1; i <= cnt; i++) {if (c[i] >= n * n / 2) return true;}return false;
}int main() {cin >> n;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) cin >> a[i][j];}int l = 0, r = 1e6;while (l < r) {int mid = (l + r) >> 1;if (check(mid)) r = mid;else l = mid + 1;}cout << l;return 0;
}

P3073 [USACO13FEB]Tractor S相关推荐

  1. [USACO13FEB]Tractor【二分 + BFS】

    Pro Luogu3073 Sol 好水的一道题啊--直接二分答案就可以过,不需要并查集的,二分加广搜,时间复杂度是O(n^2 logM),能过的. 读完题,我们很容易的就能知道,答案满足单调性,也就 ...

  2. USACO Tractor

    洛谷 P3073 [USACO13FEB]拖拉机Tractor 洛谷传送门 JDOJ 2351: USACO 2013 Feb Silver 2.Tractor JDOJ传送门 题意翻译 题目描述 F ...

  3. P3073 Tractor

    P3073 Tractor 题目描述 FJ有块农田太崎岖了,他要买一辆新拖拉机才能在这里巡视.这块农田由N x N个格子的非负整数表示高度(1<=N<=500).拖拉机从当前格子走到相邻格 ...

  4. [USACO13FEB]拖拉机Tractor

    题目 https://www.luogu.org/problemnew/show/P3073 思路 二分+并查集 首先我们注意到,这题有一个非常重要的特点:高度差带来的花费是不会累加的,只要一次性花费 ...

  5. 洛谷 P1849 [USACO12MAR]拖拉机Tractor

    题目描述 After a long day of work, Farmer John completely forgot that he left his tractor in the middle ...

  6. P3076 [USACO13FEB]Taxi G

    [USACO13FEB]Taxi G 题目描述 Bessie is running a taxi service for the other cows on the farm. The cows ha ...

  7. [luoguP1849] [USACO12MAR]拖拉机Tractor(spfa)

    传送门 神奇的spfa #include <queue> #include <cstdio> #include <cstring> #include <ios ...

  8. [USACO13FEB]Perimeter【DFS / 深搜】

    Pro Luogu3072 Sol 这题的话,我就把我的想做当做反例给说一下. 错误想法:很容易的发现,一个不规则的图形,我们可以通过转换为规则的矩形来求周长,可以平移一些边来求得,但是存在反例. 如 ...

  9. [USACO13FEB]Milk Scheduling【拓扑序】

    Pro Luogu3074 Sol 好水的一道拓扑题--第一次打的时候可以说是随便打的--(逃.样例过了就交了,也没检查, 结果606060分,xswlxswlxswl.改了改部分,加了点细节,就AC ...

最新文章

  1. 如何在C#中用单个空格替换多个空格?
  2. t110ii装系统_DELL T110 II如何安装server2003操作系统
  3. Teams团队的成员列表API的已知问题
  4. 云上“炼”码兵器 GitHub Codespaces
  5. leetcode 47. 全排列 II 思考分析
  6. 简单的java方法_Java简单实用方法一
  7. Python基本数据类型以及字符串
  8. Vue 做调查问卷简单实例
  9. catia二维图坐标如何表示_CATIA二维工程制图中孔系尺寸及点坐标标注方法
  10. 硬盘的Smart信息说明
  11. win10服务器系统进不去怎么办,win10开机进不去系统怎么办。
  12. 3D游戏编程 作业五 枪打恶鬼(打飞碟)
  13. 关于 getWriter() has already been called for this response 的错误解决办法
  14. 函数返回值的优化技术(RVO和右值引用)
  15. 量化投资学习-11:图解股票长线价值趋势的操作策略与短线热点题材的操作策略的错位使用的危害
  16. snakeyaml数字字符串显示单引号的问题
  17. [附源码]java毕业设计大学城二手书交易网站
  18. 做猎头的老婆透露2009年IT售前工程师薪水,大家参考吧
  19. 微软黑屏属于***行为
  20. python输出报告_python(unittest)报告导出(二):使用 BeautifulReport导出

热门文章

  1. Mysql-SQL语句的使用一(超详细)
  2. 【Linux/lvm命令】Linux通过lvcreate命令创建逻辑卷时报错?(通过lvresize命令解决)——工作实战(已解决)20200709
  3. 通过欧盘赔率看足求盘口
  4. 东华大学操作系统作业调度作业
  5. Spring的隔离级别事务传播属性数据库隔离级别之间的联系
  6. Python是用来干什么的,python主要用于什么
  7. [附源码]Python计算机毕业设计SSM乐多多宠物店网站(程序+LW)
  8. 斐波那契数列递归算法与非递归算法
  9. html选择文件框选择wood文件,CSS基础及选择器
  10. 话说员工的跳槽与忠诚度