前几天开始做hdu 上的 ACM Steps,每做完一个 chapter,我会写一下做题小节。一是为了能更好吸收学到的东西。二是希望对给大家有一些帮助。好了,废话不多说下面是第一章的小结。
Section One
考察数据的输出形式,不多说。
Setion Two
1.2.1 an easy task 计算瑞年。水
1.2.2 find you present(2)
找到出现奇次的数。
使用位运算符 ^可更高效解决问题
num = 0;
while(t--)
{ scanf("%d",&n); num ^= n; }
1.2.3 rightmost digit
求n*n 的最后一位
直接算TLE 用快速幂取模
/*b = m ^ n % k*/
int qiuckpow(int m,int n,int k)
{
int b = 1;
while(n > 0)
{
if(n & 1) /*如果此位为 1 */
b = (b * m) % k; /*计算 以得值 * 下一个要乘的值*/
n = n >> 1; /*移到 n 二进制位下一位*/
m = (m * m) % k; /*每移一位 m = m^2*/
}
return b;
}
1.2.4 qiucksum
1.2.5 higher math
1.2.6 IBM Minus One
水 没看出许什么算法
1.2.7 Lowest Bit
位运算题,求n二进制位第一个为1的位的值
如 5 110 lowest bit 10 即 2
这题虽容易过
但有牛能 一行搞定
贴出来膜拜
n = n & (~n + 1)
110 001 1
110 010
10
1.2.8
水
Section Three (排序 , 贪心)
1.3.1 FatMouse's Trade
1.3.2 Tian Ji -- The Horse Racing
1.3.3 What Is You Grade
1.3.4 第二小整数
1.3.5 排序
1.3.6 考试排名
1.3.7 悼念512汶川大地震遇难同胞——老人是真饿了
1.3.8 Wooden Sticks
这一节没必要一道一道讲
总的来说套路是
struct + qsort + 策略
想策略的时候注意证明,不要凭感觉,多练就行。
总结所得 :
1.位运算技巧