Pla
Pla(jdoj1006)
题目大意:给你n个矩形,并排放在一起,你的目的是将所有的矩形全部染色。你每次染的形状为一个矩形,问:最少需要染多少次?
注释:n<=10^6,wi , hi<=2^31-1,其中,wi和hi分别是矩形的宽和高。
想法:第一想法是贪心,显然是不对的。在此,我们介绍一种数据结构——单调栈。顾名思义,就是维护栈里的元素是单调的。那么,在本题中,我们维护一个单调栈,每次加入一个数,判断栈顶,如果栈顶大于该数,则弹出,贡献+1,如果小于等于该数,则将该数压如栈内。最后,统计栈内元素个数,相同高度视为一种元素,贡献+=元素个数。
下面,我们证明,为什么这玩意儿是对的。
首先,先观察每次操作。如果压入的元素小于栈顶,我们设栈顶元素为h,除栈顶外的第一个元素的高度是 h - a ,想压入的元素的高度为 h - b ,那么,无论如何,栈顶高度的 min ( a , b ) 必须需要一次单独的染色。所以,这时,对于答案的贡献+1。然后,将栈顶元素的 a 染色,此时,剩余的高度与除栈顶外的第一个元素的高度是相同的,我们将它们视为一个元素,即——弹出。以此类推...最后,我们在栈中剩下的元素都是不相同的,这样,必须在需要元素个数次染色。
最后,附上丑陋的代码......
#include <iostream>
#include <cstdio>
using namespace std;
int a[];
int top=;
int main()
{
int n;
int w,h;//宽与高,显然发现,宽在本题中是没有地位的
scanf("%d",&n);
int ans=;
for(int i=;i<=n;i++)
{
scanf("%d%d",&w,&h);
a[++top]=h;//存高
while()//将元素压入栈中,并执行我们已经证明过的操作。
{
if(a[top]>a[top-]) break;
else if(a[top]-a[top-]==)//在相等时,我们只需把栈顶元素弹出即可
{
top--;
}
else
{
top--;
a[top]=h;
ans++;
}
}
}
printf("%d",ans+top);//统计栈内剩余元素个数,即可
return ;
}
小结:错误
1.没有判断相等,但不至于爆蛋。
2.一直在裸贪心,不会转换想法。
3.这与NOIP の某道T1类似,但是那道题被我dp驶过,不赘述。
转载请注明:http://www.cnblogs.com/ShuraK/p/7853155.html
Pla的更多相关文章
- BZOJ 1113: [Poi2008]海报PLA
1113: [Poi2008]海报PLA Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1025 Solved: 679[Submit][Statu ...
- 【BZOJ-1113】海报PLA 单调栈
1113: [Poi2008]海报PLA Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 896 Solved: 573[Submit][Status ...
- Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法
最近在跟台大的这个课程,觉得不错,想把学习笔记发出来跟大家分享下,有错误希望大家指正. 一机器学习是什么? 感觉和 Tom M. Mitchell的定义几乎一致, A computer program ...
- BZOJ1113 海报PLA
好像是很古老的题?现在BZOJ上找不到该题,所以没有提交. 1113: [Poi2008]海报PLA Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 8 ...
- Python实现PLA(感知机)
Python实现PLA(感知机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end o ...
- 感知器算法PLA
for batch&supervised binary classfication,g≈f <=> Eout(g)≥0 achieved through Eout(g)≈Ein(g ...
- Perceptron Learning Algorithm (PLA)
Perceptron - 感知机,是一种二元线性分类器,它通过对特征向量的加权求和,并把这个”和”与事先设定的门槛值(threshold)做比较,高于门槛值的输出1,低于门槛值的输出-1.其中sign ...
- 机器学习真的可以起作用吗?(3)(以二维PLA为例)
前两篇文章已经完成了大部分的工作,这篇文章主要是讲VC bound和 VC dimension这两个概念. (一)前文的一点补充 根据前面的讨论,我们似乎只需要用来替代来源的M就可以了,但是实际公式却 ...
- 机器学习真的可以起作用吗?(2)(以二维PLA算法为例)
一个问题:大多数情况下,M(hypothesis set的大小)是无穷大的,例如PLA算法.那么是不是我们的原则1就不能使用了? 我们试着做一些努力: Step1:寻找hypothesis set的e ...
- 线性模型(1):Perceptron Learning Algorithm (PLA)
此笔记源于台湾大学林轩田老师<机器学习基石><机器学习技法> (一) PLA算法是基本的binary Classification算法. 一个基本的问题是,对于银行,假设我知道 ...
随机推荐
- JavaScript获取当前日期
JavaScript获取当前日期 具体实现如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- Flex中获取RadioButtonGroup中的RadioButton的值
Flex中获取RadioButtonGroup中的RadioButton的值 1.设计源码 <?xml version="1.0" encoding="utf-8& ...
- 21个DOS常用命令
DOS,可别不知道DOS在哪里运行,有好几种方法1.开始菜单---程序---附件---命令提示符2.开始菜单---运行---打命令CMD 一.常用DOS命令(1)cd.. ...
- 使用everything把一个文件夹里(包含子目录)的所有图片拷贝到另一个文件夹
最近在找数据集,想要预览数据集里面的全部图片,而因为一些数据集的数据存储方式使得图片都分布在若干层后的子文件里,所以就需要一个如题所示的功能. 找了一堆XCOPY命令的使用方法,差点要撸起袖子写代码干 ...
- 关于js中 toFixed()的一个小坑
作为一名前端,大家都应该知道,toFixed()的作用,toFixed()经常用于前台与后台数据格式的转换,套用下w3c上面的定义: 定义和用法toFixed(n) 方法可把 Number 四舍五入为 ...
- Hibernate【与Spring整合】
前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernate整合的关键点: SessionFact ...
- Directory Opus(DO) 11破解版安装方法(转)
DO11原版下载 32位:http://www.gpsoft.com.au/DScripts/download.asp?file=Opus11/DOpusInstall.exe 64位:http:// ...
- Windows系统还原失败心得
最近我的Windows10连续几天出现了蓝屏,怀疑是某软件的Bug造成的,于是想用系统还原功能回到前一段时间,我找到了那款软件安装的时间. 到了选择还原点界面,发现有5个还原点,最旧的一个刚好就是那款 ...
- docker进阶-初探Docker-compose
什么是Docker-compose compose 翻译成中文的意思是"构成"和"组成"的意思.Docker我之前把他比作一个大轮船,这个轮船上面可以放很多 ...
- [BZOJ1006] [HNOI2008] 神奇的国度 (弦图)
Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系 ...