(~ ̄▽ ̄)~*

(注意下面代码中关于iterator的用法,此代码借鉴某大牛)

#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std; struct Wall
{
int row;//表示墙在哪行
int left;
int right;
}; int col[105];//保存每列的墙数
vector<Wall> wall; int main()
{
int t,n,k,ax,ay,bx,by;
scanf("%d",&t);
while(t--)
{
wall.clear();
memset(col,0,sizeof(col));
scanf("%d%d",&n,&k);
int maxright=0;
int cnt=0;
while(n--)
{
scanf("%d%d%d%d",&ax,&ay,&bx,&by);
if(ax>bx)
swap(ax,bx);//有可能先输入墙的右端点
if(bx>maxright)
maxright=bx; Wall temp;
temp.row=ay; temp.left=ax; temp.right=bx;
wall.push_back(temp);
for(int i=ax;i<=bx;i++)
col[i]++;
}
int maxt;
for(int i=0;i<=maxright;i++)
{//前面maxright记录了所有墙中的最右端,这样遍历的时候,在maxright结束即可
while(col[i]>k)
{//遍历每列,当该列的墙数>k,说明需要删墙了
vector<Wall>::iterator it=wall.begin();//遍历迭代器
vector<Wall>::iterator iter;//临时迭代器
maxt=0;
while(it!=wall.end())
{//把右边界最大(right大于maxt)的墙(用iter记录)删掉(erase vector元素wall中的第iter个元素)
if((*it).left<=i)
{
if((*it).right>maxt)
{
maxt=(*it).right;
iter=it;
}
}
it++;
}
for(int j=(*iter).left;j<=(*iter).right;j++)
col[j]--;//删掉墙相关的记录
wall.erase(iter);//删掉墙
cnt++;
}
}
printf("%d\n",cnt);
}
return 0;
}

POJ 1230 Pass-Muraille#贪心+vector迭代器用法的更多相关文章

  1. vector迭代器用法

    #include<iostream> #include<vector> using namespace std; int main() { vector<int> ...

  2. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

  3. C++ Iterator迭代器介绍及Iterator迭代器用法代码举例

    C++ Iterator迭代器介绍 迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针.举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历.有这么几种迭代器如下: 迭代 ...

  4. C++ set用法以及迭代器用法

    有关set的一些常用函数 1.begin() / end() 返回首/尾元素迭代器 2.rbegin() / rend() 返回尾/首元素反向迭代器,反向迭代器可以反向遍历容器的迭代器,从下面的程序已 ...

  5. STL中的Vector相关用法

    STL中的Vector相关用法 标准库vector类型使用需要的头文件:#include <vector>. vector 是一个类模板,不是一种数据类型,vector<int> ...

  6. STL vector常见用法详解

    <算法笔记>中摘取 vector常见用法详解 1. vector的定义 vector<typename> name; //typename可以是任何基本类型,例如int, do ...

  7. C++vector迭代器失效的问题

    转载:http://blog.csdn.net/olanmomo/article/details/38420907 转载:http://blog.csdn.net/stpeace/article/de ...

  8. vector迭代器失效的一种情形

    使用过STL的人都应该知道关于迭代器失效的原理,这里以后vector迭代器失效为例: 第一种:当插入一个元素到vector中,如果插入后容器已满,那么容器将新开辟一块内存区域,然后 将原内存中的数据拷 ...

  9. POJ 3190 Stall Reservations贪心

    POJ 3190 Stall Reservations贪心 Description Oh those picky N (1 <= N <= 50,000) cows! They are s ...

随机推荐

  1. CHD 2015迎新杯题解

    A.预防流感的拉面女神 简析:计算 n 的二进制表示里面 1 的个数 #include <cstdio> #include <cstring> #include <alg ...

  2. NTSC色域(CIE1931)计算公式

    色域(CIE1931)=ABS(RC[-6]*RC[-3]+RC[-4]*RC[-1]+RC[-2]*RC[-5]-RC[-6]*RC[-1]-RC[-4]*RC[-5]-RC[-2]*RC[-3]) ...

  3. c# base和this在构造函数中的应用

    构造函数可以使用 base 关键字来调用基类的构造函数.例如: public class Manager : Employee{ public Manager(int annualSalary) : ...

  4. Fedora24 升级到25

    1 安装dnf-plugin-system-upgrade dnf install dnf-plugin-system-upgrade 2 更新软件包 dnf system-upgrade downl ...

  5. digitalocean Vultr Linode 三家海外vps最新真实情况

    中国有大批用户,在使用海外vps服务器.好处是不言而喻的:性价比高.带宽大.免备案.可搭梯子,没有后门监控. 有趣的是,每一年的周期观察,都能发现海外vps对中国大陆的线路速度.可用性变化.过去速度快 ...

  6. 使用canvas实现超绚丽的旋转正方形

    自己无意中的一个小"bug",却让动画变得超绚丽= = 所以,不要害怕出bug,谁知道bug不会开出一朵绚丽的花呢? <!DOCTYPE html> <html ...

  7. Front-End(二)——HTML

    本文主要对html迭代学习中的要点.冷点简述罗列. html之前也说过,主要为了描述页面的结构和内容,合理使用结构化的标签,<h1>.<div>等,有利于前端开发,也有利于搜索 ...

  8. 5754Life Winner Bo

    给定一个n*m的矩阵,有四种棋子(国际象棋的王,王后,骑士,车).起点在(1,1)先走到(n,m)获胜. 分析:车是nim博弈.王后是威佐夫博弈.王和骑士写两个1000*1000的预处理即可. hdu ...

  9. Linux的一些简单命令(四)-用户和组账户管理

    linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源.系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰 1.保存用户信息的文件:/etc/ ...

  10. .Net 生成二维码【超简易,仅供学习】

    1,首先下载DotNetBarcode.dll文件 下载地址: http://dl.downyi.com/dotnetbarcode_dll.rar 2,调用方式 string path = @&qu ...