Time Limit: 2 sec / Memory Limit: 1024 MB

Score : 600600 points

Problem Statement

Ringo Mart, a convenience store, sells apple juice.

On the opening day of Ringo Mart, there were AA cans of juice in stock in the morning. Snuke buys BB cans of juice here every day in the daytime. Then, the manager checks the number of cans of juice remaining in stock every night. If there are CC or less cans, DD new cans will be added to the stock by the next morning.

Determine if Snuke can buy juice indefinitely, that is, there is always BB or more cans of juice in stock when he attempts to buy them. Nobody besides Snuke buy juice at this store.

Note that each test case in this problem consists of TT queries.

Constraints

  • 1≤T≤3001≤T≤300
  • 1≤A,B,C,D≤10181≤A,B,C,D≤1018
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

TT
A1A1 B1B1 C1C1 D1D1
A2A2 B2B2 C2C2 D2D2
::
ATAT BTBT CTCT DTDT

In the ii-th query, A=Ai,B=Bi,C=Ci,D=DiA=Ai,B=Bi,C=Ci,D=Di.

Output

Print TT lines. The ii-th line should contain Yes if Snuke can buy apple juice indefinitely in the ii-th query; No otherwise.


Sample Input 1 Copy

Copy
14
9 7 5 9
9 7 6 9
14 10 7 12
14 10 8 12
14 10 9 12
14 10 7 11
14 10 8 11
14 10 9 11
9 10 5 10
10 10 5 10
11 10 5 10
16 10 5 10
1000000000000000000 17 14 999999999999999985
1000000000000000000 17 15 999999999999999985

Sample Output 1 Copy

Copy
No
Yes
No
Yes
Yes
No
No
Yes
No
Yes
Yes
No
No
Yes

In the first query, the number of cans of juice in stock changes as follows: (D represents daytime and N represents night.)

99 →D 22 →N 1111 →D 44 →N 1313 →D 66 →N 66 →D x

In the second query, the number of cans of juice in stock changes as follows:

99 →D 22 →N 1111 →D 44 →N 1313 →D 66 →N 1515 →D 88 →N 88 →D 11 →N 1010 →D 33 →N 1212 →D 55 →N 1414 →D 77 →N 77 →D 00 →N 99 →D 22 →N 1111 →D …

and so on, thus Snuke can buy juice indefinitely.


Sample Input 2 Copy

Copy
24
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

Sample Output 2 Copy

Copy
No
No
No
No
No
No
Yes
Yes
No
No
No
No
Yes
Yes
Yes
No
No
No
Yes
Yes
Yes
No
No
No 首先可以直接判断的情况是a < b的情况第一天就不够买的,再就是d < b的情况,每天买b个,而当总量不多于c时才只能补充d,显然补充的量不及买的量,肯定会买完。
再就是c + 1 >= b的情况下,肯定时买不完的,因为一旦量小于等于c就会进行补充,而在量大于c的情况下总是不可能买断的。
对于一般的情况其实就是c < a - bx + dy < b 如果有解的话,就会出现不补充但是总量小于b的情况,这是肯定可以买完的,否则就是永远买不完的。
对于这个不等式,移项得到a - b < bx - dy < a - c,如果bx - dy在这个区间内有解,那么区间内存在一个值能被gcd(b,d)整除,但是这个区间是开区间(a - b,a - c),
具体判断存在的方法是,如果a - b < t < a - c,t % gcd(b,d) == 0,那么就是可以买完的("No"),那么a - c - 1 >= t,显然对于整型来说t / gcd(b,d) - (a - b) / gcd(b,d) > 0,
也就是(a - c - 1) / gcd(b,d) - (a - b) / gcd(b,d) > 0,否则就是买不完的("Yes").
java代码:
import java.util.*;

public class Main {
static long gcd(long a,long b) {
if(b == 0)return a;
return gcd(b,a % b);
}
static boolean check(long a,long b,long c,long d) {
if(a < b || d < b)return false;
if(c + 1 >= b)return true;
///如果某天之后 剩下的多于c(不需要增加) 但是却小于b 那么次日肯定不够
///实际上就是c < a - bx + dy < b有解的话就是No
///移项的a - b < bx - dy < a - c
///根据欧几里德扩展定理 就是说(a-b,a-c)之间是否有gcd(b,d)的倍数 即是否有解
long g = gcd(b,d);
return (a - c - 1) / g - (a - b) / g <= 0;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
for(int i = 0;i < t;i ++) {
long a = in.nextLong();
long b = in.nextLong();
long c = in.nextLong();
long d = in.nextLong();
if(check(a,b,c,d))System.out.println("Yes");
else System.out.println("No");
}
} }

c代码:

#include <stdio.h>
long long gcd(long long a,long long b){
return b ? gcd(b,a % b) : a;
}
int check(long long a,long long b,long long c,long long d){
if(a < b || d < b)return ;
if(c + >= b)return ;
long long g = gcd(b,d);
return (a - c - ) / g - (a - b) / g <= ;
}
int main() {
int t;
long long a,b,c,d;
scanf("%d",&t);
while(t --){
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
if(check(a,b,c,d)){
printf("Yes\n");
}
else{
printf("No\n");
}
}
}

AtCoder Grand Contest #026 B - rng_10s的更多相关文章

  1. AtCoder Grand Contest 026 (AGC026) E - Synchronized Subsequence 贪心 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/AGC026E.html 题目传送门 - AGC026E 题意 给定一个长度为 $2n$ 的字符串,包含 $n$ ...

  2. AtCoder Grand Contest 026 D - Histogram Coloring

    一列中有两个连续的元素,那么下一列只能选择选择正好相反的填色方案(因为连续的地方填色方案已经确定,其他地方也就确定了) 我们现将高度进行离散化到Has数组中,然后定义dp数组 dp[i][j] 表示前 ...

  3. AtCoder Grand Contest #026 C - String Coloring

    Time Limit: 3 sec / Memory Limit: 1024 MB Score : 600600 points Problem Statement You are given a st ...

  4. AtCoder Grand Contest #026 A - Colorful Slimes 2

    Time Limit: 2 sec / Memory Limit: 1024 MB Score : 200200 points Problem Statement Takahashi lives in ...

  5. Atcoder Grand Contest 026 (AGC026) F - Manju Game 博弈,动态规划

    原文链接www.cnblogs.com/zhouzhendong/AGC026F.html 前言 太久没有发博客了,前来水一发. 题解 不妨设先手是 A,后手是 B.定义 \(i\) 为奇数时,\(a ...

  6. AtCoder Grand Contest 012

    AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...

  7. AtCoder Grand Contest 011

    AtCoder Grand Contest 011 upd:这篇咕了好久,前面几题是三周以前写的... AtCoder Grand Contest 011 A - Airport Bus 翻译 有\( ...

  8. AtCoder Grand Contest 031 简要题解

    AtCoder Grand Contest 031 Atcoder A - Colorful Subsequence description 求\(s\)中本质不同子序列的个数模\(10^9+7\). ...

  9. AtCoder Grand Contest 010

    AtCoder Grand Contest 010 A - Addition 翻译 黑板上写了\(n\)个正整数,每次会擦去两个奇偶性相同的数,然后把他们的和写会到黑板上,问最终能否只剩下一个数. 题 ...

随机推荐

  1. mysql索引类型normal,unique,full text

    normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique full textl: 表示 全文搜索的索引. FULL ...

  2. GitHub使用问题(遇到一个记一个)

    1.如何创建文件夹: 如图,Create new files,点击后,若需要创建文件,输入文件名即可,但如果创建的是文件夹,需要在文件夹名后 加一个 '/'斜杠,然后就变成文件夹了

  3. linux下安装rabbitmq的rpm包问题记录

    安装rabbitmq的文章和帖子多如牛毛,不管是官网还是各个博客,这里附个Rabbitmq官网安装Rpm包的链接, http://www.rabbitmq.com/install-rpm.html 不 ...

  4. JQ动态获取数据

    转:JQUERY获取浏览器窗口的高度和宽度 June 27, 2012 <script type="text/javascript"> $(document).read ...

  5. 用变量a给出下面的定义。[中国台湾某著名CPU生产公司2005年面试题]

    (1)一个整型数(An integer)(2)一个指向整型数的指针(A pointer to an integer)(3)一个指向指针的指针,它指向的指针是指向一个整型数(A pointer to a ...

  6. 镜像回源主要用于无缝迁移数据到OSS,即服务已经在自己建立的源站或者在其他云产品上运行,需要迁移到OSS上,但是又不能停止服务,此时可利用镜像回写功能实现。

    管理回源设置_管理文件_开发指南_对象存储 OSS-阿里云 https://help.aliyun.com/document_detail/31865.html 通过回源设置,对于获取数据的请求以多种 ...

  7. centos7 安装php

    http://blog.csdn.net/zhaozuosui/article/details/48394409

  8. 使用qt+ros调用摄像头遇到的问题

    当使用摄像头遇到如下问题:[usb_cam-1] process has died [pid 12288, exit code 127, cmd /opt/ros/indigo/lib/usb_cam ...

  9. PYTHON调用C接口(基于Ctypes)实现stein算法最大公约数的计算

    相关环境配置 mingw,选择相应的32位.64位的版本,主要用于编译动态链接库dll文件,可用vs替代,这里我选择轻量级的mingw windows64位地址:https://sourceforge ...

  10. Java for LeetCode 113 Path Sum II

    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...