摘要:
第一题:贪吃蛇(snake) 本题其实就是判断一个有向图中有没有环,做一次拓扑排序就可以了,如果所有点都入队了,就表示没有环,否则就有环。或者就是dfs一次,每个点只需要被访问一次,这样也是O(n)的。 第二题:营养计划(egg) 本题可以使用递推方法解决,应用堆积木的思想。 记f[i,j]为将i个 阅读全文
摘要:
单调队列扫描,记录当前区间长度为d的一段的和的最大值,和当前区间和。 阅读全文
摘要:
dfs,连边,边权为比值,赋值搜索,遇到矛盾时退出 阅读全文
摘要:
暴力 阅读全文
摘要:
记忆化搜索 阅读全文
摘要:
#include #include #include #include #include #include #include using namespace std; int xx[5]={0,0,1,-1}, yy[5]={1,-1,0,0}; int bg,ed,h,x,y; int t,w=1; bool ans[5][5],mark[100010]; ... 阅读全文
摘要:
二维树状数组 阅读全文
摘要:
可以发现加减号之间可以互相抵消. 真正加到答案里的只有一些前缀积. 记s[i]为a[1]*a[2]*a[3]...*a[i].那s[i]在答案中出现的次数就是2*3^(n-i-1); 修改一个数只会对后面的数有影响. 预处理逆元然后用线段树维护即可. #include<iostream> #incl 阅读全文
摘要:
由于脑洞的序列不会改变,考虑用线段树维护区间内sum,左边0的个数,右边0的个数,区间内最大脑洞。对于查询l~r最大脑洞可以将l~r分成logn个区间,总复杂度O(nlogn)。 阅读全文
摘要:
设S(n,k)=Σ C(n,i) i=0..k 根据lucas定理可以得到 S(n,k) mod p = [ S(n/p,k/p-1)*S(n mod p,p-1)+C(n/p,k/p)*S(n mod p,k mod p) ] mod p 除法均向下取整 预处理0≤n,k<P的C,S值,根据上式递 阅读全文