2011年7月14日
摘要: 考察的是位运算,要求输入的N,找一个最小的大于N的数,并且其转换成2进制后1的个数不变思路:记录从右往左最第一组连续1的长度,然后将右边连续的0取反加1再将原先记录的1的长度减少1,加回原来的数/* eg. n=10011100 m=100111 m=100 t=3; m=11 n=10011111+1=10100000 n=n+m=10100011*/#include <iostream>#include <cstdio>#include <cstring>#include <string>#inclu... 阅读全文
posted @ 2011-07-14 16:33 FreeAquar 阅读(301) 评论(0) 推荐(0)
摘要: 大体思路都是找强连通子图,缩点,只是两个题目的所求不是太一样。hdu 3836:参考了qianshou的代码,网上的很多看的不是很懂,他写的很清晰,很好看懂http://blog.csdn.net/wsniyufang/article/details/6604503然后就是还要了解一点Tarjan算法,下面的那个网址讲的很清楚http://www.byvoid.com/blog/scc-tarjan/剩下的就是要自己写一个getans()的求结果的程序。经过缩点后,剩下的就是一个DAG图了。至于为什么是取入度和出度为0的点中最大的,我想了很久,还是不是特别清楚。我是这么想的,剩下的图如果要全联 阅读全文
posted @ 2011-07-14 15:17 FreeAquar 阅读(453) 评论(0) 推荐(0)