SGU 150.Mr. Beetle II
非常烦人的题,思路比较简单,十分容易出错,细节非常重要。
从四个不同的行走方向讨论经过的每一个格子。
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的更多相关文章
- SGU 分类
http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traff ...
- 使用Flexible适配移动端html页面 - demo记录
前段时间看了大神的博客文章[使用Flexible实现手淘H5页面的终端适配](地址:http://www.w3cplus.com/mobile/lib-flexible-for-html5-layou ...
- 笔记本电脑处理器(CPU)性能排行榜
笔记本电脑处理器(CPU)性能排行榜 本排行榜随新款处理器(CPU)的发布而随时更新.更新日期:2012年7月15日 排名 型号 二级+三级缓存 前端总线(MHz) 功率(瓦) 主频(MHz) 核 ...
- 构造 - SGU 109 Magic of David Copperfield II
Magic of David Copperfield II Problem's Link Mean: 略 analyse: 若i+j为奇数则称(i,j)为奇格,否则称(i+j)为偶格,显然每一次报数后 ...
- Lintcode 150.买卖股票的最佳时机 II
------------------------------------------------------------ 卧槽竟然连题意都没看懂,百度了才明白题目在说啥....我好方啊....o(╯□ ...
- sgu 109 Magic of David Copperfield II
这个题意一开始没弄明白,后来看的题解才知道这道题是怎么回事,这道题要是自己想难度很大…… 你一开始位于(1,1)这个点,你可以走k步,n <= k < 300,由于你是随机的走的, 所以你 ...
- sgu 108 Self-numbers II
这道题难在 hash 上, 求出答案很简单, 关键是我们如何标记, 由于 某个数变换后最多比原数多63 所以我们只需开一个63的bool数组就可以了! 同时注意一下, 可能会有相同的询问. 我为了防止 ...
- 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 ...
- SGU Volume 1
SGU 解题报告(持续更新中...Ctrl+A可看题目类型): SGU101.Domino(多米诺骨牌)------------★★★type:图 SGU102.Coprimes(互质的数) SGU1 ...
随机推荐
- 使用Maven构建Web项目的目录结构
1.Web项目的目录结构 基于Java的Web项目,标准的打包方式是WAR.与JAR比较,包含更多的内容,比如JSP文件.Servlet.Java类.web.xml配置文件.依赖JAR包.静态 ...
- [Linux&Vim]基础01
学习和使用Linux有一段时间了,作为这么长时间的学习应该是有一定收获的,可惜的是没有一股专研精神,只停留在皮毛. 阅读过一些大牛们学习Linux和Vim的过程,从命令.环境配置.使用个性化设置.编程 ...
- http 协议的过程
当你输入某个网址的时候发生了什么? 首先:你该知道 a.http协议是应用层协议,他是浏览器像服务器请求网页,服务器返回网页的过程,他是基于tcp协议的. 1.假设随便输入输入域名 http://ww ...
- Alfred(未完待续)
之前曾经有写过一篇QuickSilver的博文,大力称赞它是Mac下的神器,但是现在,QS光荣下岗了,因为我找到了另外一款比QS更加好用,更加神器的APP:Alfred小帽子. 软件名:Alfred ...
- ZOJ 3761 Easy billiards 月赛E DFS
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3761 题目大意:给定n个位置的小球,小球的运动方向只能是水平或者 ...
- android 国内sdk下载地址及代理, android 环境搭建
http://www.androiddevtools.cn/ http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/android-platform ...
- openStack云平台虚拟桌面galera mysql 3节点集群实例实战 调试完成
被复制节点: /usr/local/mysql/bin/mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null &复制节点01: ...
- kickstartInstalls
- RabbitMQ 概念
RabbitMQ快速概念入门 转(http://blog.csdn.net/qq_16414307/article/details/50585630) 本文适有一定消息队列基础的,但没有接触过Ra ...
- 用户浏览器关闭cookie处理方法
方法一: function getSessionId(){ var c_name = "jsessionid"; // alert("cookie:"+docu ...