随笔分类 -  二分

HOJ 3034 Mysterious (二分)
摘要:这道题比赛当时没做出来。后来听jingo讲了用二分,试了一下,过了。#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <memory.h> #define M 1000001 using namespace std; //对天数n进行二分 int menu[10001][51]; int days,dishes,budget; bool check(int mid 阅读全文
posted @ 2012-08-24 16:20 MicZ 阅读(153) 评论(0) 推荐(0)
HOJ 2608 Assemble(二分)
摘要:用一个结构体保存每一个部件,包括quality,price,name,type.先按quality降序排序,注意排序的时候不要将同类的部件打散,要保证同一类部件连在一起。再用componets数组,记录从i到j是哪一个部件。如componets[i]=0,componets[i+1]=3,则知第0到第2条记录是属于部件i的。然后关于质量进行二分。质量的范围取所有部件的质量最大、最小值。若在所有部件类型中,都能满足大于等于这个质量,并且花费不超过budget的,return true,然后调高mid,再进行判断。最后获得一个尽可能高的最低质量。否则return false。调低mid。总之,还是 阅读全文
posted @ 2012-08-24 16:08 MicZ 阅读(208) 评论(0) 推荐(0)
HOJ 2278 IP Filtering (二分)
摘要:HOJ 2278主要思路:将IP地址看成4位256进制的数,转化成十进制,一个segment就是一个区间。先将所有的segment按左端点升序排列,如果几个segment有重叠,则将它们合并成一个区间。int dn=0; l=seg[0].start; r=seg[0].end; for(int j=1;j<i;j++) { if(seg[j].start<=r) { r=max(seg[j].end,r); continue; } seg[dn].s... 阅读全文
posted @ 2012-08-24 16:06 MicZ 阅读(163) 评论(0) 推荐(0)