现在的位置: 首页 > 综合 > 正文

poj1230

2013年09月15日 ⁄ 综合 ⁄ 共 778字 ⁄ 字号 评论关闭
/*
* poj1230.cpp
*
* Created on: 2010-8-6
* Author: friendy
*/

///贪心,计算出每一列所能遇到的wall的数目,对于每一列,若wall数目小于k则判断下一列,否则
//对这列进行如下操作:找出起点不大于当前列而终点不小于当前列的墙,取其中终点减去当前列最大
//的那面墙,将其删去,(这里是贪心,即去掉对后面影响最大的墙),同时还要更新每一列的墙数
//num[i]的值。
//墙边也算,只要有交集就可以穿墙。如1-2,2-3,就可以穿。
#include
#include
#include
using namespace std;
//贪心贪心贪心
int wal[101][4], p[105];
int n, k;
//按照最左边的点排序
void Sort() {
int i, j;
for (i = 1; i wal[j + 1][0]) {
int t;
t = wal[j][0];
wal[j][0] = wal[j + 1][0];
wal[j + 1][0] = t;
t = wal[j][2];
wal[j][2] = wal[j + 1][2];
wal[j + 1][2] = t;
}
}
}
}
int main() {
int t, i, j, ans, mmax;
scanf("%d", &t);
while (t--) {
ans = 0;
mmax = -1;
memset(p, 0, sizeof(p));
scanf("%d%d", &n, &k);
for (i = 0; i wal[i][2]) {
int tmp = wal[i][0];
wal[i][0] = wal[i][2];
wal[i][2] = tmp;
}
if (mmax k) {
int mMax = -1, pos;
for (j = 0; j = i && mMax i)//因为已经按照左端点排序,如果碰到大于此列的,后面的将会都大于此列
break;
}
for (j = wal[pos][0]; j

【上篇】
【下篇】

抱歉!评论已关闭.