洛谷【P2003】平板
我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html
题目传送门:https://www.luogu.org/problemnew/show/P2003
我们先来灵性地怼一波出题人:
首先他在题目描述的第一段的最后一句话如是说道:“任意一平板的两端必需有支柱或者它在另一块平板上。”
意思就是如果某块板子搭在另一块板子上,那么就可以省去一个脚的柱子。
然后他在输入格式中如是说:“输入保证任意两块平板间没有重叠部分。”
然后我没仔细看题目描述,就以为不可能有板子重叠……所以我直接按高度排序在低于它的板子里找下面一块了……
然后狂\(Wa\)不止。不过机智如我,想到自己经常漏读题面然后就去反复读了几遍题面。
然后机房传出一声惨叫:
傻逼出题人傻逼出题人傻逼出题人
我\(TM\)题面看错了!
所以正确做法是\(n^2\)暴力去找对于每一块板子高度小于等于当前板子并且可以支撑当前板子的某半部分的最高板子。把柱子高度累加起来就可以了。
时间复杂度:\(O(n^2)\)
空间复杂度:\(O(n)\)
代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
int n,ans;//n块板子,ans累计柱子高度
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}//快读
struct lines {
int x1,x2,y;
bool operator<(const lines &a)const {
return y>a.y;
}
}q[105];//存板子
int main() {
n=read();
for(int i=1;i<=n;i++)
q[i].y=read(),q[i].x1=read(),q[i].x2=read();
q[n+1].y=0,q[n+1].x1=0,q[++n].x2=10001;//加一块高度为0的极长的板子方便统计柱子到地上的柱子高度
sort(q+1,q+n+1);//按高度排序
for(int i=1;i<n;i++) {
for(int j=1;j<=n;j++)
if(q[j].y<=q[i].y&&i!=j)
if(q[j].x1<=q[i].x1&&q[i].x1<q[j].x2) {
ans+=q[i].y-q[j].y;break;
}//找左边的柱子落脚点,break是因为排过序后后面的板子显然不优
for(int j=1;j<=n;j++)
if(q[j].y<=q[i].y&&i!=j)
if(q[j].x1<q[i].x2&&q[i].x2<=q[j].x2) {
ans+=q[i].y-q[j].y;break;
}//找右边柱子落脚点
}printf("%d\n",ans);
return 0;
}
洛谷【P2003】平板的更多相关文章
- 题解【洛谷P2003】平板
题面 由于本题中\(n\)很小,\(\Theta(n^2)\)的暴力也可以通过. 具体可参照洛谷题解区 #include <bits/stdc++.h> #define itn int # ...
- 洛谷P1283 平板涂色 &&一本通1445:平板涂色
题目描述 CE数码公司开发了一种名为自动涂色机(APM)的产品.它能用预定的颜色给一块由不同尺寸且互不覆盖的矩形构成的平板涂色. 为了涂色,APM需要使用一组刷子.每个刷子涂一种不同的颜色C.APM拿 ...
- 【题解】洛谷P1283 平板涂色(搜索+暴力)
思路 看到n<16 整个坐标<100 肯定想到暴力啊 蒟蒻来一发最简单易懂的题解(因为不会DP哈 首先我们用map数组来存坐标图 注意前面的坐标需要加1 因为输入的是坐标 而我们需要的是格 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
随机推荐
- One Person Game(概率+数学)
There is a very simple and interesting one-person game. You have 3 dice, namelyDie1, Die2 and Die3. ...
- EasyDSS直播服务器如何帮助用户解决OBS不能同时同步输出多路直播流到直播平台、CDN平台的限制
最近有用户突然寻求帮助,大概的意思就是说: 他需要同步将桌面的直播同时RTMP发布到:斗鱼.熊猫TV等等多个平台,但是OBS又只能同时采集并发布推流直播到单一个平台,而且有时候在4G或者网络比较差的情 ...
- php自定义函数: 加密下载地址
function getdownurl($downurl, $extime = "3600", $serverid = 1) { if (empty($downurl)) { re ...
- PHPUnit学习记录
今天是2017-1-17号,昨晚收到邮件,被view code之后,基本全部需要重构,其实我写得php代码里面完全是东拼西凑的代码,自己都不知道什么意思,今天被要求学习PHPUnit了 ------- ...
- let和var以及const有什么区别
在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. for(var i=0;i&l ...
- Tomcat的Server.xml虚拟主机和虚拟目录的配置
以前开发JavaEE网站都布置在Tomcat下,布置目录一般为$CATALINA_HOME/webapps/WebName,所以要访问网站,则在http://localhost后必须要加上上下文路径( ...
- 《程序员代码面试指南》第三章 二叉树问题 遍历二叉树的神级方法 morris
题目 遍历二叉树的神级方法 morris java代码 package com.lizhouwei.chapter3; /** * @Description:遍历二叉树的神级方法 morris * @ ...
- 三维bfs
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- java深入探究07-jdbc上
1.连接数据库三种方式 //连接数据库的URL private String url = "jdbc:mysql://localhost:3306/day17"; // jdbc协 ...
- Blog迁移至Jekyll
后续的Blog都将在 http://zhwbqd.github.io/ 为您呈现