CF1082A Vasya and Book 题解
Content
给定 \(T\) 组数据,每组数据给出四个整数 \(n,x,y,d\)。小 V 有一本 \(n\) 页的书,每次可以恰好翻 \(d\) 页,求从第 \(x\) 页恰好翻到第 \(y\) 页的最少次数,或者报告不存在这样的方案。
数据范围:\(1\leqslant n,d\leqslant 10^9\),\(1\leqslant x,y\leqslant n\),\(1\leqslant t\leqslant 10^3\)。
Solution
分类讨论题。
- 如果 \(|x-y|\bmod d=0\),那么从第 \(x\) 页直接可以翻到第 \(y\) 页,那么 \(\dfrac{|y-x|}{d}\) 可作为一个答案。
- 如果 \((y-1)\bmod d=0\),那么可以从第 \(x\) 页先翻到第 \(1\) 页,再翻到第 \(y\) 页,那么 \(\dfrac{x-1}{d}+\dfrac{y-1}{d}+[(x-1)\bmod d\neq 0]\) 可作为一个答案。
- 如果 \((n-y)\bmod d=0\),那么可以从第 \(x\) 页先翻到第 \(n\) 页,再翻到第 \(y\) 页,那么 \(\dfrac{n-x}{d}+\dfrac{n-y}{d}+[(n-y)\bmod d\neq 0]\) 可作为一个答案。
如果三种情况都不符合就输出 -1,否则输出满足情况的答案中的较小值。
Code
int main() {
MT {
int n = Rint, x = Rint, y = Rint, d = Rint, ans = 0x3f3f3f3f;
if(!(abs(y - x) % d)) ans = min(ans, abs(y - x) / d);
if(!((y - 1) % d)) ans = min(ans, (x - 1) / d + (y - 1) / d + (bool)((x - 1) % d));
if(!((n - y) % d)) ans = min(ans, (n - x) / d + (n - y) / d + (bool)((n - y) % d));
println(ans == 0x3f3f3f3f ? -1 : ans);
}
return 0;
}
CF1082A Vasya and Book 题解的更多相关文章
- CF493A Vasya and Football 题解
Content 有两个球队在踢足球,现在给出一些足球运动员被黄牌或红牌警告的时间,求每个队员第一次被红牌警告的时间. 注意:根据足球比赛规则,两张黄牌自动换成一张红牌. 数据范围:比赛时间 \(90\ ...
- CF1036D Vasya and Arrays 题解
Content 给定两个长度分别为 \(n\) 和 \(m\) 的数列 \(A,B\).你需要将两个数列都恰好分成 \(k\) 份,使得两个数列中第 \(i(i\in[1,k])\) 份的元素和对应相 ...
- CF1065A Vasya and Chocolate 题解
Content 小 V 有 \(s\) 块钱,商店里有巧克力卖,每块巧克力 \(c\) 块钱,现在商店给出优惠:购买 \(a\) 块巧克力可以免费获得 \(b\) 块巧克力,求小 V 最多能够买到的巧 ...
- CF1082解题报告
CF1082A Vasya and Book 模拟一下即可 \(Code\ Below:\) #include <bits/stdc++.h> using namespace std; c ...
- codeforcess水题100道
之所以在codeforces上找这100道水题的原因是为了巩固我对最近学的编程语言的掌握程度. 找的方式在codeforces上的PROBLEMSET中过的题最多的那些题里面出现的最前面的10个题型, ...
- CF355B Vasya and Public Transport 题解
Content 小 \(A\) 要乘坐交通工具,其中公交车的辆数是 \(n\),第 \(i\) 辆公交车的编号为 \(i\),乘坐次数为 \(a_i\):手推车的辆数是 \(m\),每辆手推车的编号为 ...
- CF1042E Vasya and Magic Matrix 题解
题目链接 思路分析 看到题目中 \(n,m \leq 1000\) ,故直接考虑 \(O(n^2)\) 级别做法. 我们先把所有的点按照 \(val\) 值从小到大排序,这样的话二维问题变成序列问题. ...
- Educational Codeforces Round 55 题解
题解 CF1082A [Vasya and Book] 史上最难A题,没有之一 从题意可以看出,翻到目标页只有三种办法 先从\(x\)到\(1\),再从\(1\)到\(y\) 先从\(x\)到\(n\ ...
- Codeforces Round #324 (Div. 2) C. Marina and Vasya 贪心
C. Marina and Vasya Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/pr ...
随机推荐
- Electron快速入门之事件
const { app, BrowserWindow } = require('electron') function createWindow () { const win = new Brow ...
- Codeforces 715E - Complete the Permutations(第一类斯特林数)
Codeforces 题面传送门 & 洛谷题面传送门 神仙题.在 AC 此题之前,此题已经在我的任务计划中躺了 5 个月的灰了. 首先考虑这个最短距离是什么东西,有点常识的人(大雾)应该知道, ...
- Codeforces 704C - Black Widow(dp)
Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉这种题被评到 *2900 是因为细节太繁琐了,而不是题目本身的难度,所以我切掉这种题根本不能说明什么-- 首先题目中有一个非 ...
- python检验代理ip是否可用、代理ip检验
python检验代理ip是否可用.代理ip检验 安装相关模块: pip install requests 验证代理IP是否可用脚本: import random import telnetlib im ...
- 【shell】循环将字符串写入数组中?
bash shell脚本语法怪异,其他语言循环写入数组或列表都很简单实现,或有相应函数来做. 以下用两种方法来实现: 方法一 c=0 for i in `ls ./Data_Analysis/Quan ...
- 毕业设计之LVS+keealive 负载均衡高可用实现
环境介绍 centos6.9最小化安装 主机名 IPADDR lvsA.load.quan.bbs 192.168.111.131 lvsB.load.quan.bbs 192.168.111.132 ...
- 利用elliipse做相关图
参考资料:<数据探掘 R语言实战> p65-P68 install.packages("rattle") # 获取实验数据集 install.packages(&quo ...
- find命令常见用法
1. find linux中,find命令一般用来按特定条件查找文件,生产环境中也常用其来过滤文件 名称 find - 搜索目录层次结构中的文件 格式 find [目录] {[选项] [参数]}... ...
- 【系统硬件】英伟达安培卡 vs 老推理卡硬件参数对比
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 本文分享一下英伟达安培卡 vs 老推理 ...
- Hive(六)【分区表、分桶表】
目录 一.分区表 1.本质 2.创建分区表 3.加载数据到分区表 4.查看分区 5.增加分区 6.删除分区 7.二级分区 8.分区表和元数据对应得三种方式 9.动态分区 二.分桶表 1.创建分桶表 2 ...