分类: 算法

30 篇文章

CCPC Final E. Elegant Tetris
首先按宽度w的奇偶来分情况考虑,解决方向肯定不是消去全部方块然后再还原,而应该是构造一个方案使加进来的俄罗斯方块不会对原图有影响。 然后就是伤脑的画图: 奇数 偶数 图很快就画好,但实现有好多case :),我的实现方式要特判$4$的情况,因为w-4等于0!!! 代码: #include <bits/stdc++.h> /* #include…
多项式快速幂
计算${g(x)}^n \mod p$ int powmod(int a,int b){ int res=1; for(;b>0;b>>=1,a=1ll*a*a%mod)if(b&1)res=1ll*res*a%mod; return res; } void poly_fast(int *a,int b){ lim=1,b…
NTT板子
NTT: void NTT(int *a,int type){ for(int i=0;i<lim;++i)if(i<rev[i])swap(a[i],a[rev[i]]); for(int k=1;k<lim;k<<=1){ int wn=powmod(type==1?g:gi,(mo…
区间最值板子
struct BIT { LL h[(int)1e5 + 9], n; void init(int x) { n = x; f(i,1,n)update(i); } void update(int x) { while(x<=n){ h[x]=aa[x]; int low=lowbit(x); for(int i=1;…
CF1728D
考虑对于区间$[l,r]$, Bob是否可以达成平手。 如果Alice取$l$,Bob取$r$并且有$s[l]=s[r]$,那么区间就转移到了$[l+1,r-1]$上。相反的,如果Alice取$r$,那么Bob可以取$l$,也是同上的。 如果Alice取$l$,Bob取$l+1$并且有$s[l]=s[l+1]$,那么区间就转移到$[l+2,r]$上…
Codeforces Round #793 (Div. 2)解题报告
A. Palindromic Indices 英语不好,以为是问可以删除的下标,还开了个问题。。 容易发现对于回文串,删除中间元素后仍然为回文串,所以方案数即为与中间元素等价的元素个数,所以从中间找出与中间元素相同的连续区间长度即为答案 B. AND Sorting 我们只需要关注不在应在位置的元素即可。对于这些元素的与结果肯定是一个答案,接下来只…
Codeforces Round #789 (Div. 2)
降智场 A. Tokitsukaze and All Zero Sequence 条件判断即可 B. Tokitsukaze and Good 01-String 我们应当考虑到每段均应为偶数,所以我们可以两个两个判断。。。 C. Tokitsukaze and Strange Inequality 应当考虑到固定$b,c$来进行循环,可以树状数组…
Codeforces Round #788 (Div. 2)
A. Prof. Slim 一开始读了个假题,一度怀疑不该extra registration... 容易知道负号一定都在左边,所以模拟改操作后判断是否已排序即可 B. Dorms War 遍历维护答案即可,答案为相邻两个特殊字符之间的下标差 C. Where is the Pizza? 一开始的想法是维护每个数字在两个序列的下标,然后一个for循…
Codeforces Round #787 (Div. 3)解题报告
第一次变蓝了 Codeforces A. Food for Animals 判断$max(0ll,x-a)+max(0ll,y-b)$与$c$即可 B. Make It Increasing 从后往前模拟操作即可 C. Detective Task 容易推出答案是第一个0的位置减去第一个1的位置加一 注意一些特殊情况 D. Vertical Pat…