也许是要检查的总结
第一题 set superoj887
【题解】
可以利用抑或的性质,和题目的要求。
要求严格大于,抑或的正逆运算实际是一致的,所以只需要求出总的局面数减去相等的情况再除以二就好了。
因为如果存在A>B就一定存在刚好相反的B>A
相等的情况就用DP去计数。
具体的Dp就是用f[i][j]表示前i个数任意选数抑或值为j的方案数。
f[i][j] = f[i-1][j]+f[i-1][j^a[i]]*2;
因为可以不选a[i],或者A选了a[i],或者B选了a[i]。
【错因】
考试的时候分析出了性质,然而并没有想到用DP计数。
第二题 clique superoj888
【题解】
求团的问题,比较经典,其实是先选定一个点,圈定他能到的团,然后在这个团里面递归搜索判断。
因为之后的搜索只会出现不合法的点,这是将其删去,所以总的搜索范围在不断减小,时间是收敛的。
【错因】
建了原图的补图,然后发现即使减少了边也没有减少总的搜索情况,剪枝也不太好剪。
本题提供了一个思想,就是在搜索范围较大的时候,如果每次都能够缩小成相对较小的部分,依次删去不合法的点,那么时间复杂度是有可能大大降低的。
第三题【待填坑】HCN superoj889
【题解】
有一个公式,就是将此数分解质因数的指数乘起来就是它的因数个数。然后现在就可以思考减小大质数的指数,将其给2。
因为本题数据较大,所以需要给每一个质数限定一个上界一个下界,还可以限制住2,然后就可以过掉了。
注意要写高精度。
第一题 mod superoj900
【题解】
其实是个高次同余,那么就可以利用mod运算的性质,将其强行拆开。
对于原式子,先找出mod p 为零的数,然后对于mod p2的数,就强行拆开,用kp+x代替方程中的x去计算,就可以枚举k和x了。
x就是一开始mod p 为零的数。
【错因】
有15分是枚举的,扩展欧几里得又有15分,对于正解,还是没有真正理解模运算。
第二题 chessboard superoj901
【题解】
用到了贪心的思想,将横向和纵向分开来做。因为对于每一个棋子来说,横坐标和纵坐标实际是互不相关的。
对于同一行,那么必然离此行最近的棋子放在这里是最优的,如果此处放了其他的棋子,那么就减少了当前棋子的摆放空间。
就是注意维护一个动态的优先队列。尤其注意优先队列!!!!!
图示的话大概是对当前这列有三个右界限制,那么放在第二行必然是最优的。
↓
—–|
*-|
——-|
【错因】
根本就没有想到可以用贪心,对于此类题目这个思路是通用的。
第三题 ball superoj902
【题解】
两次dfs确定序列,然后用线段树和lca维护和查询就好了。
对于第一次dfs确定该节点的子子孙孙中最小的那个在哪棵子树,用优先队列来维护。或者可以强制排序。
然后第二次就用第一次确定的顺序跑一个序列出来,现在树上问题转变成了线上问题。同时注意建立一个lca
对于加入球,就是填满线段中靠前的部分。对于取出球,就是问它到根路径上非空节点的个数。然后就变成了单点修改的问题。
【错因】
现在都还有三个点错,不知道为什么。
第一题 flood superoj906
【题解】
dijikstra+heap
对于有下水道的点,就建立一个总源点,连单向边边权为零即可。
第二题 walk superoj907
【题解】
法一 dijikstra+heap一秒多一点出解【用spfa的话要将近两秒出解】
法二 dp一秒出解,因为本题没有负权,上下转移分开做一遍就好。如果有负权打个标记就好
对于每列转移方程大概是
从上到下f[i][j]=min(f[i][j-1],f[i-1][j])+digit[i][j];
从下到上f[i][j]=min(f[i][j],f[i+1][j]+digit[i][j]);
注意第一行和最后一行转移方程分开。
第三题 gauss superoj908
70分直接写高斯消元
100分选很多个质数在mod意义之下高斯消元,然后用逆元算一算,最后用CRT合并就好了。
本题的难度不在中国剩余定理,在于高精度orz
不会fft高精度除法高精度模运算做到飞起。
第一题 bbj superoj909
【题解】
水题DP 根据要求模拟转移转移就可以了。
第二题 walk superoj910
【题解】
本题至今没有看懂,去看solution吧。
第三题 chessboard superoj911
【题解】
考虑所有的情况,Fn=∑ni(ni)∗(ni)∗i!
那么删去不合法的情况An=F2n−∑ni(ni)∗(ni)∗i!∗An−i
就是所有的情况乘起来,删去不合法的情况,黑白棋子放同一格的情况,乘上把它变成小棋盘后的情况。
【作死】
考试的时候手玩了,也分析出来了,就是写不出数学公式,数学太差orz
也有收获,对于已经想出来的题一定要静得下来推公式。
第一题 resistance superoj912
【题解】
明确一点,对于当前阻值为ac的电阻
给它串联k个电阻,它会变成(a+kc)c;
给它并联k个电阻,它会变成a(ka+c);
P>Q就是第一种情况,Q>P就是第二种情况。
这个思想非常有意思,就是不停地一层一层拆掉串并联,然后就可以上下mod计算了。
第二题 mst superoj913
【题解】
因为点数不多边数太多,稠密图实际是需要用普林姆算法求解的n2所以要学会普林姆。
但是因为克鲁斯卡尔算法写得还不错或者说出题人根本就没有卡这个算法,就过去了。特别要注意双向边一定要开双倍数组。
第三题 deconvolution superoj914
【题解】
看题面像神题,看样例就是水题。记得用long long计算。反向解一元一次方程就好。
尤其要注意输出答案要mod防止负数。
另外一种思路就是去解多项式除法,手算一下就知道是对的了。