hdu ACM Steps 做题笔记(Chapter One)

前几天开始做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.位运算技巧 

2.快速幂取模
3.贪心题有了点感觉

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值