T. 教堂(思维数论)

2023-10-08 18:59
文章标签 思维 数论 教堂

本文主要是介绍T. 教堂(思维数论),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

T. 教堂
Description
ROMA城中有一些古典的印度式建筑,这些建筑和周围的欧洲建筑风格格格不入。这些伪装成教堂的建筑其实是某国特工的基地。Tomas接受了一项任务,就是从某个教堂出发,逐个访问这些教堂,搞清楚每一个教堂的内部结构,并回到出发的地方。这些教堂很有规律地构成了一个m∗n的矩形,每个教堂和它的八个方向的教堂有直接的路径相连。水平或垂直方向相邻的教堂之间的路程均为1。请问Tomas至少需要走多远的路,才能完成这个危险而艰巨的任务呢?

Input
输入一行两个整数m和n(m,n≤10000)

Output
输出一行一个实数,表示最少需要走的路程,保留两位小数。

Samples
Input 复制
2 3
Output
6.00
题意: 给你一个n*m的矩形,让你走完所有格并且最后回到原地。问最小步数?
思路: 我们首相考虑边界信息,当只有一行或一列时:那么图形就是这样的
在这里插入图片描述

就像这样的,只是简图。我们可以从头走到最后让后从最后回来就是(max(n,m)-1)*2.
然后我们看具体的。当n和m以一个是偶数时我们就可以用蛇形走位直接走回起点,就是把所有的直接走完,不走多余路。
在这里插入图片描述
剩下的其实就是两个都是奇数,那么我们其实就是多走了一个斜边。
在这里插入图片描述

其实就是(m*n-1)+1.414.

代码放着了。

#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
#include <immintrin.h>
#pragma GCC optimize(2)
#include <map>
#include <queue>
#include <string>
#include<iostream>
#include<stdio.h>
#include<string.h>
#include <algorithm>
#include <math.h>
typedef unsigned long long ull;
typedef long long ll;
using namespace std;
typedef pair<ll,ll> pii;
#define PI acos(-1)
const int maxn=2e5+7;
#define x first
#define y second
#define inf 0x3f3f3f3f
#define lowbit(x)  ((x) & - (x))
const int mod=998244353;
const int dx[]= {0,1,0,-1};//下 上 右 左
const int dy[]= {1,0,-1,0};
int day[]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
const int MOD=100003;
inline ll read() {char c=getchar();ll f=1,x=0;while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=x*10+(c-'0'),c=getchar();return x*f;
}
void out(ll a) { //代替printf,速度更快,俗称输出挂if(a > 9) {out(a/10);}putchar(a%10 + '0');
}
ll a[1010][1010];
ll tree1[1010][1010];void update1(ll num,ll x,ll d) {while(x<=1000) {tree1[num][x]+=d;x+=lowbit(x);}
}ll   sum1(ll num,ll x) {ll ans = 0;while(x>0) {ans+=tree1[num][x];x-=lowbit(x);}return ans;
}
int main(){ll n,m;cin>>n>>m;if(n==1||m==1){printf("%.2lf",double(m+n-2)*2);}else {if(m*n%2==0){printf("%.2lf\n",double(n*m));}else printf("%.2lf\n",double(m*n+0.414));        }return 0;
}

这篇关于T. 教堂(思维数论)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167364

相关文章

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

数论ZOJ 2562

题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最大的一个。 分析:反素数定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数。 性质一:一个反素数的质因子必然是从2开始连续的质数。 性质二:p=2^t1*3^t2*5^t3*7

POJ2247数论

p = 2^a*3^b*5^c*7^d 求形如上式的第n小的数。 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.u

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数

颠覆你的开发模式:敏捷思维带来的无限可能

敏捷软件开发作为现代软件工程的重要方法论,强调快速响应变化和持续交付价值。通过灵活的开发模式和高效的团队协作,敏捷方法在应对动态变化和不确定性方面表现出色。本文将结合学习和分析,探讨系统变化对敏捷开发的影响、业务与技术的对齐以及敏捷方法如何在产品开发过程中处理持续变化和迭代。 系统变化对敏捷软件开发的影响 在敏捷软件开发中,系统变化的管理至关重要。系统变化可以是需求的改变、技术的升级、

2014年暑假培训 - 数论

A银河上的星星 /**************************************************************     Problem: 1014     User: DoubleQ     Language: C++     Result: Accepted     Time:190 ms     Memor

ZOJ1007(数论)

题目链接:点击打开链接 解题思路:   纯粹的数学题,没有输入,直接要求输出.直接给出的求和式子极限到无穷,无法直接计算.Hint里给出了提示,大意就是说求g(x) - g(1)的求和极限,最后再加上g(1)就能求出g(x).   由g(x)  - g(1) 能够得出 1 / k*(k+x) - 1 / k * (k + 1) = (1 - x) / k * ( k + 1) * (k

0906作业+思维导图梳理

一、作业: 1、创捷一个类似于qq登录的界面 1)源代码 #include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);//QPushbutton:登录、退出this->join = new QP

[机缘参悟-222] - 系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进(软件系统、思维方式、亲密关系、企业系统、商业价值链、中国社会、全球)

目录 前言:系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进 一、软件系统的重构 1、重构的定义与目的 2、重构的时机与方法 3、重构的注意事项 4、重构的案例分析 二、大脑思维的重构 1、大脑思维重构的定义 2、大脑思维重构的方法 3、大脑思维重构的挑战与前景 三、认知的重构 1、定义 2、目的 3、方法 四、实例 五、总结 四、婚姻家庭的重构 1、婚