本文主要是介绍water(这里都是水题,直到把oj某几面刷完),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1: hdu 1097 A hard puzzle
题意: 求a^b的最后一位数字。(0 <= a, b <= 2^30)暴力肯定不行,肯定logn的想法,所以快速幂嘛,分分钟的事。。
2: hdu 1465 不容易系列之一
题意: 错排公式( d(n) = (n-1)*(d(n-2) + d(n-1)) ),小心数据范围超int
3: hdu 1559 最大子矩阵
题意:在m*n的矩阵中找到最大x*y的子矩阵。。
首先,退而求其次,我们在一维n序列中如何求得最大连续m子序列。
例:n = 6 , m = 2
1 9 8 7 4 3
对于第i个数,我们就的在i-1的连续m序列加入data[i],然后去除第data[i-m]。这样我们从左到右扫描一遍就可以得到最大连续m子序列。
对于第二维,原理是一样的。我们求x*y得最大子矩阵,只要对每行前缀和,然后对于每i行的连续x行的数据就等于data[i][j]-data[i-x][j]。接下来我们就转化为一维的情况了。
4: hdu 1796 how many integer can you find?
简单容斥原理的应用,枚举能被M集中将1个数整除的个数,减去2个数整除.......m个数整除的个数。
如何用枚举的方式,代码片段:
for(int i = 0; i < (1<<n); i ++){int sign = 0;for(int j = 0; j < n; j ++){if(i & (1<<j)){sign ++;// to do}}if(sign%2 == 1) // + to doelse // - todo
}
这篇关于water(这里都是水题,直到把oj某几面刷完)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!