【题解】[USACO13FEB]Tractor S
\(\text{Solution:}\)
好久没写啥\(dfs\)了,借这个题整理下细节。
观察到答案具有二分性,所以先求出其差的最大最小值,\(\log val\)的复杂度不成问题。
考虑如何\(check:\)
考虑一个\(dfs\)预处理当前点为\((i,j),\)高度为\(k\)所能到达的所有点。这一步是\(n^2\)的复杂度。注意判断是否出界的时候符号不要打反,以及这题所谓高度差是在绝对值意义上的。
遍历变量时不要重名。之所以每次不需要清空\(vis\)是因为每次\(dfs\)都会保证找齐一个点所能到达的所有点。
于是,这题可以在\(O(n^2\log m)\)的复杂度完成。
还有一个想法是求出原树的最小生成树后处理出\(siz\)和子树的最大差。然后可以\((n^2\log n^2)\)实现这题。
#include<bits/stdc++.h>
using namespace std;
const int MAXN=5e5+10;
int a[501][501],n;
const int dx[4]={1,0,-1,0};
const int dy[4]={0,1,0,-1};
int L,R,ans,vis[501][501];
int dfs(int x,int y,int kk){
int cnt=1;
vis[x][y]=1;
for(int k=0;k<4;++k){
int nx=x+dx[k],ny=y+dy[k];
if(nx<1||ny<1||nx>n||ny>n||vis[nx][ny]||abs(a[x][y]-a[nx][ny])>kk)continue;
cnt+=dfs(nx,ny,kk);
}
return cnt;
}
bool check(int k){
memset(vis,0,sizeof vis);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j){
if(vis[i][j])continue;
int C=dfs(i,j,k);
if(C*2>=n*n)return true;
}
return false;
}
int main(){
scanf("%d",&n);
L=(1<<30);R=-L;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&a[i][j]);
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
for(int k=0;k<4;++k){
int x=i+dx[k],y=j+dy[k];
R=max(R,a[i][j]-a[x][y]);
L=min(L,a[i][j]-a[x][y]);
}
}
}
while(L<=R){
int mid=L+R>>1;
if(check(mid))ans=mid,R=mid-1;
else L=mid+1;
}
printf("%d\n",ans);
return 0;
}
【题解】[USACO13FEB]Tractor S的更多相关文章
- [USACO13FEB] Tractor
题目链接 大家的 Blog 里面都是做过的题目,只有我的里面什么都没有 那我也开始写一点吧 刷着刷着 DP 不知怎的就出来一道这个题……用时 2 hours 后怒而删两个文件重构…… 然后过了……过了 ...
- [USACO13FEB]出租车Taxi
洛谷题目链接:[USACO13FEB]出租车Taxi 题目描述 Bessie is running a taxi service for the other cows on the farm. The ...
- [bzoj3062][Usaco13Feb]Taxi_贪心
Taxi bzoj-3062 Usaco13Feb 题目大意:有n个奶牛想坐出租车.第i头奶牛在起点a[i]等候,想坐出租车到b[i].Bessie从0出车,车上只能坐一头奶牛.她必须完成所有奶牛的要 ...
- USACO Tractor
洛谷 P3073 [USACO13FEB]拖拉机Tractor 洛谷传送门 JDOJ 2351: USACO 2013 Feb Silver 2.Tractor JDOJ传送门 题意翻译 题目描述 F ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
随机推荐
- TinkPHP框架开发的CRMEB小程序商城v4.0二次开发集成支付宝支付
前言 大家都知道支付宝支付和微信支付宝都只能局限在自己的平台,微信内支付宝支付是根本就不能使用,即使是公众号支付也需要跳转到外部浏览器才可以唤起支付宝支付,并且QQ浏览器唤起支付宝支付还是问题很多,所 ...
- 使用echarts 轻松搞定各种后台数据统计
之前接到老大一个需求,需要将公私生态系统构建一个日志系统,统计公有云.私有云还有其他工具平台(如禅道,jenkins)的用户登录信息,并使用图标的形式动态显示,之前刚入门的时候接触过echarts 这 ...
- Unity 深度冲突的解决方法
Dillon|2014-02-12 10:00|5899次浏览|Unity(280)0 3d游戏中当2个片元距离近裁减平面 w 落在同一个区间的时候,他们的深度是相等的. 最终你所看到的结果,就是下 ...
- 从两表连接看Oracle sql优化器的效果
select emp.*,dept.* from tb_emp03 emp,tb_dept03 dept where emp.deptno=dept.id -- 不加hint SQL> sele ...
- Nginx及其架构设计
1.1. 什么是 Nginx Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/P ...
- Solr专题(三)SSM项目整合Solr
一.环境配置 所需要的jar包: org.apache.solr.solr-solrj maven依赖: <!-- https://mvnrepository.com/artifact/org. ...
- Django 多页面间参数传递用session方法(Django七)
由一个页面跳转至另一个页面可以有render中携带几个参数,如下:照上例便在跳转到homepage页面后使用传递的四个参数了 但问题是如何在由homepage跳转到其他页面时仍可以使用这四个参数呢?我 ...
- Bootstrap一周学习小结
一.响应式布局 1.bootstrap是自适应mobile和web,会根据分辨率大小而自适应的一个代码库,Bootstrap定义了很多js和css的效果,把这些效果集成为多个API,供在使用时调用. ...
- GitHub常用上传文件的两种方法 附带常见的问题及Git安装教程
从早上下课到现在一直在琢磨如何给Github下载本地文件,中午饭都没吃.还好是解决了,感觉挺有成就感的.O(∩_∩)O哈哈~ 好哒 闲话不说,说重点. 一.git的安装 百度云:http://pan. ...
- Mysql实战(1):创建用户
此文为个人实操汇总. 创建用户设置权限 create user 'user'@'%' identified by 'password'; #创建用户设置密码 grant all privileges ...