#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. linux目录详解

    网卡的配置文件目录 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0                                     ...

  2. 简单(基本)的风光摄影照片后期处理-新手教程-ps照片后期基本处理

    前言 Photoshop虽然不是万能的,但缺少Photoshop却是万万不能的!风光摄影不是一个记录过程,做到的不能仅仅是“拍到了”,我觉得应该是一个创作的过程,特别是在后期处理的过程中,创作意味更浓 ...

  3. swagger2常用注解说明

    说明: 1.这里使用的版本:springfox-swagger2(2.4)springfox-swagger-ui (2.4) 2.这里是说明常用注解的含义和基本用法(也就是说已经对swagger进行 ...

  4. C++ friend友元函数和友元类(转)

    一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员.现在,我们来介绍一种例外情 ...

  5. MAC 调用GCC 提示xcrun: error: invalid active developer path

    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: ...

  6. .gz解压

    1.今天很神奇我遇到这样的压缩包,啧啧啧,好少见的,记录下 gzip  -d  http_log.gz 这是讲http_log文件解压到当前的路径下

  7. 【转】Crosswalk入门

    原文:https://www.mobibrw.com/2015/1934 Crosswalk是一款开源的web引擎.目前Crosswalk正式支持的移动操作系统包括Android和Tizen,在And ...

  8. ynoi2018

    题解: 全分块是啥操作啊.. 而且都好难.. 1.未来日记 这个比较简单 对每个块开个线段树维护权值 $n\sqrt{n}logn$ 这个会炸空间 并不能做... 但还是说一下做法 首先考虑分块 然后 ...

  9. setting-url配置

    参考:  diango1 一.  mvc和mvt模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负 ...

  10. .net core cookie登录和session的 DataProtectionProvider 加入 redis

    string redisConnectionString = Configuration.GetSection("Storage:Redis").GetValue<strin ...