CF 1477A. Nezzar and Board


思路:
从k = 2 * x - y ==> 2 * x = k + y ,可以看出x是k,y的中间值,则如果存在x1,x2,且x1 = x2 ± 1,则通过x1,x2可以得到所有整数,则任意的k都成立。
例如:2 3 ===> 2 3 4 ===> 1 2 3 4 ......
对于该数组A: (0 6 9 12 20),我们可以得到a[i] - a[i - 1]的数组(6,3,3,8)。
可以得到A对于元素可以表示一个集合:
a[1] -> a[1] + 6 * n
a[2] -> a[2] + 3 * n
a[3] -> a[3] + 3 * n
a[4] -> a[4] + 8 * n
而我们只需要确认,这些集合合并之后是否存在x1,x2且x1 = x2 ± 1.
我们任取两个集合 a(x) + p * n , a(y) + q * m(n,m ∈ Z),则需要存在
a(x) - p * n - ( a(y) + q * m ) = 1
==> q * m - p * n = 1 * (1 - a(x) + a(y)) 有解,假设右边为T,则gcd(p, m) | T,如果a[i] - a[i-1]数组中存在两个差值的gcd = 1,则一定有解。我们只需求
gcd(a[i - 1] - a[i], a[i - 2] - a[i - 1]....) = GCD判断是不是1即可,如果为1,则可以说明所有A集合合并后可以表示为 a[1] + n (n∈Z),即一定有解;如果不为1,
所有数合并的集合也可以表示为a[1] + GCD * n (n∈Z),判断k是不是属于a[1] + GCD * n的集合的一个元素即可。
当然以上是通过样例推出,不严谨,以下给出其中一个遗漏点的证明。
假设数组:
a b c d 如果 2 * b - a = key ,则
a b c key d
我们需要证明gcd(b - a, c - b, d - c) = gcd(b - a, c - b, 2 * b - a - c, d - (2 * b - a) ),通过gcd的两个性质:
①gcd(a, b, c) = gcd(a, gcd(b, c))
②gcd(a, b) = gcd(a, b - a) = gcd(a, b + a)
假设gcd(b - a, c - b, 2 * b - a - c, d - (2 * b - a) ) = T,
T = gcd(b - a, c - b, gcd(2 * b - a - c, d - (2 * b - a) ) )
通过 d - (2 * b - a) + (2 * b - a - c) = d - c,
T = gcd(..., gcd(2 * b - a - c, d - c))
T = gcd(b - a, d - c, gcd(c - b, 2 * b - a - c) )
通过 2 * b - a - c - (c - b) = b - a
T = gcd(b - a , c - b, c - d),所以左边=右边。
1 #include <bits/stdc++.h>
2
3 using namespace std;
4 #define ll long long
5
6 const int N = 3e5 + 10;
7 ll a[N];
8
9 void solve()
10 {
11 int T;
12 cin >> T;
13 while(T--) {
14 int n;
15 ll k;
16 cin >> n >> k;
17 for(int i = 1; i <= n; ++i) cin >> a[i];
18 ll gcd = 0;
19 for(int i = 2; i <= n; ++i) {
20 gcd = __gcd(gcd, a[i] - a[i - 1]);
21 }
22 if(abs(a[1] - k) % gcd) cout << "NO" << endl;
23 else cout << "YES" << endl;
24 }
25 }
26
27 int main(){
28
29 ios::sync_with_stdio(false);
30 cin.tie(0); cout.tie(0);
31 solve();
32
33 return 0;
34 }
CF 1477A. Nezzar and Board的更多相关文章
- 2021.07.20 CF1477A Nezzar and Board(最大公因数,未证)
		
2021.07.20 CF1477A Nezzar and Board(最大公因数,未证) CF1477A Nezzar and Board - 洛谷 | 计算机科学教育新生态 (luogu.com. ...
 - CF1477A Nezzar and Board
		
考虑 \(2x - y\) 我们改为 \(x + (x - y)\) 是一个更好的形式. 我们可以表示一个数为\(x_i + \sum_{j,k}(x_j - x_k) = K\) 我们考虑移到 \( ...
 - CF#335 Board Game
		
Board Game time limit per test 2.5 seconds memory limit per test 256 megabytes input standard input ...
 - CF Round#240题解
		
第一次参加CF的比赛,MSK19.30,四个小时的时差真心累,第一次CODE到这么夜-- 一开始做了A,C两题,后来做B题的时候我体力和精神集中度就很低了,导致一直WA在4-- 今天起床后再刷B,终于 ...
 - 【打CF,学算法——二星级】Codeforces Round #313 (Div. 2) B. Gerald is into Art(水题)
		
[CF简单介绍] 提交链接:http://codeforces.com/contest/560/problem/B 题面: B. Gerald is into Art time limit per t ...
 - 移植MarS Board代码到内核3.0.35
		
MarS Board提供的出厂Linux内核是3.0.15的.而Freescale的BSP都早已经更新到3.0.35.为了跟上节奏,我花了点时间把关于marsboard代码从3.0.15移植到了Fre ...
 - ATC/TC/CF
		
10.25 去打 CF,然后被 CF 打了. CF EDU 75 A. Broken Keyboard 精神恍惚,WA 了一发. B. Binary Palindromes 比赛中的憨憨做法,考虑一个 ...
 - ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
		
凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...
 - [LeetCode] Battleships in a Board 平板上的战船
		
Given an 2D board, count how many different battleships are in it. The battleships are represented w ...
 
随机推荐
- Apache Unomi 远程代码执行漏洞复现(CVE-2020-13942)
			
一.漏洞描述 Apache Unomi 是一个基于标准的客户数据平台(CDP,Customer Data Platform),用于管理在线客户和访客等信息,以提供符合访客隐私规则的个性化体验.在Apa ...
 - 每月一更的《HelloGitHub》第 58 期,来啦!
			
HelloGitHub 分享 GitHub 上有趣.入门级的开源项目.欢迎大家: 贡献代码 宣传你觉得优秀的项目 Star 项目️ 本月刊是每月 28 号更新,再见月刊就是年后了.在这里提前祝大家:新 ...
 - 在vCenter Server中添加ESXi 主机失败的问题
			
报错:出现了常规系统错误: Timed out waiting for vpxa to start 报错是这个,我看了下vcenter的版本是6.5,如图右上,这个报错是因为我ESXI主机是6.7的, ...
 - Python+Selenium+Unittest实现PO模式web自动化框架(1)
			
1.什么是PO模式? PO是Page Object的缩写 PO模式是自动化测试项目开发实践的最佳设计模式之一,讲页面定位和业务操作分开,也就是把对象的定位和测试脚本分开,从而提供可维护性. 主要有以下 ...
 - 编程小技巧之 Linux 文本处理命令(二)
			
合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本篇文章是<Linux 文本处理命令> 续篇,在前文的基础上再介 ...
 - 图解ARP协议
			
前置知识:MAC地址 在说到ARP协议之前,需要了解MAC地址,在OSI七层模型中,第三层是网络层,要解决的是下一跳机制确定的设备位置,具体来说就是网卡地址,MAC地址用于在网络中唯一标示一个网卡,一 ...
 - 现有以下关系型数据库中的表(见表4-20表4-21和表4-22),要求将具转换为适合Hbase存储的表并插入数据。
			
① createTable(String tableName, String[] fields) 创建表,参数tableName为表的名称,字符串数组fields为存储记录各个域名称的数组.要 求当H ...
 - Page (computer memory)  Memory segmentation Page table  虚拟地址到物理地址的转换
			
A page, memory page, or virtual page is a fixed-length contiguous block of virtual memory, described ...
 - 不识Netty真面目,只缘未读此真经
			
Netty官网:https://netty.io/ Netty is an asynchronous event-driven network application framework for ra ...
 - 洛谷P4981
			
Description 给定 n 个点,组成一棵树,有多少种组合方法: Analysis 首先,结合题目简化意义和这句话 最多可能存在多少种父子关系 我们可以知道当且仅当有至少一个节点的儿子不同时称他 ...