07 2020 档案
摘要:传送门儿 数论:结论是 a=n 的最大的不等于 n 的约数,以下是证明: 假设 a≤b,那么显然 lcm 一定 ≥b。这里我们一定要构造 lcm=b 的解,因为 b 一定 <n,而 lcm 是 b 的倍数,就算 lcm=2b 也一定 ≥n,舍 我们证明了 lcm=b 也就是说,a 可以整除 b,这又
阅读全文
摘要:传送 二分+数论 数论: gcd(a,b)=公约数g1 *公约数g2 找两个数的所有公约数就可以转化成找最大公约数的约数 #include<bits/stdc++.h> #define ll long long using namespace std; ll n; ll r, l, mid; ll
阅读全文
摘要:tql 这种dp ,一般出现在1700 1800了,让统计方案数,特点就是出现很多维数,每一维都有含义。重要的是,分析好状态,找准状态,转移方程不难得出。切勿凭空想象,会漏掉很多方案。还有就是这类题,最后一般都有一个统计。
阅读全文
摘要:lowe_bound(f,l,x) 返回[f,l)之间第一个大于等于x的地址 没找到的话,返回l 具体用法 int p=lower_bound(a+1,a+1+n,x)-a; //注意减a
阅读全文
摘要:传送门 题意:让求l,r之间的符合要求的数量。 方法:打表找规律,这种题,10的18次方,一看就不是暴力能解决的问题,肯定有规律可循,绝大多数能找到公式,这时候暴力打表找这个规律。 设前i个数中符合规律的数有dp[i]个,规律就是:a*b一个循环 #include<bits/stdc++.h> #d
阅读全文
摘要:传送门 题意:给一个序列,用相邻两个数的gcd替换其中一个数,问:最少需要几次替换能把整个序列弄成1 方法:区间dp。 如果序列中出现1(特判)那么整个序列都可以弄成1;如果没1,我们就要构造1(dp) 设dp[x][y]:表示区间从x到y的gcd,显然,该题有解的充要条件是dp[x][y]=1有解
阅读全文
摘要:#include <iostream> #include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e6; const ll Maxn=2*1e6+100; int prime[maxn]; ma
阅读全文
摘要:大佬讲的超级好 补充一下: 大佬第一种做法,两种优化,其实还可以优化。 第二个优化(先说第二个 ):缩小第一个元素的范围。我这里假设第一个元素是start,那么 max(-maxnum+1,1)<=start<=min(n,n-maxnum),其中maxnum,minnum是差值的前缀和的最大值和最
阅读全文
摘要:传送门 题意:给一个序列,让改变序列的顺序,使其经过一个运算,最后值最大。 分析:本题考就考这个运算,这个运算就是二进制,所以考的就是二进制。分析这个运算:(以下摘自tql tql tql tql) / / 我们看这样一个操作他代表着什么? 我们把x,y拆解成二进制,x|y就相当于让两方都有1的一起
阅读全文
摘要:传送门 题意:求长度最长的锯齿形子序列。(非连续) 锯齿形:ab型 12121 解析:dp dp[ i ][ j ] :表示 以a[i],a[j] 结尾的 符合条件的 子序列长度 dp[ i ][ j ] = dp[last][ i ]+1; 其中 a[last]==a[j] (头尾相同), las
阅读全文
摘要:传送门儿 题目大意:给一个序列限制条件(体育馆开放与否、考试与否),问你这n天最少有几天闲着。 方法:dp。 分析:每天对应三种状态:闲着、锻炼、考试。 定义状态:dp[i][0]闲着 dp[i][1]锻炼 dp[i][2]考试 dp表示i天前最多能有几天不闲着(最后用n-不闲着的天数就ok) 每个
阅读全文
摘要:传送门 题意:给两个序列,从左到右选数,不能选同一个序列连续的两个数,问选的数的最大和。 分析:dp。 每挑选一个数,*存在三种状态*:选上面的1、选下面的2、都不选0。 我们只需维护这三种状态,在这三种状态里挑选最大值。 注意到可以选择的球员编号是严格递增的,因此可以把状态的第一维定义为球员编号,
阅读全文
摘要:传送门r 题意:给一个数列,选数,选中的数的x+1,x-1要剔除出数列,选中的数求和,求最大和。 分析:此题是一道动态规划题,做法是先存下每个数的个数放在c中,消除一个数i,会获得c[i]*i的值(因为可以消除c[i]次),如果从0的位置开始向右消去,那么,消除数i时,i-1可能选择了消除,也可能没
阅读全文
摘要:题意:n棵树,可以砍或不砍,可以倒向左或右;问最多可以砍多少棵树; dp:表示第i棵树所占据的最右边的位置。 从左向右循环,不断更新dp值。 #include<cstdio> #include<cstring> #include<string> #include<algorithm> #includ
阅读全文
摘要:传送门 题目大意:找最长递增子列满足:1.最长 2.递增 3.后一个index能整除前一个index 分析:子列问题,一般两种思路,一个是尺取,一个是dp。 用dp。 先不管本题的第三个条件,我们考虑一般情况,即:求最长递增子列 设dp[i]数组,表示:以s[i]为起始的最长递增子列数目,首先初始化
阅读全文
摘要:本题 分析: 然后贪心枚举步数n,先满足②式,再满足①式,break就完事 有异曲同工之妙的一个题[codeforces 1260B] (https://codeforces.com/contest/1260/problem/B) 总结:两个题都是先根据题意,用题目的opertions表示出两个数得
阅读全文
摘要:分析: #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm> #include<iostream> #define ll long long using namespace st
阅读全文
摘要:传送 题目大意:给定一个序列 ,在序列中找两个数x,y,使得|x-y|,|x+y| 在数轴中覆盖掉|x|,|y|, 问该序列中有多少对这种数。 方法:尺取法 正负无关,先排序,然后尺取的时候,注意ans加的是尺取出来的子序列的长度 #include<cstdio> #include<cstring>
阅读全文
摘要:A. Counting Kangaroos is Fun time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There are n
阅读全文
摘要:Jessica’s a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam is coming, yet she has spent little time on it. If she
阅读全文
摘要:Pay attention to the non-standard memory limit in this problem. In order to cut off efficient solutions from inefficient ones in this problem, the tim
阅读全文
摘要:C. They Are Everywhere time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Sergei B., the yo
阅读全文
摘要:In an open credit system, the students can choose any course they like, but there is a problem. Some of the students are more senior than other studen
阅读全文