Pass-Muraille


Time Limit: 2 Seconds      Memory Limit: 65536 KB

In modern day magic shows, passing through walls is very popular in which a magician performer passes through several walls in a predesigned stage show. The wall-passer (Pass-Muraille) has a limited wall-passing energy to pass through at most k walls in each wall-passing show. The walls are placed on a grid-like area. An example is shown in Figure 1, where the land is viewed from above. All the walls have unit widths, but different lengths. You may assume that no grid cell belongs to two or more walls. A spectator chooses a column of the grid. Our wall-passer starts from the upper side of the grid and walks along the entire column, passing through every wall in his way to get to the lower side of the grid. If he faces more than k walls when he tries to walk along a column, he would fail presenting a good show. For example, in the wall configuration shown in Figure 1, a wall-passer with k = 3 can pass from the upper side to the lower side choosing any column except column 6.


Figure 1. Shaded cells represent the walls.

Given a wall-passer with a given energy and a show stage, we want to remove
the minimum number of walls from the stage so that our performer can pass through
all the walls at any column chosen by spectators.

Input

The first line of the input file contains a single integer t (1 <= t <=
10), the number of test cases, followed by the input data for each test case.
The first line of each test case contains two integers n (1 <= n <= 100),
the number of walls, and k (0 <= k <= 100), the maximum number of walls
that the wall-passer can pass through, respectively. After the first line, there
are n lines each containing two (x, y) pairs representing coordinates of the
two endpoints of a wall. Coordinates are non-negative integers less than or
equal to 100. The upper-left of the grid is assumed to have coordinates (0,
0). The second sample test case below corresponds to the land given in Figure
1.

Output

There should be one line per test case containing an integer number which is
the minimum number of walls to be removed such that the wall-passer can pass
through walls starting from any column on the upper side.

Sample Input

2
3 1
2 0 4 0
0 1 1 1
1 2 2 2
7 3
0 0 3 0
6 1 8 1
2 3 6 3
4 4 6 4
0 5 1 5
5 6 7 6
1 7 3 7

Sample Output

1
1

思路:由左往右扫每一列,若当前的墙数tem<=K,则不处理;若tem>=K,则需要拆tem-K堵墙。至于拆除哪些墙,采取贪心策略:在当前列所有的有墙格中,选择右方最长的tem-K堵墙拆除。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<iomanip>
#include<cmath>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
#define PI 3.141592653589792128462643383279502
int main(){
//#ifdef CDZSC_June
//freopen("in.txt","r",stdin);
//#endif
//std::ios::sync_with_stdio(false);
int mapp[][];
int t,n,m,x1,x2,y,y0,max_x,max_y,sum_s=;
cin>>t;
while(t--){
cin>>n>>m;
memset(mapp,,sizeof(mapp));
max_x=;
max_y=;
sum_s=;
for(int i=;i<=n;i++){
cin>>x1>>y>>x2>>y0;
if(x1>max_x) max_x=x1;
if(x2>max_x) max_x=x2;
if(y>max_y) max_y=y;
if(x2<x1){
for(int j=x2;j<=x1;j++) mapp[j][y]=i;
}
else{
for(int j=x1;j<=x2;j++) mapp[j][y]=i;
}
}
for(int i=;i<max_x;i++){
int tt=;
for(int j=;j<=max_y;j++)
if(mapp[i][j]>) tt++;
int offset;offset=tt-m;
if(offset>){
sum_s+=offset;
while(offset--){
int max_s=,max_bh;
for(int k=;k<=max_y;k++){
if(mapp[i][k]>){
int tem_s=;
for(int z=i+;z<=max_x;z++)
if(mapp[z][k]==mapp[i][k]) tem_s++;
else break;
if(max_s<tem_s){
max_s=tem_s;max_bh=k;
}
}
}
for(int a=i;a<=i+max_s;a++) mapp[a][max_bh]=;
}
}
}
cout<<sum_s<<endl;
}
return ;
}

zoj 1375||poj 1230(贪心)的更多相关文章

  1. ZOJ 1542 POJ 1861 Network 网络 最小生成树,求最长边,Kruskal算法

    题目连接:problemId=542" target="_blank">ZOJ 1542 POJ 1861 Network 网络 Network Time Limi ...

  2. POJ 1862 &amp; ZOJ 1543 Stripies(贪心 | 优先队列)

    题目链接: PKU:http://poj.org/problem?id=1862 ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...

  3. zoj 1375 贪心

    https://vjudge.net/problem/ZOJ-1375 In modern day magic shows, passing through walls is very popular ...

  4. POJ - 2349 ZOJ - 1914 Arctic Network 贪心+Kru

    Arctic Network The Department of National Defence (DND) wishes to connect several northern outposts ...

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

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

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

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

  7. POJ - 1017 贪心训练

    Packets Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 59725   Accepted: 20273 Descrip ...

  8. poj 3100 (zoj 2818)||ZOJ 2829 ||ZOJ 1938 (poj 2249)

    水题三题: 1.给你B和N,求个整数A使得A^n最接近B 2. 输出第N个能被3或者5整除的数 3.给你整数n和k,让你求组合数c(n,k) 1.poj 3100 (zoj 2818) Root of ...

  9. POJ 2376 贪心

    题意:FJ希望它的牛做一些清洁工作.有N只牛和T个时间段,每只牛可以承担一段时间内的工作.FJ希望让最小数量的牛覆盖整个T,求出其数量.若无法覆盖整个T,则输出-1. 分析:首先要注意T表示T个时间段 ...

随机推荐

  1. HDU 2717 Catch That Cow (深搜)

    题目链接 Problem Description Farmer John has been informed of the location of a fugitive cow and wants t ...

  2. postman测试express restful接口

    安装express及postman var express = require('express') var app = express(); var calculation = require('. ...

  3. 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning课堂笔记

    Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week1 Introduction to deep learn ...

  4. Redis 分片实现 Redis Shard [www]

    Redis 分片实现                                             Redis Shard https://www.oschina.net/p/redis-s ...

  5. http状态码+http请求方式

    一.http状态码 2开头 (请求成功)表示成功处理了请求的状态代码. 200   (成功)  服务器已成功处理了请求. 通常,这表示服务器提供了请求的网页. 201   (已创建)  请求成功并且服 ...

  6. Aspxgridview 根据条件来自定义计算Totalsummery

    protected void ASPxGridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEven ...

  7. 前言-关于学习OC还是学习Swift的个人理解

    一直在考虑一个问题!到底是学swift好呢还是学OC好. 然后得到了解答: 1.如果你只是对苹果系统软件开发有兴趣,把开发作为一种业务爱好,那么选swift就没错,swift也是大势所趋. 2.如果你 ...

  8. JQUERY 提取多个元素 a img 的 src href

    <div class="abc"><a href="1.html"><img src="1.jpg"/> ...

  9. 各种好用的代码生成器(C#)

    各种好用的代码生成器(C#) 1:CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:http:// ...

  10. 关于多属性查找问题的sphinx解决方案

    需求描述 mysql中,每一个文档都有多个标签,查询时可以筛选一个标签也可以筛选同时拥有多个标签的文档. 数据示例 文档 标签 1 1,2,3,4,5 2 2,3,4,5,6 3 3,4,5,6,7 ...