#include<iostream>
#include<cstring>
using namespace std;
int t,n,k,x,y,x1,y2,max_x,max_y,sum_s=;
//(x,y) (x1,y1)墙的两个端点,所有墙最大列坐标max_x,最大行坐标max_y,最少拆除墙面数为sum_s
int map[][];
int main()
{
scanf("%d",&t);//测试用例数
while(t--)
{
memset(map,,sizeof(map));
max_x=;
max_y=;
sum_s=;
scanf("%d %d",&n,&k);
for(int i=;i<=n;i++)
{
scanf("%d %d %d %d",&x,&y,&x1,&y2);//两个端点坐标
if(x>max_x)
max_x=x;
if(x1>max_x)
max_x=x1;
if(y>max_y)
max_y=y;//y=y2,所以只要一句
if(x<x1)//标记第i面墙
{
for(int j=x;j<=x1;j++)
map[j][y]=i;
}
else
{
for(int j=x1;j<=x;j++)
map[j][y]=i;
}
} for(int i=;i<=max_x;i++)//从左到右扫描每一列
{
int tem=;//统计第i列中墙的格子数
for(int j=;j<=max_y;j++)
{
if(map[i][j]>)
tem++;
}
int offset=tem-k;//墙多,则要拆offset面
if(offset>)
{
sum_s+=offset;
while(offset--)
{
int max_s=,max_bh;//最多的格子数,行数
for(int k=;k<=max_y;k++)//搜索第i列每个有墙的格子
{
if(map[i][k]>)//若(i,k)为有墙格,则统计k行i列右方属于同堵墙的格子数tem_s
{
int tem_s=;
for(int z=i+;z<=max_x;z++)
{
if(map[z][k]==map[i][k])
tem_s++;
}
if(max_s<tem_s)//该堵墙格子数最多,则记下
{
max_s=tem_s;
max_bh=k;
}
}
}
//拆除含格子数最多的墙(第max_bh行上第i列开始的max_s个格子)
for(int a=i;a<=i+max_s;a++)
{
map[a][max_bh]=;//拆除,不然会重复计数
}
}
}
}
printf("%d\n",sum_s);//输出最少拆除墙的面数
}
return ;
}

5.1.1

POJ 1230 Pass-Muraille的更多相关文章

  1. zoj 1375||poj 1230(贪心)

    Pass-Muraille Time Limit: 2 Seconds      Memory Limit: 65536 KB In modern day magic shows, passing t ...

  2. (贪心5.1.1)POJ 1230 Pass-Muraille

    /* * POJ_1230.cpp * * Created on: 2013年10月9日 * Author: Administrator */ #include <iostream> #i ...

  3. POJ 1230 Pass-Muraille#贪心+vector迭代器用法

    (- ̄▽ ̄)-* (注意下面代码中关于iterator的用法,此代码借鉴某大牛) #include<iostream> #include<cstdio> #include< ...

  4. POJ 2240 && ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0

    http://poj.org/problem?id=2240 用log化乘法为加法找正圈 c++ 110ms,g++tle #include <string> #include <m ...

  5. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  6. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  7. POJ 2697 A Board Game(Trie判重+BFS)

    A Board Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 551   Accepted: 373 Descri ...

  8. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  9. poj 题目分类(1)

    poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...

随机推荐

  1. bzoj3991 lca+dfs序应用+set综合应用

    /* 给定一棵树,树上会出现宝物,也会有宝物消失 规定如果要收集树上所有宝物,就要选择一个点开始,到每个宝物点都跑一次,然后再回到那个点 现在给定m次修改,每次修改后树上就有一个宝物消失,或者一个宝物 ...

  2. swagger2访问url

    swagger : http://localhost:8080/swagger/index.html springboot中的swagger:http://localhost:8080/swagger ...

  3. Java+selenium之WebDriver定位页面元素(二)

    Selenium-Webdriver 提供了强大的元素定位方法,支持以下三种方法: 单个对象的定位方法,多个对象的定位方法和层级定位 1. 定位单个元素 // 对于元素的属性包含 id 的情况适用,推 ...

  4. 数据库和linux对大小写的区分

  5. 常见的爬虫分析库(1)-Python3中Urllib库基本使用

    原文来自:https://www.cnblogs.com/0bug/p/8893677.html 什么是Urllib? Python内置的HTTP请求库 urllib.request          ...

  6. map映射巧用 A-B Problems

    A-B problem Description 大家都非常熟悉 A+B Problem! 题目看多了也有审美疲劳,于是我舍弃了,改用 A-B problem! 题目是这样的:给出一串数以及一个数字 C ...

  7. hadoop集群运行jps命令以后Datanode节点未启动的解决办法

    出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而da ...

  8. NEST 中的距离单位

    Distance units Version: 5.x 英文原文地址:Distance units 当我们需要指定距离时(地理位置查询),可以使用一个双精度的数字来表示,它的默认单位是米(meters ...

  9. C# 之 判断一个字符是否是汉字

    判断一个字符是不是汉字通常有三种方法: [1] 用 ASCII 码判断:[2] 用汉字的 UNICODE 编码范围判断:[3] 用正则表达式判断. 1.用ASCII码判断 在 ASCII码表中,英文的 ...

  10. 使用sparkSQL的insert操作Kudu

    可以选择使用Spark SQL直接使用INSERT语句写入Kudu表:与'append'类似,INSERT语句实际上将默认使用UPSERT语义处理: import org.apache.kudu.sp ...