非常烦人的题,思路比较简单,十分容易出错,细节非常重要。

从四个不同的行走方向讨论经过的每一个格子。

code:

#include <iostream>
#include <utility>
#include <cmath>
using namespace std;
#define lb long double
#define fi first
#define se second
pair<int , int > a, b;
int n, tot;
const lb eps = 1e-10;
int floor2 (lb x)
{
if (ceil (x) - x < eps) return ceil (x);
return floor (x);
}
int ceil2 (lb x)
{
if (x - floor (x) < eps) return floor (x);
return ceil (x);
}
int main() {
cin >> a.fi >> a.se >> b.fi >> b.se >> n;
if (a.fi == b.fi || a.se == b.se) cout << "no solution";
else {
lb x = a.fi, y = a.se, lx = a.fi, ly = a.se;
lb k = ( (lb) b.se - (lb) a.se) / ( (lb) b.fi - (lb) a.fi);
//↗方向
if (a.fi < b.fi && a.se < b.se) {
while (fabs (x - b.fi) > eps && fabs (y - b.se) > eps) {
lb dtx = min ( (floor2 (y) + 1 - y) / k, floor2 (x) + 1 - x);
x += dtx, y += dtx * k;
tot++;
if (tot == n) break;
lx = x, ly = y;
}
}
//↙方向
else if (a.fi > b.fi && a.se > b.se) {
while (fabs (x - b.fi) > eps && fabs (y - b.se) > eps) {
lb dtx = min ( (y - ceil2 (y) + 1 ) / k, x - ceil2 (x) + 1 );
x -= dtx, y -= dtx * k;
tot++;
if (tot == n) break;
lx = x, ly = y;
}
}
//↘方向
else if (a.fi < b.fi && a.se > b.se) {
while (fabs (x - b.fi) > eps && fabs (y - b.se) > eps) {
lb dtx = min ( (ceil2 (y) - 1 - y) / k, floor2 (x) + 1 - x);
x += dtx, y += dtx * k;
tot++;
if (tot == n) break;
lx = x, ly = y;
}
}
//↖方向
else if (a.fi > b.fi && a.se < b.se) {
while (fabs (x - b.fi) > eps && fabs (y - b.se) > eps) {
lb dtx = min ( (y - floor2 (y) - 1 ) / k, x - ceil2 (x) + 1);
x -= dtx, y -= dtx * k;
tot++;
if (tot == n) break;
lx = x, ly = y;
}
}
if (tot < n) cout << "no solution";
else
cout << floor2 ( (lx + x) / 2) << ' ' << floor2 ( (ly + y) / 2);
}
return 0;
}

  

SGU 150.Mr. Beetle II的更多相关文章

  1. SGU 分类

    http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traff ...

  2. 使用Flexible适配移动端html页面 - demo记录

    前段时间看了大神的博客文章[使用Flexible实现手淘H5页面的终端适配](地址:http://www.w3cplus.com/mobile/lib-flexible-for-html5-layou ...

  3. 笔记本电脑处理器(CPU)性能排行榜

    笔记本电脑处理器(CPU)性能排行榜 本排行榜随新款处理器(CPU)的发布而随时更新.更新日期:2012年7月15日   排名 型号 二级+三级缓存 前端总线(MHz) 功率(瓦) 主频(MHz) 核 ...

  4. 构造 - SGU 109 Magic of David Copperfield II

    Magic of David Copperfield II Problem's Link Mean: 略 analyse: 若i+j为奇数则称(i,j)为奇格,否则称(i+j)为偶格,显然每一次报数后 ...

  5. Lintcode 150.买卖股票的最佳时机 II

    ------------------------------------------------------------ 卧槽竟然连题意都没看懂,百度了才明白题目在说啥....我好方啊....o(╯□ ...

  6. sgu 109 Magic of David Copperfield II

    这个题意一开始没弄明白,后来看的题解才知道这道题是怎么回事,这道题要是自己想难度很大…… 你一开始位于(1,1)这个点,你可以走k步,n <= k < 300,由于你是随机的走的, 所以你 ...

  7. sgu 108 Self-numbers II

    这道题难在 hash 上, 求出答案很简单, 关键是我们如何标记, 由于 某个数变换后最多比原数多63 所以我们只需开一个63的bool数组就可以了! 同时注意一下, 可能会有相同的询问. 我为了防止 ...

  8. 150. Best Time to Buy and Sell Stock II【medium】

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  9. SGU Volume 1

    SGU 解题报告(持续更新中...Ctrl+A可看题目类型): SGU101.Domino(多米诺骨牌)------------★★★type:图 SGU102.Coprimes(互质的数) SGU1 ...

随机推荐

  1. nginx -- handler模块(100%)

    handler模块简介 相信大家在看了前一章的模块概述以后,都对nginx的模块有了一个基本的认识.基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-ba ...

  2. 【转】蓝牙物理链路类型:SCO和ACL链路

    原文网址:http://blog.chinaunix.net/uid-23193900-id-3272233.html  蓝牙物理链路ACL(Asynchronous Connectionless), ...

  3. C_FORCE_ROOT linux环境变量设置

    nano /etc/profile     gedit 也可以 结尾追加 export C_FORCE_ROOT="true"

  4. Java正则表达式(1)

    String类的三个内建正则表达式工具: 1.matches()方法 示例:检查一个句子是否以大写字母开头,以句号结尾 public static boolean checkFormat(String ...

  5. HTTP协议介绍(SERVLET)

    本文是servlet的入门篇,主要简单介绍下http协议 1.什么是HTTP _ 1.http协议:_1. 复杂解释:   http(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议 ...

  6. iOS开发之获取WIFI信号强度

    虽然各种直接获取信号强度的api都被封杀了.但是还有一个另类的黑魔法可以获取到.那就是遍历UIStatusBar了 - (void)getSignalStrength{ UIApplication * ...

  7. Skype的故事:几乎所有风投都想投 犯罪分子洗钱必备

    Skype的故事:几乎所有风投都想投 犯罪分子洗钱必备 转载自: http://news.chinaventure.com.cn/11/7/1381032922.shtml 今年是 Skype 网络电 ...

  8. 【转】CPU调度

    转自:http://blog.csdn.net/xiazdong/article/details/6280345 CPU调度   用于多道程序 以下先讨论对于单CPU的调度问题. 回顾多道程序,同时把 ...

  9. [转]PHP100视频教程(2012-2013版)下载地址及密码

    [转] PHP100视频教程(2012-2013版)  下载地址及其密码 先记起来,不用再到处找密码了. NO 名称 下载地址 密码 1 [第01讲]开启PHP学习之路,融入新互联网时代 http:/ ...

  10. 屏幕录制:SCR Screen Recorder Pro v0.14.3汉化破解版

    应用概览 <ignore_js_op> 软件名称:屏幕录制:SCR Screen Recorder Pro 软件版本:v0.14.3汉化破解版软件语言:中文软件大小:3.5M软件包名:co ...