自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 Educational Codeforces Round 134 C. Min-Max Array Transformation (two points)

最大差值,只要 a 中比当前枚举的元素大的元素都能在 b 中找到大于等于的元素就可以,否则,b 中的元素就要优先和比当前元素大的元素匹配 ,这些元素就不能再使用了。题意:对给定数组 a 找到将 a 中值改成 b 值 的最小和最大差值 ,差值必须是正的。很明显,最小差值就是 b 中第一个大于 a 的元素减去 a 中元素。...

2022-08-28 21:25:26 297 1

原创 Educational Codeforces Round 134 D. Maximum AND

每次枚举一位,保证每次检查只检查当前合法且下一位是否合法,并不关心更低位是否合法,然后sort一下,判断一下是否相等。最大,我们从最高位往低位一位一位枚举,高位确定了,就不能变,只能在满足高位的条件下改变低位的顺序。二进制下当前位上都是1 ,也就是说。,二进制下某位是1 一定是所有的。题意:大致题意: 给定数组。记录当前合法答案,用。.........

2022-08-28 21:13:51 211

原创 ABC 161 D - Lunlun Number (递推)

我们可以记录下来每次合法的答案,比如12,然后再尝试拼凑它的个位,比如121,122,123,那么合法的答案又可以拼凑出新的答案1211。题意:找到第k小每个相邻数字之间不超过1。

2022-08-25 20:21:53 177

原创 ABC161 F - Division or Subtraction (贪心)

之间的非1因子肯定不能满足题设,因为除剩的因子一定比它小,只有在是。思路:本题只能是先除再减,如果先减再除,那么减之前一定能除。的非1因子,它一定能满足题设,因为它能通过减一定次数形成。两区间中配对,两边各一个,所以我们只要加两次就好。之间可能存在答案,只要通过检测就好。这样我们的时间复杂度就到了。...

2022-08-25 20:14:58 138

原创 CF 777div2 B. Madoka and the Elegant Gift

B. Madoka and the Elegant Gift

2022-08-19 16:11:09 84

原创 CF 599div1 A. Tile Painting(中国剩余定理)

A. Tile Painting 题意:有一条由 nn 块瓷砖拼成的长度为 nn 的路。对于两块瓷砖 ,如果 且 ,那么它们的颜色必须相同。求出最多可以使用多少不同颜色的瓷砖,并且满足上述要求。满足,也就是说是的因数,那么我们对的因素分析,对因素分析其实就是对质因数分析如果,那么答案明显为k如果,如果和不是质因数,那么可以把和拆成质因数,当和互质的时候,根据中国剩余定理,存在在,使得,,其中和为任意数,也就是说和与同色,以此推得,当有两个质因子时所有颜色都相同,当有两个以上时可以拆成多个两个质因子,情况相同

2022-07-13 13:25:12 155

原创 单调栈+单调队列

单调栈有单调递增栈和单调递减栈,但实现原理都差不多单调递增栈是如果当前元素大于栈顶元素则入栈,否则弹出栈顶元素,直到栈为空或者栈顶元素小于当前元素。单调递减栈类似。主要用解决NGE(Next Greater Element)问题对序列中每个元素,找到下一个比它大的元素。当然,“下一个”可以换成“上一个”,“比它大”也可以换成“比他小”,原理不变。830. 单调栈附上acwing的板子练习​​​​​​​Bad Hair Day 单调栈单调队列顾名思义维护一个单调的队列,同样也有单调递增队列和单调递减队列

2022-07-09 23:26:56 70

原创 Bad Hair Day 单调栈

P2866 [USACO06NOV]Bad Hair Day S 把问题牛能看见多少头牛转化成牛能被多少头牛看见,只要维护一个单调增加的栈,每次累加栈的大小即可记得开long long

2022-07-09 12:16:17 101

原创 CF 738div2 D2. Mocha and Diana (Hard Version) 并查集

D2. Mocha and Diana (Hard Version) 题意:给出大小为n边数分别为m1和m2的森林,求在两个森林中添加边的最大数目(添加边需要满足添加该边后还是森林,并且两个森林中该边不存在)先说策略,我们选择节点1作为主联通块,然后开始连边,另外一个点选两森林中都不属于主联通块的节点,没有可以连了,我们就选择不在主联通块上的点,将这类点互相连起来。(只能连不同森林不在主联通块上的点)。根据题意我们可以得知最后的情况,两森林中至少一个森林,所有点都联通。如果两个森林都存在联通块的话,那么一定

2022-07-06 01:11:07 113

原创 ABC257 D - Jumping Takahashi 2 (二分+bfs OR Floyd)

D - Jumping Takahashi 2 题面是求弹跳能力S=0需要加上多少,能从某一到任意一点(中间可以有其他点),从i点到j点需要满足很显然,答案S在0-1e9之间,因此我们可以枚举答案S,关键在于check函数怎么写我们要验证当前大小的S能满足题设,也就是说,我们任意选一点,都能从该点到其他任意点(可以途径其他点)。我们从1开始,看从1号点能够到哪些节点,我们也可以从这些节点到其他节点去,我们可以用bfs来做这个事情。我们为了检测每个点是否都可以到达,可以开个vis数组,标记是否到达代码如下

2022-07-06 00:13:01 434

原创 lowbit

lowbit的原理分析

2022-06-24 18:38:53 209

原创 代码源div2 每日一题 思维+前缀和 OR dp

非递减的01序列思路1:经过操作最后的序列一定是一段全为0的序列加上一段全为1的序列,所以可以枚举分界点,利用前缀和计算需要更改的数量#include<iostream>using namespace std;const int N=1e6+5;int n,pre[N],ans=0x3f3f3f3f;char c[N];int main(){ cin>>n; getchar(); cin>>c; for(int...

2022-05-11 11:31:08 109

原创 代码源div2 每日一题 差分+前缀和

简单差分先做差分,再做前缀和,没什么可以说的#include<iostream>using namespace std;const int N=2e5+5;int n,m,k;long long a[N],b[N],c[N];int main(){ scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); b[i]=a[i].

2022-05-10 13:24:07 95

原创 代码源div2 每日一题 gcd+数学

数学http://oj.daimayuan.top/course/11/problem/47这组数和sum为,设两组和分别为sum1,sum2求两组数字的和的公约数最大sum1和sum2的共同约数也是sum的约数设x在中,那么一定有一组为,另外一组为,这时最大公约数为,即枚举最小的x这里可以分情况讨论,当两组没有共同约数时,最大公约数为1,当两组有共同约数时,便是上面这种情况...

2022-05-09 13:37:05 98

原创 代码源div2 每日一题 思维+前缀和

三段式将序列分成三段,每段和相等,不难发现,和其实就是总和/3记总和为sum由此我们可以利用前缀和计算序列和,找到和为sum/3和sum*2/3的点并记录下来如果sum*2/3的点的下标大于sum/3的点的下标,那么就是组合法解需要注意当所有元素为0的情况,这时的时间复杂度为,直接利用小学二年级学过的求和公式求和即可#include<iostream>#include<vector>using namespace std;const int N

2022-05-08 15:57:34 121

原创 代码源div2 每日一题 dp

树删除一个节点和它儿子之间的所有边,实际产生了它的出度数+1个联通块所以求是否能产生k个联通块,就是将所有入度统计到一个数组中,查找数组中是否能找到某些数相加等于k,实际就是01背包当然整个树就是一个联通块#include<iostream>using namespace std;const int N=3005;int n,tree[N],dp[N*N];int main(){ cin>>n; int x; for(int i=1;i&

2022-05-07 12:06:44 362

原创 代码源div2 每日一题 gcd+数学

添加括号a1只能是分子,a2只能是分母,后面所有的数可以通过添加括号,使其变成分子,所以求所有数与a2的最大公约数,如果能将a2约分成1,那么便能变成整数,如果不能,则一定有a2的某个因子做分母#include<iostream>using namespace std;const int N=1e4+5;int t,n,a[N];int gcd(int x,int y){ if(y==0) return x; else return gcd(y,x%y).

2022-05-06 20:33:33 173

原创 代码源div2 每日一题 dijkstra

Collision把该图类比成树,转化成求两个节点在树的第几层,根节点随意取,这里取1为根节点,将两个节点的层数相加看奇偶,是偶数则能在村镇相遇,否则只能在路上相遇用邻接表存图,因为无向图,需开到2e5的大小,稀疏图跑堆优化的djikstra其实bfs也可以做此题#include<iostream>#include<cstring>#include<queue>using namespace std;const int N=2e5+5;

2022-05-05 23:20:23 119

原创 代码源div2 每日一题 思维+前缀和+map

简单子段和题目要求连续一段子数组和为k,用前缀和可得区间和枚举左右边界时间复杂度为,数据大小为2e5,时间复杂度还需优化通过map将当前区间和记录,转而求map中存在值等于sum-k需注意前缀和r-l(l可能为0)#include<iostream>#include<map>using namespace std;const int N=2e5+5; long long n,k,num[N];map<long long,long lon

2022-05-03 21:55:31 356

原创 代码源div2 每日一题 思维+放缩

分数拆分y<=x1/x<=1/y1/k-1/y<=1/yy<=2k枚举y从k+1到2*k#include<iostream>using namespace std;int main(){ long long k,i,ans=0; cin>>k; for(i=k+1; i<=2*k; i++) { if((k*i)%(i-k)==0) { ans++; }

2022-05-02 15:32:25 267

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除