![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学
检验数学能力的题
为什么他们cf写的这么快
这个作者很懒,什么都没留下…
展开
-
cf1516 B. AGAGA XOOORRR(数学+位运算)
题目链接题意:给定长度为n的数组a,每次可以选择相邻的两个数进行异或,问最后能不能变成至少个数大于等于2且每个元素都相等的数组。思路:首先第一点,如果全部异或和为0的话显然满足条件,因为只有相同两个数异或才会是0。那么如果异或和不为0怎么办,还有一种方法能满足条件,我们假设异或和为x,我们看一下整个数组某段异或和等于x的段数能否大于等于3,只要有显然满足。#include<bits/stdc++.h>using namespace std;int n,T,a[2005];int m原创 2021-05-09 19:57:40 · 202 阅读 · 0 评论 -
cf1509D. Binary Literature(数学+鸽巢原理)
题目链接题意:给你三个只有0和1组成的字符串a,b,c,长度都为2n,问你能否构造出一个不超过3n的字符串s,使得s满足串a,b,c这三个串中至少有两个串是串s的子序列。思路:挺有意思的一道题,首先最简单的就是将两个字符串拼接,长度为4n,只要再减去n就好了。与此同时,至少有两个串的最长公共子序列LIS是>=n的,所以只要将两个字符串拼接起来只取一个LIS即可。下面简单说明一下为啥至少有两个串的LIS是>=n的。因为每个串长度为2n,所以对于每个串只要两个结果,要么0的数量大于n,要么原创 2021-05-05 21:03:55 · 257 阅读 · 0 评论 -
cf1484B. Restore Modulo(数学)
题目链接题意:给定一个长度为n的数组,问你是否存在m,s,c使得数组能满足以下条件:1、a1=s mod m2、ai=(ai-1 + c) mod m如果不存在输出-1,若m可以无穷大则输出0,否则输出最大的m和合适的c思路:关键是看懂题,不要漏条件(特别是这里的c<m)。...原创 2021-05-02 21:09:04 · 102 阅读 · 0 评论 -
51Nod - 1677(数学+算贡献)
题目链接给定一棵n个节点的树,从1到n标号。选择k个点,你需要选择一些边使得这k个点通过选择的边联通,目标是使得选择的边数最少。现需要计算对于所有选择k个点的情况最小选择边数的总和为多少。样例解释:一共有三种可能:(下列配图蓝色点表示选择的点,红色边表示最优方案中的边)选择点{1,2}:至少要选择第一条边使得1和2联通。选择点{1,3}:至少要选择第二条边使得1和3联通。选择点{2,3}:两条边都要选择才能使2和3联通。Input第一行两个数n,k(1<=k<=n<=10原创 2021-03-12 13:07:23 · 108 阅读 · 0 评论 -
Codeforces Round #638 (Div. 2) D. Phoenix and Science(数学+思维)
题目链接题意: 每个细菌可以在白天的时候分裂,当一个细菌分裂成两个细菌时,子细菌的质量为母细菌的一半,晚上的时候,每个细菌的质量自增1,第一天会有一个质量为1的细菌。现要得到总质量为n的细菌,问最少几天能得到,并说明这几天内,每天分裂的细菌数思路:说实话看样例解释的话容易看晕,且容易带偏方向,要你求的是多少天后质量能到达n,所以不用管那天的具体的细胞数,我们只要知道它的每天的增量就可以了。假...原创 2020-05-06 21:13:11 · 136 阅读 · 0 评论 -
Codeforces Round #324 (Div. 2) (数学+哥德巴赫猜想)
题目链接题意:给定一个数,要你写成数量小于3的素数和(哥德巴赫猜想)思路:先打表1e6的素数表,然后就暴力(居然没超时也是幸运)。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e6+1;int top=0,prime[maxn],isprime[maxn&l...原创 2020-04-29 22:00:34 · 119 阅读 · 0 评论 -
ZOJ4029 Now Loading!!!(数学+二分+前缀和)
题目链接题意:计算图中给的式子。思路:不用想一个个枚举肯定超时,关键是对于每个分母,怎么才能快速的算出它呢?由于a【i】<1e9,所以对于每个p【i】我们是可以log内求出分母是1,2,3.。。的数组a的个数,如此一来只要再求前缀和就行了,查询的过程可以二分加速,但是这里有一个问题,对于一个前缀和(a【1】+a【2】+a【3】)/t来说,它和a【1】/t+a【2】/t+a【3】/t的结...原创 2020-04-26 20:51:42 · 143 阅读 · 0 评论 -
hdu5698 瞬间移动(组合数学+规律)
题目链接Sample Input4 5Sample Output10Source2016"百度之星" - 初赛(Astar Round2B)#include<bits/stdc++.h> using namespace std;const int maxn =2e5+500;const int mod=1e9+7; typedef long long ll;l...原创 2020-04-25 21:20:58 · 895 阅读 · 0 评论 -
Educational Codeforces Round 15 D. Road to Post Office(数学)
题目链接#include<bits/stdc++.h>using namespace std;typedef long long ll; int main(){ ll d,k,a,b,t,ans; scanf("%lld %lld %lld %lld %lld",&d,&k,&a,&b,&t); if(d<=k){ p...原创 2020-04-15 20:09:55 · 118 阅读 · 0 评论 -
Codeforces Round #167 (Div. 2) D. Dima and Two Sequences(组合数学)(*)
题目链接题意:给出两个长度为nn的点对(a1,1),(a2,2),…,(an,n)和(b1,1),(b2,2),…,(bn,n),要求用这两个序列构成一个长度为2n的点对序列,使得x坐标非减,问方案数思路:答案为IIcntx/pow(2,num),其实cnt是每个数的个数,num为a【i】==b【i】的对数#include<bits/stdc++.h>using namesp...原创 2020-04-15 20:08:58 · 176 阅读 · 0 评论 -
8VC Venture Cup 2016 - Final Round (Div. 2 Edition) C. XOR Equation(位运算)(好题*)
题目链接题意:两个整数a,b满足a+b=s,a^b=x,求满足条件的a,b的数目思路:这道题又涨新知识了,有个结论a+b=a^b+(a&b)*2,异或运算其实可以看做没有进位的加法,那么设s-x为d,很显然d从二进制角度来看的话,d如果第i位为1,就代表a+b的第i-1位产生了进位(我这里是从右往左看,最右边为第一位),那么如果d的第i为为0,就代表a和b的第i-1位为不同的,要么0...原创 2020-04-15 19:42:09 · 194 阅读 · 0 评论 -
Codeforces Round #499 (Div. 1) C. Border (ecgcd)
题目链接题意:给定n个十进制整数和一个进制数k,可以用无数多个给定的十进制整数,问这些十进制整数的和在模k意义下有多少种不同的结果(k进制下整数的最后一位就是这个数模k的余数)。...原创 2020-04-12 21:00:52 · 88 阅读 · 0 评论 -
Codeforces Round #485 (Div. 1) B. Petr and Permutations(数学+排序的性质)
题目链接题目大意:有一个1∼n的序列,若可以用3n次交换产生,则输出Petr,若可以用7n次交换则输出Um_nik。思路:首先排列有如下性质,一个排列的逆序数对如果是奇数称为奇排列,反之为偶排列,当奇排列经过一次变化之后就会变成偶排列,反之偶排列也成立。于是我们只要知道最后的排序是奇排列还是偶排列就知道它的结果了。至于如果不知道这个性质的话就等着凉凉吧,目前也只能当个结论记,不会证明QAQ...原创 2020-04-11 20:56:10 · 204 阅读 · 1 评论 -
Good Bye 2018 D. New Year and the Permutation Concatenation(组合数学or打表找规律)(*)
题目链接思路:这道题我是打表找规律做出来的,我估计很多人都是这样做的,但还是来学习一下正解。首先很容易想到n的全排列就可以满足条件,剩下的是由相邻的两个排列子串拼凑而成。那么在两个相邻排列子串拼凑的过程中,如果要满足题目条件,那么两个子串应该有相同的前缀。例如 1 2 3 4 5 1 2 3 5 4相同前缀为 1 2 3 那么这两个子串可以拼凑3个出来{2 3 4 5 1}{3 4...原创 2020-04-11 20:39:00 · 128 阅读 · 0 评论 -
Codeforces Round #632 (Div. 2) F. Kate and imperfection(数学+贪心)
添加链接描述题意: 在1~n的n个数中,对于k∈[2,n],在n个数中取k个数,对这k个数两两进行gcd,输出这个gcd最小的最大值。思路:我们尽可能选质数加入集合,如果质数不够呢就选因子只含2的倍数,再不够的时候再3的倍数,这个过程用埃式筛维护。比赛的时候可能有点难想,但还有个更直接的,你可以1到10打个表,从后往前看,你发现#include<bits/stdc++.h>...原创 2020-04-11 20:24:17 · 113 阅读 · 0 评论 -
Codeforces Round #553 (Div. 2) E. Number of Components(数学+算贡献)
题目链接题意:给出一个图,每个图的每个点上有一个ai值,在i和i+1个点之间有一条边,然后求出f(l,r)表示在区间[l,r],求出所有权值在[l,r]内的所有点,如果求这些点形成的图中有几个连通部分。思路:考虑一下每个点作为左端点的贡献,如果a【i】大于a【i-1】那么l的范围是【a【i-1】+1,a【i】】,r的范围【a【i】,n】,所以贡献为(a【i】-a【i-1】)*(n-a【...原创 2020-04-08 21:26:25 · 105 阅读 · 0 评论 -
Codeforces Round #489 (Div. 2) B. Nastya Studies Informatics(数学+枚举优化)
题目链接题意:要你在【l,r】内找出一对整数a和b的数量,要求gcd(a,b)=x,lcm(a,b)=y。思路:首先y%x!=0的肯定为0,设a=xc,b=xd(c和d互质),所以lcm=xcxd,所以lcm肯定是gcd的倍数,然后的话如果直接在【l,r】内枚举的话会T,考验你剪枝优化的时候到了,我们可以把上面那个式子整理一下,xy=ab=xcxd,最后可以变成y/x=cd=a/xb/x,所...原创 2020-04-08 21:12:53 · 116 阅读 · 0 评论 -
Codeforces Round #631 (Div. 2) - Thanks, Denis aramis Shitov! D. Dreamoon Likes Sequences(位运算+数学)
题目链接思路:能满足条件的a数组一定满足a【i-1】<a【i】并且a【i-1】的最高位要小于a【i】的最高位,例如a【i-1】为10的话,a【i】可以为100、1000、10000.。。。(以上以下都用二进制表示),由于n的长度不限定,我们就先找到2的幂次方中与d靠最近的(也就是代码里的pos),我们就可以考虑以下每一位的贡献,对于第i位a【i】有几种选择,假设a【i】是要从100和1...原创 2020-04-05 21:39:18 · 142 阅读 · 0 评论 -
Educational Codeforces Round 70 (Rated for Div. 2) D. Print a 1337-string...(数学)
题目链接·#include<bits/stdc++.h> using namespace std;typedef long long ll;const int maxn=1e5+1;const int mod=1e9+7; ll dp[maxn],sum[maxn];int main(){ int T; for(int i=1;i<maxn;++i) su...原创 2020-04-02 22:01:02 · 98 阅读 · 0 评论 -
Educational Codeforces Round 84 (Rated for Div. 2) E. Count The Blocks(组合数学)
题目链接#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod= 998244353;ll quick(ll a,ll b){ ll ans=1; a=a%mod; while(b!=0){ if(b&1) ans=(an...原创 2020-04-01 21:33:20 · 102 阅读 · 0 评论 -
Codeforces Round #630 (Div. 2) E. Height All the Same(数学+思维)
题目链接思路:问题就相当于能否选择两个相邻的方格,使其奇偶性翻转,最后使整个方格奇偶性一致。因为操作一并不会影响奇偶性,操作二的话就是奇数和偶数的个数有一个是偶数就可行。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod=998244353;ll quick(ll ...原创 2020-04-01 21:31:42 · 156 阅读 · 0 评论 -
hdu5288 OO’s Sequence(数学+算贡献)
题目链接Problem DescriptionOO has got a array A of size n ,defined a function f(l,r) represent the number of i (l<=i<=r) , that there’s no j(l<=j<=r,j<>i) satisfy ai mod aj=0,now OO wa...原创 2020-03-28 21:19:29 · 108 阅读 · 0 评论 -
hdu6222 Heron and His Triangle(数学+打表)
题目链接Problem DescriptionA triangle is a Heron’s triangle if it satisfies that the side lengths of it are consecutive integers t−1, t, t+ 1 and thatits area is an integer. Now, for given n you need to...原创 2020-03-26 22:15:04 · 101 阅读 · 0 评论 -
hdu3199 Hamming Problem(数学+思维)
题目链接Problem DescriptionFor each three prime numbers p1, p2 and p3, let’s define Hamming sequence Hi(p1, p2, p3), i=1, … as containing in increasing order all the natural numbers whose only prime div...原创 2020-03-21 21:29:20 · 243 阅读 · 0 评论 -
牛客练习赛59 C 装备合成(贪心+数学)
题目链接思路:贪心的尽量选第一种方案,设第一种方案用了k1次,第二种方案用了k2次,那么方程就是2k1+4k2=x,3k1+k2=y,那么就有10k1=4y-x,关键这里k1不一定是整数,所以k1这里要四舍五入并且要和x/2和y/3比较取最小值。#include<bits/stdc++.h>using namespace std;typedef long long ll;i...原创 2020-03-14 20:27:44 · 330 阅读 · 0 评论 -
Codeforces Round #520 (Div. 2) D. Fun with Integers(数学+规律)
题目链接思路:对于一个因子a和它的合数b来说,他们其实可以存在循环的,所以枚举因子乘4就是答案了。#include<bits/stdc++.h>using namespace std;typedef long long ll;ll n,ans;int main(){ scanf("%lld",&n); for(ll i=2;i<=n;++i) for...原创 2020-03-05 20:52:52 · 118 阅读 · 0 评论 -
Codeforces Round #589 (Div. 2) C. Primes and Multiplication (数学+算贡献)
题目链接思路:初看式子挺吓人,其实对答案产生影响的只有x的素因子,统计一下x的每个素因子的个数就行。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+1;const ll mod=1e9+7;ll prime[maxn];ll quick(ll a,...原创 2020-03-10 21:52:20 · 97 阅读 · 0 评论 -
Educational Codeforces Round 83 (Rated for Div. 2) D. Count the Arrays(组合数学)
题目链接思路:这个题一直卡在不知道内部究竟是怎么排序的了,其实仔细看看n-3的个数,每个数都要么在左边要么在右边只有两个选择,相当于每个都是2,且有n-3个,那么内部的排序就是pow(2,n-3)。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e5+1;co...原创 2020-03-10 22:04:06 · 86 阅读 · 0 评论 -
Codeforces Round #574 (Div. 2) D2. Submarine in the Rybinsk Sea (hard edition)(数学+算贡献)
题目链接思路:这个题看上去很复杂,其实可以考虑看看每个a【i】对答案的贡献,对于a【i】的每一个数字占答案的贡献我们是可以求出来的。比如说是123,123和长度为1、2、3.。。。10(所有数字长度肯定不超过10)相比,123的每一个数字的位置都是固定的,123和45比的话,3不是在5的前面就是在5的后面,我们可以通过这种方式把a【i】与每种长度的数字比较的贡献算出来,说出来有点绕,还是看代...原创 2020-03-11 21:27:33 · 159 阅读 · 0 评论 -
Codeforces Round #560 (Div. 3) D. Almost All Divisors(数学+暴力)
题目链接思路:暴力枚举就行,不过要注意几个坑。1、长度为1且a【1】为素数时;2、算出来的数注意不能含有不在a数组里的其他因子,样例如n=2,a【1】=6,a【2】=2。#include<bits/stdc++.h>using namespace std;typedef long long ll;map<ll,ll>p;int n,T,flag;ll a[3...原创 2020-03-11 21:30:16 · 126 阅读 · 0 评论 -
Codeforces Beta Round #83 (Div. 1 Only) B. Basketball Team(组合数学+概率)
题目链接思路:要求至少包含一个h的队友的话我们可以反着来,1-不包含h的队友的概率就是1-(C(sum-a[h])/C(sum-1)。#include<bits/stdc++.h>using namespace std;typedef long long ll;int sum,n,m,h,a[1001];int main(){ double ans=1; scan...原创 2020-03-12 20:53:07 · 128 阅读 · 0 评论 -
Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated) C. Kuroni and Impossible Calculation(鸽巢原理+数学)
题目链接思路:首先我们都明白一个式子就是如果(a-b)%m0,那么我们是不是都知道a%mb%m,又因为如果n>m的话%m的取值就在【0,999】内,也就是肯定会存在两个数是重合的(这就是鸽巢原理),那么n大于m的时候%m不就是0了,剩下的暴力就行了。#include<bits/stdc++.h>using namespace std;typedef long long ...原创 2020-03-04 12:53:33 · 106 阅读 · 0 评论 -
Codeforces Round #565 (Div. 3) D. Recover it! (数学+素数)
题目链接思路:我们先打好素数表,然后记录每个数的次数,从后往前遍历,如果这个数不在素数表里,那就说明它是合数,它要与前面的它的因子一起。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2750132;int top=0,isprime[maxn<<1...原创 2020-03-04 19:16:28 · 118 阅读 · 0 评论 -
Codeforces Round #590 (Div. 3) E. Special Permutations(数学)
题目链接思路:可以模拟一下P的变化,发现一个规律,假设当前为第i轮,那个这一轮要变的数就是i和i-1,要变成1,i-1要变成i,我们模拟一下这个变化过程,暴力修改每个数的值。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e5+1;ll a[maxn],ans...原创 2020-02-18 20:15:01 · 180 阅读 · 0 评论 -
Codeforces Round #586 (Div. 1 + Div. 2) D. Alex and Julian(二分图判断+数学)
题目链接思路:虽然知道判断二分图是判断存不存在奇环,但这题还存在着一些细节未懂,先留坑。。。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e5+1;ll a[maxn],num[maxn],cnt[maxn];int main(){ int n; ...原创 2020-02-21 20:57:53 · 126 阅读 · 0 评论 -
Codeforces Round #601 (Div. 1) B1. Send Boxes to Alice (Easy Version)(数学)
思路:记录1的数量为cnt,显然最好的答案肯定在cnt的质因子中,枚举质因子暴力就行了。#include<bits/stdc++.h>using namespace std;const int maxn=1e5+10;typedef long long ll;ll n,ans=1e18+7,num,t;vector<int>cnt;ll cal(ll x)...原创 2020-02-13 21:35:30 · 214 阅读 · 0 评论 -
Codeforces Round #601 (Div. 1) B2. Send Boxes to Alice (Hard Version)(数学)
题目链接思路:sum%x意味把前面的放后面,x-sum%x以为着从后面取数放到前面#include<bits/stdc++.h>using namespace std;const int maxn=1e6+1;typedef long long ll;ll n,ans=1e18+7,num,t,a[maxn];ll cal(ll x){ ll res=0,sum=...原创 2020-02-13 21:38:11 · 156 阅读 · 0 评论 -
Codeforces Round #613 (Div. 2) C. Fadi and LCM(数学+思维)
题意:给出X,让你输出一对数,使得lcm(a,b)==x,同时a和b要尽量小思路:其实很容易发现要使结果最小,a和b就是X的素因子的组合乘积尽量小,枚举因子即可。#include<bits/stdc++.h>using namespace std;const int maxn=1e5+1;typedef long long ll;ll lcm(ll a,ll b){ ...原创 2020-01-13 17:02:14 · 218 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2) B - Infinite Prefixes (思维+数学)
题意:给定一个n和x,再来是一个字符串s(长度为n),现在字符串s能够无限的复制,问你有多少种可能的字符串前缀的0的个数减去1的个数能等于X思路:模拟一下就行,不过坑点还是挺多的,设cnt为初始字符串的0和1的个数差,那么遍历初始字符串,记录每个位置的01差,只要(x-num[i])%cnt==0,那么ans++,num【i】为当前i位置的01差,不过这个还是会忽略一些情况,再把特殊情况特判一...原创 2020-01-31 20:19:14 · 170 阅读 · 0 评论 -
Codeforces Global Round 6 A - Competitive Programmer(简单数学)
题意:给定一个字符串s,现在可以随意改变s的顺序,问有没有一种改变方案后的数字能被60整除的思路:能被60整除也就能被6整除,想想能被6整除的数有什么特点?每个位置的数字之和是3的倍数,同时最后一位一定是偶数,根据这个规则来判断就行。#include <bits/stdc++.h>using namespace std;const int maxn=2e5+1;typed...原创 2020-01-31 20:56:25 · 313 阅读 · 0 评论