career

每遇到一次因为自己一下子蠢了或者经典猥琐问题所导致的奇葩错误,都要贴到这里来,每周看一遍:

1.二维数组时少写了一维

2.看错题目

3.在交卷前突然想到一个自以为很好的优化写上去,也不和原来的程序对拍就交上去,结果 wa。。。

4.把数据范围看少了一个 0 或写错字母

6.乱用 unsigned long long,导致减不出负数

7.高精度写挂了,进位一定要写 +=

8.忘记取模

9.遍历一个有向图不能只取入度为 0 的点,因为可能正好存在一个强连通分量

10.printf 输出实型是四舍五入的

11.树形背包第二维应 ++ j,因为要避免有 0 的状态导致重复计算

12.线段树下放标记应分清正负

13.sig(a, b) && c 被写成了 sig(a, b && c) 

14.单调队列退队忘判队空

15.lct 求前驱后继时应 push_down;splay 第一步应为 push_down

16.双顺序表在离散化的时候用错了;少用set或者map删除;for 完之后循环变量会比limit值大1

17.用中国剩余定理的时候弄错了模

18.写(-1)^k时define写成了(k ? -1 : 1);注意分类讨论要清晰,不要纠结常数

19.判断圆包含的时候判了a含于b却没判b含于a,导致直接开了负数的根号

20.后缀数组后面的基数排序应该等于y[i];cmp之所以带y是因为已经交换过了

21.以后写点双一定先出割点在暴力,不要搞那个边栈

23.vector的下标从0开始,size为开区间;离散化用map

24.math.h里面的abs会爆int!而且不会报错。

25.sam的len可信的只有parent的,因为当前点到parent的路径长度是连续递减的。

26.少用临时变量,若有和全局变量重名将不堪设想。


一些数学题:

tips:

莫比乌斯函数是偏续集上的容斥简化,gcd为积性函数,逆元为完全积性函数。

pólya定理中的置换是当前所有能够发生的置换。


1.hdu1695:求满足 a in[1, n], b in [1, m] gcd(a, b) = k 的数对 (a, b) 的对数。

将 k 约去,即 n /= k, m /= k, 然后求互质对数。

然后对于较小的区间[1, n]欧拉函数求解。对于[n+1, m]容斥原理求解。

其实都可以用容斥原理做的,但是欧拉函数看起来会快一些。


2.sdoi2010古代猪文:求 G^(Σd|n C(n, d)) % M。

见题解。


3.poj2480:求Σi=1 to n gcd(i, n)。

稍微推一下即可得:ans = Σi = 1 to n Σd|i && d|n φ(d),然后就直接枚举约数求和了。


4.poj2917:求对于给定的n,方程1/a + 1/b = 1/n 的解的个数。

貌似考过。。。将方程变形:(a - n) * (b - n) = n * n, 这就相当于裸枚约数了。


5.poj3421:求满足a0 = 1, an = m, ai|ai+1的数列的长度和方案数。

长度就是质因子数目吧。。。方案数不是无重有序分组么。。。就这样。。。


6.bzoj1876:高精度gcd。

用java,python水过了。自己写的按位竟然超时。。。


7.bzoj2818:给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对.

预处理欧拉函数前缀和+枚举质数水过。。。


8.bzoj2820:7的超级加强版。

见题解。


9.spoj GCDEX:求Σi=1 to n Σj=1 to n gcd(i, n)。

一开始用jzp的方法写了个O(sqrt(n)) per query的,但是T了。。。因为有改过时限。。。

然后忽然发现两个都是到n。。。于是可以简化问题:

ans(n) = gcd(1, 2) + gcd(1, 3) + gcd(2, 3) + 。。。

有没有发现只要可以预处理Σi=1 to n gcd(i, n) - n 就可以了?

然后用了一种复杂度不好估计但是应该不超过O(nlogn) 的方法预处理,O(1) 回答。


10.hnoi2008 cards

题目分析可得:有m+1个置换,求给定数量的三种颜色染色的不动方案数。

此题貌似不能直接pólya做,所以考虑burnside。

由于不动类一定是每一个循环节被染为同色,所以可以dp算出每一种置换的不动类数。

然后由于模为质数,所以直接费马小定理求逆元算出平均数即可。


11.scoi2009游戏:求给定长度序列很以任意置换回到原状态所需步数的方案数。

分析可得对于一个置换,步数就是所有循环节长度的lcm。

于是有一个结论:

若 m = p1^k1 * p2^k2 * ect, n = a1 + a2 + ect, lcm(a1, a2, ect) = m,则

n 取到最小值当且仅当 a1 = p1^k1, a2 = p2^k2, ect。

其中p1, p2, ect为质数。

然后以f[i][j]表示枚举到第i个质数,和为n的方案数,dp即可。


12.hnoi2009图的同构:见题解。


13.bzoj1042: 一共有4种硬币,面值分别为c1,c2,c3,c4。买东西去了tot次, 每次带di枚ci硬币,买si的价值的东西。请问每次有多少种付款方法。

首先容易想到把物品二进制分解暴力dp,但是肯定会TLE,因为复杂度为O(totslogc),而tot*s为10^8级别。

首先考虑无限制的背包。对于给定的s以及f[s](f为方案数),对于d转移时有f[s] += f[s - d * c], 可以理解为从状态s-d*s起再用d枚硬币转移到状态s,而其他种类的硬币任意分配。故f[s - (d+1)*c]的意义为用d+1枚硬币。

考虑当前的限制,就可以用容斥原理解了。想得还是不很清楚,希望可以问到更好的证明。


14.bzoj1045平分糖果:环形均分纸牌变种。

一直都不怎么很理解环形均分纸牌,希望可以提高数学推导能力。

首先考虑不是环的情况。

首先全部减去平均数,由于给负数相当于被给整数,那么只用考虑一种给的方向,很显然可以贪心选取。

令p[i]为i要给后面的个数,则易得p[i] = p[i-1] + a[i] = Σi=1 to i a[i] 。答案即为p数组的和。

在考虑有环的情况。不能像原来那样贪心选取了,因为第n个可能给第1个。

设第n个给第一个k个,则 ans = Σi=1 to n abs(p[i]+k),等价于数轴上-k到p[1], p[2], ..., p[n]的距离和。

易知当-k为其中位数时ans最小化,即为答案。


15.一个拉格朗日四平方和的题。

纯粹打表找规律,拿来练手miller_rabin和pollard_rho。


16.解方程:x^n = A (mod P),P is a prime and below 2*10^9.

毫无头绪是么。

首先考虑P的原根q,有q的1..p-1次方构成P的完全剩余系。

令x = q^a, A = q^b, 首先有q^b =A (modP),用baby-step-giant-step可以在O(sqrt(P) * lg(P))的时间内解决。

然后有q^(a * n) = q^b,因为构成完全剩余系,故a*n = b (modP),等价于解一元模方程。于是问题解决了。


17.求通过m次取反任意三个位置将长度为n的01序列A变成01序列B的方案数。

一道神奇的容斥dp。

题目等价于取奇数次不等的位。f[i][j]表示前i次操作使j个特定的位为奇数次。


hnoi2012:
1.双十字:二分+暴力树状数组。
2.排队:公式+高精。
3.nand:不会。
4.mine:割点。
5.triangle:用平衡树乱搞。
6.射箭:转半平面交。
7.永无乡:启发式合并平衡树。
8.集合选数:转状压dp。


网络流24题:

1.一些显然可以通过流量平衡表示来做。

2.最大权闭合图:源连正负连汇,答案为正点权和减去最大流。

3.二分图最小边覆盖或最大独立集:源连左汇连右流量为点权,答案为总点权减去最大流。

4.有向图最小路径覆盖:拆点后最大匹配,答案为匹配数。

5.不相交路径或限制点的选取:拆点流量为一的边之类即可。

6.最小割:转最大流或平面图转最短路。

7.矩阵行列限制:考虑每行分别向每列连边,容量限制当前点的权。


听课:

1.莫队算法:对于无修改的询问的通用O(n*sqrt(n))的算法。考虑暴力回答询问,每两个区间的代价是|l1-l2| + |r1-r2|。考虑最小化Σ|li-li-1| + |ri-ri-1|,可以计算曼哈顿距离最小生成树,也可以按(|r-l| div sqrt(n), l)双关键字排序得到回答序列,可以保证复杂度是O(n*sqrt(n))。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的高校科研信息管理系统实现了操作日志管理、字典管理、反馈管理、公告管理、科研成果管理、科研项目管理、通知管理、学术活动管理、学院部门管理、科研人员管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让高校科研信息管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值