摘要:
题目大意:给一数N,在区间[L, U]上找到一个数M使得M| N的值最大,如果有M有多个可能值,取最小的那个值。 从最高位开始逐位判断,如果N的该位为0,为使M | N的值最大,M的该位应考虑置为1,然后判断M的该位为1时的可能取值区间[lmin, lmax],如果区间[lmin, lmax]与区间[L, U]有交集,则说明该位可置为1;如果N的该位为1,为使M的值尽可能小,M的该位应考虑置为0,然后判断可能取值区间与[L, U]是否有交集,如果没有交集,该位置为1。 1 #include 2 3 int main() 4 { 5 #ifdef LOCAL 6 freopen... 阅读全文
posted @ 2013-08-21 21:35
xiaobaibuhei
阅读(184)
评论(0)
推荐(0)
摘要:
题目大意:有n个包,其中小包可以装到大的包里,包的大小用数字进行表示,求最小的装包数量。 统计每个数字出现的次数,其中次数的最大值k就是最小的装包数量。答案显然不可能比k小,而把相同大小的包装进不同的大包里显然满足条件。题目中有一句话纠结了半天,“While maintaining the minimal number of pieces you are also to minimize the total number of bags in any one piece that must be carried.” 大概是说让每个大包里的小包的数量的最大值最小吧,也就是要把小包尽可能平均... 阅读全文
posted @ 2013-08-21 19:59
xiaobaibuhei
阅读(790)
评论(0)
推荐(0)
摘要:
题目大意:给一个字符串,判断是否能通过交换字母构成回文,如果能,计算所需的最小交换次数。 如果字符串中出现奇数次的字母的个数>1,则不能构成回文。然后...就没思路了...看网上说用贪心的思想先从两端开始考虑,决定两端的字母后再缩小问题范围直至字符串长度 2 #include 3 4 int main() 5 { 6 #ifdef LOCAL 7 freopen("in", "r", stdin); 8 #endif 9 int T;10 scanf("%d", &T);11 char str[110];12 while 阅读全文
posted @ 2013-08-21 19:07
xiaobaibuhei
阅读(372)
评论(0)
推荐(0)

浙公网安备 33010602011771号