CF359D:Pair of Numbers——题解】的更多相关文章

Simon has an array a1, a2, ..., an, consisting of n positive integers. Today Simon asked you to find a pair of integers l, r (1 ≤ l ≤ r ≤ n), such that the following conditions hold: there is integer j (l ≤ j ≤ r), such that all integers al, al + 1, …
https://vjudge.net/problem/CodeForces-359D http://codeforces.com/problemset/problem/359/D 题目大意: 给一串数,问一个区间内所有的数是否能被其其中一个数所全部整除,求出满足条件的区间的长度最大值,并输出这样的区间的个数与它们的左端点. 换句话将,求区间GCD=区间MIN的最大长度区间. 明显st表解决. 对于最大区间长度,二分判断即可. (因为在poj做过类似的题所以思路能很快……就是题看不懂有点难,所以特…
利用区间 gcd 个数不超过 log 种来做就可以了~ code: #include <bits/stdc++.h> #define N 300005 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int n; set<int>s; struct solve { int A[N],pos[N],len[N],gc[N],b[N],top,tmp; void ge…
D. Pair of Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Simon has an array a1, a2, ..., an, consisting of n positive integers. Today Simon asked you to find a pair of integers l…
D. Pair of Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Simon has an array a1, a2, ..., an, consisting of n positive integers. Today Simon asked you to find a pair of integers l…
题目 Volodya is an odd boy and his taste is strange as well. It seems to him that a positive integer number is beautiful if and only if it is divisible by each of its nonzero digits. We will not argue with this and just count the quantity of beautiful…
Codeforces Round #209 (Div. 2) D:http://codeforces.com/contest/359/problem/D 题意:给以一个n个数的序列,然后问你最大的区间l,r,在这个区间里面,存在一个数是这个区间所有数的约数,如果这个区间有多个,统计有多少个以及每个区间的左端点. 题解:这一题,别人用了一个很特殊的找发,让我叹为观止.哎,没有数学功底以及很强的推理能力,真的有点力不从心啊.说说别人是怎么找的吧.首先,从第一个数开始,往右边找,然后找到第一个不是a[…
Problem Description Fermat's theorem states that for any prime number p and for any integer a > 1, a^p == a (mod p). That is, if we raise a to the pth power and divide by p, the remainder is a. Some (but not very many) non-prime values of p, known as…
Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers. Write a program to find and pri…
Add Two Numbers: You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assum…
Raising Modulo Numbers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6347   Accepted: 3740 Description People are different. Some secretly read magazines full of interesting girls' pictures, others create an A-bomb in their cellar, oth…
题面: 给一个序列,求最长的合法区间,合法被定义为这个序列的gcd=区间最小值 输出最长合法区间个数,r-l长度 接下来输出每个合法区间的左端点 题解: 由于区间gcd满足单调性,所以我们可以二分区间长度,用st表维护区间最小值和gcd即可 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define N 300100 using namespace std; i…
题意:给定一个正整数数组,求最长的区间,使得该区间内存在一个元素,它能整除该区间的每个元素. 析:暴力每一个可能的区间,从数组的第一个元素开始考虑,向两边延伸,设延伸到的最左边的点为l, 最右边的点为r.那么我们下一点考虑r+1即可, 因为[l, r]之间不会有更优解. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string>…
"Shortest" pair of paths 题目大意 给出 \(n\) 个点,\(m\) 条边,除第一个点和最后一个点外,其他所有的点都只能被经过一次,要求找到两条从第一个点到最后一个点的路径,使其长度和最小. 分析 拿到这道题,通过观察数据范围和问题模式,其实很容易想到这是一道可以通过网络流来解决的问题,网络流确实非常擅长通过连边的流量限制来表示这种对经过次数的限制. 本题就是一个非常明显的最小费用流,其建图套路也比较容易想到: 拆点,将每个点拆成入点和出点,除了第一个点与最后…
Content 给定一个 \(1\sim n\) 的排列,请求出对于 \(1\leqslant m\leqslant n\),是否存在一个区间满足这个区间是一个 \(1\sim m\) 的排列. 数据范围:\(1\leqslant n,\sum n\leqslant 2\times 10^5\). Solution 看到本题的唯一一篇主席树+二分的题解里面并没有说最巧妙的方法是什么,那我就来给大家讲讲吧qwq. 对于每一个 \(m\),我们不妨弄个双指针 \(l,r\),然后从 \(1\) 的位…
http://codeforces.com/contest/359/problem/D 题意:给你n个数,然后找出在[l,r]中有一个数a[j],l<=j<=r,在[l,r]中的所有数都是a[j]的倍数.找出符合这样的r-l最长长度的个数,输出r-l最长长度的个数和长度,然后输出符合的l的序列. 枚举每一个数,然后向左找到l,向右找到r,r-l就是所求的符合一种,这样就可以找到最长的长度 #include <cstdio> #include <cstring> #inc…
原题地址 题目大意:有一个函数\(f(x)\),效果是将\(x+1\)后,去掉末尾所有的\(0\),例如: \(f(599)=6\),因为\(599+1=600→60→6\) \(f(7)=8\),因为\(7+1=8\) \(f(9)=1\),因为\(9+1=10→1\) \(f(10099)=101\),因为\(10099+1=10100→1010→101\) 我们可以多次进行函数\(f(x)\)的运算,从而让一个数\(x\)转换为另一个数,例如\(10098\)可以转换为\(102\),因为…
1.改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享,目前的设计有什么缺点, 你会如何改进它? 目前的缺点: (1)电梯由于载客重量不同,无法确保每辆电梯在运行过程中的速度一致. (2)电梯每层都停下开关门,极大的浪费了乘客的时间,使乘客从初始楼层到目标层的total time无故增加. 解决方案: 直接设置电梯的初始楼层和目标层,在电梯运行过程中顺路带上同方向且能达到的乘客,电梯能够拒绝不能到达的的楼层指令,乘客可以通过转乘电梯…
http://poj.org/problem?id=3068 题目大意: 从0-n-1找到两条边和点都不相同(除了0和n-1外)的最小费用路径. ———————————————————————————— POJ2135魔改版. 按照那题的思路并且把点拆成中间连一条容量为1的边即可. 切了切了. #include<cstdio> #include<iostream> #include<queue> #include<cstring> #include<a…
原题 RMQ st表棵题 要想让一个区间里的所有数都可以整除其中一个数,那么他一定是这个区间内的最小值,并且同时是这个区间的gcd.然后这个问题就转化成了RMQ问题. 维护两个st表,分别是最小值和gcd,然后二分最长区间长度,用st表check即可. #include<cstdio> #include<algorithm> #include<cmath> #define N 300010 using namespace std; int n,a[N],mn[N][20…
把电话号码转换成为词典中能够记忆的的单词的组合,找到最短的组合. 我这道题应用到的知识点: 1 Trie数据结构 2 map的应用 3 动态规划法Word Break的知识 4 递归剪枝法 思路: 1 建立Trie字典树.方便查找, 可是字典树不是使用字符来建立的.而是把字符转换成数字.建立一个数字字典树. 然后叶子节点设置一个容器vector<string>装原单词. 2 动态规划建立一个表,记录能够在字典树中找到的字符串的前缀子串 3 假设找到整个串都在字典树中,那么就能够直接返回这个单词…
这题只需要会10转P进制就行了. PS:答案需要约分,可以直接用c++自带函数__gcd(x,y). 洛谷网址 Codeforces网址 Code(C++): #include<bits/stdc++.h> using namespace std; int jz(int x,int p) { ,a; ) {//10转P进制 a=x%p; s+=a;//直接将算出的哪一位加上 x/=p; } return s; } int main() { ; cin>>A; ; ;i<A;i…
题目大意: 求区间 \([x,y]\) 范围内有多少数的二进制表示中的'0'的个数 \(\ge\) '1'的个数. 解题思路: 使用 数位DP 解决这个问题. 我们设状态 f[pos][num0][num1][all0] 表示在: 当前所在数位为 pos : 当前选择的'0'的个数为 num0: 当前选择的'1'的个数为 num1: 到当前位位置是不是前面的数都是前导零(如果都是前导0则 all0==true,否则 all==false). 下的方案数. 我们开函数 dfs(int pos, i…
原题链接 简要题意: 构造一个长为 \(n\) 的数,使得每位均不为 \(0\),且 \(n\) 不被它的各位数字整除. 比方说, \(n = 239\) 是合法的.因为: \(2 \not | 239\),\(3 \not | 239\),\(9 \not | 239\). 再比方,\(n = 235\) 是不合法的.因为: \(5 | 235\). 因此,本题是个水构造. 首先 \(n = 1\),显然无解. 否则,考虑以下构造: \[233 \cdots 33 \] \[499 \cdot…
原题链接 简要题意: 有两个数组 \(a_i\),\(b_i\),求有多少组 \(a_i + a_j > b_i + b_j (i \not = j)\). 显然,纯暴力过不了这道题目. 首先,我们显然的作差,让 \(c_i = a_i - b_i\). 那么,此时我们就需要找到 \(c_i + c_j > 0 (i \not = j)\) 的个数. 由于我们有 \(\texttt{upper_bound}\) 这样的好东西. \(\texttt{upper_bound}\) 返回从 \(\t…
Content Vasya 的家在一条大街上,大街上一共有 \(n\) 座房子,其中,奇数编号的房子在大街的一侧,从左往右依次编号为 \(1,3,5,7,...,n-1\),偶数编号的房子在大街的另一侧,从左往右依次编号为 \(n,n-2,n-4,n-6,...,2\),Vasya 家的房子的编号为 \(k\),每两个房子的间距都为 \(1\).已知 Vasya 需要花费 \(1\) 秒的时间开到大街上,并且开 \(1\) 单位的距离需要 \(1\) 秒,请问 Vasya 要多久时间才能够到家?…
Content 有 \(2n\) 个数,让你找出两两相等的 \(n\) 对数的编号,或者方案不存在. 数据范围:\(1\leqslant n\leqslant 3\times 10^5,1\leqslant a_i\leqslant 5000\). Solution 这题目还是挺好做的. 首先边读入边记录,如果一个数出现在前或者从未出现过,记录下来,并找后面有没有相等的数,有的话记录答案并将所有的记录清除(就相当于你找到了相等的一对数,在开始继续找时就会被认为没有出现过),如果不是恰好 \(n\…
Content 有 \(n\) 个数 \(a_1,a_2,a_3,...,a_n\).试求出使得 \(a_i\) 与其他所有整数的算术平均值相等的所有 \(i\). 数据范围:\(2\leqslant n\leqslant 2\times10^5,1\leqslant a_i\leqslant 1000\). Solution 我们可以将其转化为:求出能满足 \(a_i=\dfrac{\sum\limits_{j=1}^na_j-a_i}{n-1}\) 的所有 \(i\).直接在数列中扫一遍看能…
Content 已知有三个正整数 \(a,b,c\),现在给出 \(a+b,a+c,b+c,a+b+c\)(不保证有序)的值,试求出 \(a,b,c\). 数据范围:\(2\leqslant a+b,a+c,b+c,a+b+c\leqslant 10^9\). Solution 肯定地,如果是无序的话,那么我们肯定要先对这四个值排序,得到: \[\begin{cases}x_1=a+b\\x_2=a+c\\x_3=b+c\\x_4=a+b+c\end{cases} \] 那么,运用加减消元,我们…
Content 在一座城市中,每个人的电话号码都是由六位整数组成的,例如 11-45-14. 现在有 \(n\) 个人,第 \(i\) 个人有 \(s_i\) 个人的电话号码.已知: 出租车司机的电话号码由六个相同的数字构成(如 66-66-66). 披萨外卖的电话号码由六个递减的数字构成(如 65-43-21). 其他的电话号码都是女生的. 现在给出这 \(n\) 个人所拥有的电话号码.众所周知,找一个拥有某种事情相关的人的电话号码最多的人办这件事总会很靠谱.你需要求出你在办某件事的时候应该找…