UVALive-8077 Brick Walls 找规律
题目链接:https://cn.vjudge.net/problem/UVALive-8077
题意
有一个用砖头磊起来的墙,现在又有一只蚂蚁,想沿着砖缝从起点跑到终点。
问最短路长度。
思路
找规律题,感觉这种题目应该是这样:
- 一开始大量找规律
 - 对于很多种情况建议用转化的方式抽象出来一种情景
 - 如果抽象不出来(情景变得复杂),赶紧就不要抽象了
 - 如果可行最好打印一些数据,对着检查一下
 
此题我们明显发现一共就只有两种情景(我们把起点放在上方,不影响题意):
起点正下方有一条缝,和没有一条缝。
对着图画每个点的距离即可,发现是个金字塔结构,金字塔内部是奇偶关系,外部是正常的哈密顿距离。
就只有两个情景,就不要再抽象了,赶紧A掉为妙。
提交过程
| WA | 情景抽象失败 | 
| AC | 抽象毛线,直接写就完事 | 
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int sx, sy, ex, ey;
int solve(void){
    if (sy>ey){
        swap(sy, ey);
        swap(sx, ex);
    }
    int delta=abs(sy-ey), ans=0;
    if (sy%2==sx%2){
        if (ex<=sx+delta-1 && ex>=sx-delta+1){
            if (abs(sx+delta-1-ex)%2) ans+=2*delta;
            else ans+=2*delta-1;
        }else ans+=abs(sy-ey)+abs(sx-ex);
    }else{
        if (ex<=sx+delta-1 && ex>=sx-delta+1){
            if (abs(sx+delta-1-ex)%2==0) ans+=2*delta+1;
            else ans+=2*delta;
        }else ans+=abs(sy-ey)+abs(sx-ex);
    }
    return ans;
}
int main(void){
    while (scanf("%d%d%d%d", &sy, &sx, &ey, &ex)==4 && sx){
        // int n=6;
        // for (int i=1; i<=n; i++)
        //     for (int j=1; j<=n; j++){
        //         sx=2, sy=1;
        //         ex=j, ey=i;
        //         printf("x%d y%d %d\n", ex, ey, solve());
        //     }
        printf("%d\n", solve());
    }
    return 0;
}
| Time | Memory | Length | Lang | Submitted | 
|---|---|---|---|---|
| None | None | 993 | C++ 5.3.0 | 2018-08-24 10:46:40 | 
UVALive-8077 Brick Walls 找规律的更多相关文章
- UVaLive 7269 Snake Carpet (找规律,模拟)
		
题意:给定一个数字n,表示有n条蛇,然后蛇的长度是 i ,如果 i 是奇数,那么它只能拐奇数个弯,如果是偶数只能拐偶数个,1, 2除外,然后把这 n 条蛇, 放到一个w*h的矩阵里,要求正好放满,让你 ...
 - UVALive 6862 Triples (找规律 暴力)
		
Triples 题目链接: http://acm.hust.edu.cn/vjudge/contest/130303#problem/H Description http://7xjob4.com1. ...
 - 找规律 UVALive 6506 Padovan Sequence
		
题目传送门 /* 找规律:看看前10项就能看出规律,打个表就行了.被lld坑了一次:( */ #include <cstdio> #include <algorithm> #i ...
 - UVALive - 3722 找规律
		
题意:找规律 题解:找规律 结论是\(a^n(x-1)-\sum_{i=1}^{n-1}a^i \mod\ c\) #include<iostream> #include<algor ...
 - 2015 acm taipei L-Reward the Troop(uvalive 7465)(找规律)
		
原题链接 就大概说的是一个将军要给部下发勋章,他的部下以和别人不一样的勋章为荣,但是他没这么多钱,所以问你最少要多少钱 要求是每个人的上司是他的上两级,他的下两级是他的部下,每个人的勋章不能和他的上司 ...
 - UVaLive 6847 Zeroes (找规律,水题)
		
题意 :给定一个范围,然后让你求在这个范围内所有的数的阶乘末尾0的个数有多少种. 析:找规律,写几个就会发现每隔5个会增加一个0,因为要么乘10了,要么乘5了. 代码如下: #pragma comme ...
 - UVALive 6270 Edge Case(找规律,大数相加)
		
版权声明:本文为博主原创文章,未经博主同意不得转载. vasttian https://blog.csdn.net/u012860063/article/details/36905379 转载请注明出 ...
 - hdu 3951 - Coin Game(找规律)
		
这道题是有规律的博弈题目,,, 所以我们只需要找出规律来就ok了 牛人用sg函数暴力找规律,菜鸟手工模拟以求规律...[牢骚] if(m>=2) { if(n<=m) {first第一口就 ...
 - HDU 5703 Desert 水题 找规律
		
已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...
 
随机推荐
- Project Euler 44 Sub-string divisibility( 二分 )
			
题意:五边形数由公式Pn=n(3n−1)/2生成,在所有和差均为五边形数的五边形数对Pj和Pk中,找出使D = |Pk − Pj|最小的一对:此时D的值是多少? 思路:二分找和差 /********* ...
 - maven  依赖的传递性
			
1.如图我们有三个项目,项目Age,项目Bge,项目Cge 2.我们使Age项目依赖到Bge项目,Bge项目依赖到Cge项目 Age项目和Bge项目分别执行命令:mvn install 打包*.ja ...
 - --- Error: failed to execute '.\ARMCC\bin\ArmAsm'
			
1.KEIL4在开发STM32程序时报: Error: failed to execute '.\ARMCC\bin\ArmAsm' 或是Error: failed to execute '.\ARM ...
 - JavaScript(DOM编程补充一)
			
HTML属性的直接调用: 还可以通过getAttribute方法获取属性的值: setAttribute方法: removeAttribute ---------------------------- ...
 - 2015 Multi-University Training Contest 10 hdu 5412 CRB and Queries
			
CRB and Queries Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
 - [using_microsoft_infopath_2010]Chapter 14高级话题
			
本章提要: 1.剖析表单逻辑 2.从多个表单中合并数据 3.重新连接XML表单到XSN模板文件 4.在repeating table中设置默认值 5.离线填写表单的权衡
 - 单机 & 弱联网手游 防破解、金币改动 简单措施
			
手游经常使用破解方法 对于一个弱联网或者单机游戏,能够从下面方面去破解: 1.找得到存档文件的,直接破解改动存档文件. 2.找不到存档文件,就在游戏执行时借助一些软件来改动数值,比方用各种改动器手游助 ...
 - Codeforces Gym 100015F Fighting for Triangles  状态压缩DP
			
F Fighting for Triangles Description Andy and Ralph are playing a two-player game on a triangular bo ...
 - idea使用技巧资料篇
			
基本使用:https://my.oschina.net/lujianing/blog/177042#OSC_h1_2 解决idea卡顿问题:http://www.cnblogs.com/ae6623/ ...
 - [转]Linux常用命令学习
			
转自 https://www.cnblogs.com/gaojun/p/3359355.html 1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文 ...