zoj 1375||poj 1230(贪心)
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(贪心)的更多相关文章
- ZOJ 1542 POJ 1861 Network 网络 最小生成树,求最长边,Kruskal算法
题目连接:problemId=542" target="_blank">ZOJ 1542 POJ 1861 Network 网络 Network Time Limi ...
- POJ 1862 & ZOJ 1543 Stripies(贪心 | 优先队列)
题目链接: PKU:http://poj.org/problem?id=1862 ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...
- zoj 1375 贪心
https://vjudge.net/problem/ZOJ-1375 In modern day magic shows, passing through walls is very popular ...
- POJ - 2349 ZOJ - 1914 Arctic Network 贪心+Kru
Arctic Network The Department of National Defence (DND) wishes to connect several northern outposts ...
- (贪心5.1.1)POJ 1230 Pass-Muraille
/* * POJ_1230.cpp * * Created on: 2013年10月9日 * Author: Administrator */ #include <iostream> #i ...
- POJ 1230 Pass-Muraille#贪心+vector迭代器用法
(- ̄▽ ̄)-* (注意下面代码中关于iterator的用法,此代码借鉴某大牛) #include<iostream> #include<cstdio> #include< ...
- POJ - 1017 贪心训练
Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 59725 Accepted: 20273 Descrip ...
- 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 ...
- POJ 2376 贪心
题意:FJ希望它的牛做一些清洁工作.有N只牛和T个时间段,每只牛可以承担一段时间内的工作.FJ希望让最小数量的牛覆盖整个T,求出其数量.若无法覆盖整个T,则输出-1. 分析:首先要注意T表示T个时间段 ...
随机推荐
- bzoj 1635: [Usaco2007 Jan]Tallest Cow 最高的牛——差分
Description FJ's N (1 <= N <= 10,000) cows conveniently indexed 1..N are standing in a line. E ...
- 12.13记录//QQDemo示例程序源代码
笔记的完整版pdf文档下载地址: https://www.evernote.com/shard/s227/sh/ac692160-68c7-4149-83ea-0db5385e28b0 ...
- NightMare2(SCU4527+dijkstra+二分)
题目链接:http://acm.scu.edu.cn/soj/problem.action?id=4527 题目: 题意:最短路的每条边除了边权之外还会有一个限制(财富,身上带的财富大于这个值则不能通 ...
- Winform Socket通信
Socket相关概念[端口] 在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务(应 ...
- bzoj 1034 贪心
首先如果我们想取得分最高的话,肯定尽量赢,实在赢不了的话就耗掉对方最高的,那么就有了贪心策略,先排序,我方最弱的马和敌方最弱的相比,高的话赢掉,否则耗掉敌方最高的马. 对于一场比赛,总分是一定的,所以 ...
- Intel call指令
转载:http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/ 最近有一个需求,给你个地址,看看这个地址前面是不是一个CALL指令 ...
- 【SCOI2010】维护序列
NOI2017的简化版…… 就是维护的时候要想清楚怎么讨论. #include<bits/stdc++.h> #define lson (o<<1) #define rson ...
- IE7下面iframe滚动条无法用鼠标轮滚 其他浏览器可以
1.让 IFRAME 隐藏滚动条,通常的做法就是在嵌入 IFRAME 的页面的 CSS 中指定以下规则: html, body {overflow: hidden} 2.如果只是想隐藏横向滚 ...
- python初学-列表
列表操作: 列表一般需要先调用方法后才能打印,不能直接打印调用的方法 因为列表可以修改 一般不会返回一个新列表 # 列表 # new_names = ['lzc','lzc2','lzc3'] # 下 ...
- Can't load standard profile: GRAY.pf
报错: java.lang.IllegalArgumentException: Can't load standard profile: GRAY.pf at java.awt.color.ICC_P ...