D. The Beatles(思维+枚举)
D. The Beatles
题意:
有n*k个城市,每个城市间的距离是1km,在第1,1+k,1+k*2……,1+(n-1)*k个城市中有饭馆,
从城市s出发,每次走过的距离为l,问再次回到s时停了多少站,数量为num,第一次在s不算。
已知在s时离s最近的饭店的距离是a,当走过l后距离最近的饭店的距离是b,已知走的顺序有两种,分为顺时针,逆时针。
求最小的num = x,最大的num = y。
思路:
一开始题目都没读懂 ̄□ ̄||,后来参考别人的代码,先考虑顺时针和逆时针两种情况,
顺时针:(1)s-1 = a,(2)s-1+l = b
逆时针:(1)s-1 = -a,(2) s-1+l = -b。
所以总共四种情况。
将1,2组合得到l的四种情况
a+b,a-b,b-a,-a-b。
l的间距一定是正数,而且肯定大于k,所以可以写成l = k*i+c的形式,
然后枚举i,i的范围是1~n,c肯定是[1,k)范围内,所以对k取余即可。
从s出发经过n*k/gcd(n*k,l),次回到s,所以枚举所有情况就能求出最终的最小次数和最大次数。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 100100;
typedef long long LL;
LL MIN(LL x,LL y){return x<y?x:y;
}
LL MAX(LL x,LL y){return x>y?x:y;
}
LL Gcd(LL x,LL y){return y==0?x:Gcd(y,x%y);
}
int main(void)
{LL n,k,a,b,i,j;scanf("%lld%lld%lld%lld",&n,&k,&a,&b);LL f[4];f[0] = a+b;f[1] = a-b;f[2] = -a+b;f[3] = -a-b;LL x = 1e18+5,y = -1;for(i=0;i<n;i++){for(j=0;j<4;j++){LL c = (f[j]+k)%k;LL tp = (i*k+c);x = MIN(x,n*k/Gcd(n*k,tp));y = MAX(y,n*k/Gcd(n*k,tp));}}printf("%lld %lld\n",x,y);return 0;
}
D. The Beatles(思维+枚举)相关推荐
- B. Dubious Cyrpto(思维+枚举)
题目 大致翻译:帕夏喜欢把严格的正整数送给他的朋友.帕夏关心安全性,因此当他想发送一个整数n时,他用以下方式对它进行加密:他选取三个整数a.b和c,使l≤a.b.c≤r,然后计算加密值m=n⋅a+b− ...
- 枚举 ---- D. Zigzags[ Educational Codeforces Round 94 (Rated for Div. 2)]思维枚举优化4重循环
D. Zigzags 题目大意:就是给你i<j<k<l并且aj=al&&ai=aki<j<k<l并且a_j=a_l \&\& a_i ...
- 【牛客 - 289K】这是一个沙雕题III(贪心,思维枚举,技巧trick,计算上下界)
题干: 因为现在的新生太强了,都学会了"dp",所以就有了这样一个"dp"题,双11时Gugugu有(x,x+1,x+2....y-1,y)元的抵用券无数张,但 ...
- CF876 F 思维 枚举
给你n个数,问有几个区间满足,区间内或操作大于区间内的任意数. 首先可以知道,两数或操作的结果必定不会小于两者间的最大值,也就是说对于一个区间中,不合法的状态只有两值或相等.那么我们可以考虑枚举每个数 ...
- The Beatles (思维 + 暴力)div1
题目大意: n*k个城市围成一个环,编号1,1+k,1+2k--的城市中有餐馆,现在,从一个城市s出发,每走l步停一下,问最少和最多走几步能够回到起点,然后给出两个数a,b分别表示距离起点s附近的餐馆 ...
- AcWing 1826. 农田缩减(思维+枚举)
题面链接 https://www.acwing.com/problem/content/description/1828/ 思路 因为只用去处一只奶牛,所以这只奶牛肯定尽可能远离大部分牛群,所以我们很 ...
- (L3-012)水果忍者(思维+枚举)
题目链接:PTA | 程序设计类实验辅助教学平台 f 分析:这道题目我们先来看一下满足题意的直线具有什么样的特殊性质,假如直线l可以过这n条线段,假设l不经过任意一条线段的下端点,那么我们就可以将其向 ...
- 递增三元组蓝桥杯c语言,第九届蓝桥杯_递增三元组(枚举的优化思路)
给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 请你统计有多少个三元组(i, j, k) 满足: ...
- 2020-2021年度第二届全国大学生算法设计与编程挑战赛(春季赛)【部分题题解】
2021年6月份打的比赛,现在才开始复盘. 目录 A: 智慧果[难度: 签到题 / 知识点: 递推] B: Xanadu[难度: 中 / 知识点: 最短路] C: 这是一道大难题[难度: 一般 / 知 ...
最新文章
- jenkins 添加 证书凭证Credentials
- 无生命的AI算不上「智能」
- 前端基础知识 - 收藏集 - 掘金
- 学习在 ArcEngine 中使用 Geoprocessing
- UA MATH523A 实分析1 集合论基础6 一些点集拓扑基本概念
- python 中float 的语法_python语法和基本数据类型
- 实验 3:备份和还原配置文件
- Ubuntu Server 16.04 LTS上给Docker配置镜像加速器
- golang错误处理机制(异常处理)
- SAP Cloud for Customer Account和individual customer的区别
- php中子类实现多接口,PHP子类无法实现相同的接口父类实现
- android开发:input类型
- mysql操作数据库的步骤,Golang操作MySql数据库的完整步骤记录
- Sublime Text 3 Plugin Better!
- Tecplot 360 EX 2020 R1中文版
- 实现黑客帝国中的代码雨 快进来学(附源代码)
- 线性查找python_C3-Linearization--线性化python
- 今天看continous delivery看到extreme programming
- 用ps魔棒工具选区域和改变区域颜色
- 如何为iTunes Connect准备应用