math
czyhbo
这个作者很懒,什么都没留下…
展开
-
codeforces 1342C Yet Another Counting Problem
传送门题意:让求l,r之间的符合要求的数量。方法:打表找规律,这种题,10的18次方,一看就不是暴力能解决的问题,肯定有规律可循,绝大多数能找到公式,这时候暴力打表找这个规律。设前i个数中符合规律的数有dp[i]个,规律就是:a*b一个循环#include<bits/stdc++.h>#define ll long longconst int maxn=4e4+100;using namespace std;ll dp[maxn];int main(){ int t原创 2020-07-17 10:36:55 · 161 阅读 · 0 评论 -
codeforces 735D Taxes
传送门题意:有一个商人今年收入为n,但是他要交税,税收为n除本身外的最大因子。现在他想减少税收,把n分为独立的k份,k任意选,每份为ni,(ni≠1),问最少税收多少。解析:易得:把数拆成素数,可以获得最小和,因为素数的最大因数是1,同时还要使拆的的素数个数最少。哥德巴赫猜想:任意大于等于4的数都可以表示成两个素数之和。那么:1.n<=4 特判2.n>=4时: n为偶数 ans=23.n为奇数,看n是否是素数,是 ans=1,不是的话n=2+x4.x是素数,ans=2;5.x原创 2020-07-15 12:27:35 · 109 阅读 · 0 评论 -
codeforces 547C
大佬讲的超级好补充一下:大佬第一种做法,两种优化,其实还可以优化。第二个优化(先说第二个 ):缩小第一个元素的范围。我这里假设第一个元素是start,那么 max(-maxnum+1,1)<=start<=min(n,n-maxnum),其中maxnum,minnum是差值的前缀和的最大值和最小值。为啥?自己悟吧。然后就是用二分在这个范围里找。第一个优化:不能有重复的。我这里是这样处理的。把差值的前缀和数组s[i]求出来,那么我们要求的数组就是start+s[i] ,那么如果我们要求的数原创 2020-07-14 20:22:35 · 174 阅读 · 0 评论 -
codeforces 1299A Anu Has a Function
传送门题意:给一个序列,让改变序列的顺序,使其经过一个运算,最后值最大。分析:本题考就考这个运算,这个运算就是二进制,所以考的就是二进制。分析这个运算:(以下摘自tql tql tql tql)/-------------------------------------------------------------------------------------------/我们看这样一个操作他代表着什么?我们把x,y拆解成二进制,x|y就相当于让两方都有1的一起有1了,然后−y就是让y位置上原创 2020-07-14 13:39:58 · 141 阅读 · 0 评论 -
codeforces1372BOmkar and Last Class of Math
传送门儿数论:结论是 a=n 的最大的不等于 n 的约数,以下是证明:假设 a≤b,那么显然 lcm 一定 ≥b。这里我们一定要构造 lcm=b 的解,因为 b 一定 <n,而 lcm 是 b 的倍数,就算 lcm=2b 也一定 ≥n,舍我们证明了 lcm=b 也就是说,a 可以整除 b,这又等价于 a 整除 n。我们又要让 lcm 尽可能小,相当于让 b 尽可能小也就是 a 尽可能大。所以总结一下,要让 a 整除 n 并且 a 尽可能大,那就找 n 的最大的不等于 n 的约数就好了(语无伦次原创 2020-07-12 17:20:35 · 116 阅读 · 0 评论 -
codeforces 550C - Divisibility by Eight
传送门儿题目大意:给一个序列,让你移除一些数,判断剩下的能不能被8整除。1.一位两位单独分析2.三位以上有数学结论:如果一个三位以上的数,末三位能被8整除,那么整个数就能被8整除。那么我就枚举这个序列中的所有的三位数,如果ok就break#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cmath>#include<io原创 2020-07-10 22:13:15 · 136 阅读 · 0 评论 -
codeforces 1278 B. A and B
本题分析:然后贪心枚举步数n,先满足②式,再满足①式,break就完事有异曲同工之妙的一个题[codeforces 1260B](https://codeforces.com/contest/1260/problem/B)总结:两个题都是先根据题意,用题目的opertions表示出两个数得到两个式子,然后加减两个式子,就水暗花明!#include<cstdio>#include<cstring>#include<string>#include<c原创 2020-07-10 08:00:22 · 731 阅读 · 0 评论 -
codeforces 1260 B. Obtain Two Zeroes
分析:#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<algorithm>#include<iostream>#define ll long long using namespace std;ll a,b;int main(){ int t; scanf("%d",&t); while(t--).原创 2020-07-09 22:53:54 · 100 阅读 · 0 评论