题目

题目大意

一个三角形的网格图,三角形与其有共同边的三角形相连。

起点到所有终点的最短距离。


思考历程

数据看起来还挺大的,所以不是什么图论算法。

这显然是一个结论题。

什么结论?

然后我就开始推:

一个点(x,y)(x,y)(x,y),它可以到达(x,y−1)(x,y+1)(x,y-1)(x,y+1)(x,y−1)(x,y+1)。

如果yyy是奇数,那么可以到达(x+1,y+1)(x+1,y+1)(x+1,y+1),否则可以到达(x−1,y−1)(x-1,y-1)(x−1,y−1)

将其在平面直角坐标系中表示出来,得到一个很好看的图(懒得画了)。

感性地想出了一个式子,感觉上好像没什么问题,打了交上去。

结果60分……


正解

这个方法有很多。

假设起点是上面那个(反正边是双向的),现在它要往下走:

如果它是正三角形,意味着它可以直接往下走。

如果它是倒三角形,就将其向左或向右一个,那就是正三角形的情况了。

可以推推式子,求出它走最短距离到达终点那一行的左右边界。

所谓走最短距离,就是先往下走,然后向左或向右,继续向下……

如果终点在边界内,答案就是最短距离。否则走到终点那一行的左边界或右边界,然后左右移动到终点。

还有一种特别好的方法。

我们如果只考虑上下走,那么对于那两个点来说,不管怎样,一定会走它们层数之差的距离。

这是我们以(1,1)(1,1)(1,1)为端点的情况,那不妨考虑一下,将图旋转六十度,以(n,1)(n,1)(n,1)或(n,2n−1)(n,2n-1)(n,2n−1)为顶点。

所以我们只需要算出它们分别以三个顶点的层数之差,加起来,就是答案。

比较好理解,所以我的程序打的就是这种方法。


代码

using namespace std;
#include <cstdio>
#include <cstring>
#include <algorithm>
int main(){
int n,m,sx,sy,sz;
scanf("%d%d%d%d",&n,&m,&sx,&sy);
sz=(sx*2-sy-1)/2+1,sy=(sy-1)/2+1;
int ansx,ansy,ans=2147483647;
for (int i=1;i<=m;++i){
int x,y,z,t;
scanf("%d%d",&x,&y);
t=abs(x-sx)+abs((y-1)/2+1-sy)+abs((x*2-y-1)/2+1-sz);
if (t<ans || t==ans && (x<ansx || x==ansx && y<ansy))
ansx=x,ansy=y,ans=t;
}
printf("%d %d\n%d",ansx,ansy,ans+1);
return 0;
}

总结

题目不要想得太复杂……

能用一个三角形来想的题目就不要傻傻地用平面直角坐标系来想……

[JZOJ1320] 【Usaco2009 gold 】拯救奶牛的更多相关文章

  1. Usaco 2010 Dec Gold Exercise(奶牛健美操)

    /*codevs 3279 二分+dfs贪心检验 堆版本 re一个 爆栈了*/ #include<cstdio> #include<queue> #include<cst ...

  2. BZOJ-USACO被虐记

    bzoj上的usaco题目还是很好的(我被虐的很惨. 有必要总结整理一下. 1592: [Usaco2008 Feb]Making the Grade 路面修整 一开始没有想到离散化.然后离散化之后就 ...

  3. 不熟,不会,未a的题列表

    不熟: jzoj5968. 电竞选手(不知道公式如何得来) jzoj4877. [NOIP2016提高A组集训第10场11.8]力场护盾 (对向量不熟悉,不知道为什么结果要取反) jzoj4867. ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. 6 November in 614

    Contest A. greet map,完了. B. gift map,完了. C. [Usaco2008 Nov Gold] 安慰奶牛 最小生成树.新边权设为原边权的两倍,再加上两端点的点权.完了 ...

  6. [USACO2009 NOV GOLD]奶牛的图片

    校内题,不给传送门了. 以前做完NOIp2013的火柴排队那道题后,当时很担心NOIp会出那种题,因为贪心的规则能不能看出来真的要看运气.但是这类题做多了后发现其实那道题的规则其实是很多题都已经用到了 ...

  7. BZOJ3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

    3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 89  Solve ...

  8. 3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

    3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 129  Solv ...

  9. BZOJ 3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 动态规划

    3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=34 ...

随机推荐

  1. Bootstrap3的响应式缩略图幻灯轮播效果设计

    在线演示1 本地下载 HTML <div class="container">  <div class="col-md-12">  &l ...

  2. web前端好书推荐 CSS权威指南《第3版,Bootstrap实战,精通CSS 高级Web标准解决方案 第2版 中文

    在我的新博客中==> http://www.suanliutudousi.com/2017/08/24/web%E5%89%8D%E7%AB%AF%E5%A5%BD%E4%B9%A6%E6%8E ...

  3. Elasticsearch(Transport Client)常用操作

    这里描述操作elasticsearch采用TransportClient这种方式,官方明确表示在ES 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它. 记录一些常用 ...

  4. <后端>Flask框架

    1.Flask框架安装 简介:轻量级WEB框架,类似于简单版本的Django pip install flask 环境文件生成 pip freeze > requirement.txt 环境文件 ...

  5. 全球CMOS图像传感器厂商

    近期,台湾地区的Yuanta Research发布报告,介绍了其对CMOS图像传感器(CIS)市场的看法,以及到2022年的前景预期. 从该研究报告可以看出,2018年全球CMOS图像传感器的市场规模 ...

  6. .net中的泛型全面解析

    从2.0起我们一直就在谈论泛型,那么什么是泛型,泛型有什么好处,与泛型相关的概念又该怎么使用,比如泛型方法,泛型委托.这一篇我会全面的介绍泛型. 那么首先我们必须搞清楚什么是泛型,泛型其实也是一种类型 ...

  7. shell 命令 文件(解)压缩 tar,zip, gzip,bzip2

    1.gzip / gunzip [ gzip data.c]  对文件进行压缩,生成 data.c.gz    同时删除了原文件    同时压缩两个文件     [gunzip  data.c.gz  ...

  8. javascript小技巧-js小技巧收集(转)

    本文转载自:http://blog.csdn.net/ocean20/article/details/2498699 每一项都是js中的小技巧,但十分的实用! 1.document.write(&qu ...

  9. java日期格式汇总

    日期格式汇总 转载 2017年05月23日 17:22:25 DateFormat     java.text.DateFormat public abstract class DateFormat ...

  10. marktext常用快捷键使用说明

     快捷键使用 功能 快捷键 备注 X级标题 ctrl+X X∈[1~6] 加粗 Ctrl+B 标题默认加粗 倾斜 Ctrl+I 插入表格 Ctrl+T 侧边文件信息显示 Ctrl+J 删除线 Ctrl ...