排序+逆向思维 ACdream 1205 Disappeared Block
/*
从大到小排序,逆向思维,从最后开始考虑,无后向性
每找到一个没被淹没的,对它左右的楼层查询是否它是孤立的,若是++,若不是--
复杂度 O(n + m),还以为 O(n^2)吓得写了一半就不写了
*/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <string>
using namespace std; const int MAXN = 1e6 + ;
const int INF = 0x3f3f3f3f;
struct Hight
{
int val, id;
}h[MAXN];
int q[MAXN];
int vis[MAXN];
int ans[MAXN]; bool cmp(Hight a, Hight b)
{
return a.val > b.val;
} int main(void) //ACdream 1205 Disappeared Block
{
//freopen ("J.in", "r", stdin); int t;
int n, m; scanf ("%d", &t);
int cas = ;
while (t--)
{
memset (vis, , sizeof (vis));
scanf ("%d%d", &n, &m);
for (int i=; i<=n; ++i)
{
scanf ("%d", &h[i].val);
h[i].id = i;
}
for (int i=; i<=m; ++i) scanf ("%d", &q[i]); sort (h+, h++n, cmp); int cnt = ; int res = ;
for (int i=, j=m; j>=; --j)
{
for (; i<=n; ++i)
{
if (h[i].val <= q[j]) break;
int pos = h[i].id;
vis[h[i].id] = ;
if (!vis[pos-] && !vis[pos+]) res++;
if (vis[pos-] && vis[pos+]) res--;
}
ans[j] = res;
}
printf ("Case #%d: ", ++cas);
for (int i=; i<=m; ++i) printf ("%d%c", ans[i], (i==m) ? '\n' : ' ');
} return ;
} /*
Case #1: 1 1 2
Case #2: 1 2 1 1 0
*/
排序+逆向思维 ACdream 1205 Disappeared Block的更多相关文章
- iOS-Block总结 && 全面解析逆向传值
1.block的特点: block是C语言: block是一种数据类型.可以当做参数,也可以用做返回值:--总之,对比int的用法用即可(当然,定义的时候,最好跟函数对比): ...
- [转]iOS代码块Block
代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返回值,特殊地,Block还可以保存一段代码,在需要 ...
- magento 产品列表排序、分页功能
我们以 catalog_category_layered 控制器为例说明 在catalog.xml 找到catalog_category_layered配置段 <catalog_category ...
- ios Block详解
一. iOS代码块Block 1.1 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返回值, ...
- 一篇文章看懂iOS代码块Block
block.png iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返 ...
- ClickHouse源码笔记6:探究列式存储系统的排序
分析完成了聚合以及向量化过滤,向量化的函数计算之后.本篇,笔者将分析数据库的一个重要算子:排序.让我们从源码的角度来剖析ClickHouse作为列式存储系统是如何实现排序的. 本系列文章的源码分析基于 ...
- ubifs概述
UBIFS无排序区块图像文件系统(Unsorted Block Image File System, UBIFS)是用于固态存储设备上,并与LogFS相互竞争,作为JFFS2的后继文件系统之一.真正开 ...
- 浅析Hadoop文件格式
Hadoop 作为MR 的开源实现,一直以动态运行解析文件格式并获得比MPP数据库快上几倍的装载速度为优势.不过,MPP数据库社区也一直批评Hadoop由于文件格式并非为特定目的而建,因此序列化和反序 ...
- Ensemble Learning 之 Gradient Boosting 与 GBDT
之前一篇写了关于基于权重的 Boosting 方法 Adaboost,本文主要讲述 Boosting 的另一种形式 Gradient Boosting ,在 Adaboost 中样本权重随着分类正确与 ...
随机推荐
- Entity Framework在SaveChanges()之前拿到对象的自增长ID
现有两张表A.B在一个dbContext中更新,且A表的ID为B的外键, Insert(A); B.aid=A.ID; Insert(B); SaveChanges() 按照这个顺序就可以了满足要求, ...
- 入侵检测课设之Libnids开发包
Libnids开发包介绍 Libnids是一个用于网络入侵检测开发的专业编程接口,它使用了Libpcap所以它具有捕获数据包的功能.同时,Libnids提供了TCP数据流重组功能,所以对于分析 ...
- 7 Types of Regression Techniques you should know!
翻译来自:http://news.csdn.net/article_preview.html?preview=1&reload=1&arcid=2825492 摘要:本文解释了回归分析 ...
- swiper组件实现向上翻页时缩小
var mySwiper = new Swiper ('.swiper-container', { direction: 'vertical', loop: true, // 如果需要前进后退按钮 n ...
- win8系统使用Administrator用户 命令行
windows键+X,再按A键进入管理员模式的命令提示符 输入命令:net user administrator /active:yes 然后注销,即可使用管理员账户登录
- centos下安装五笔输入法的教程
[root@ok ~]# yum update [root@ok ~]# yum install ibus-table-chinese-wubi-haifeng 以上两步已经成功!! #yum ins ...
- error: insufficient permissions for device: verify udev rules
error: insufficient permissions for device: verify udev rules.See [http://developer.android.com/tool ...
- Ubuntu和windows共享文件夹
参考文章: http://www.cnblogs.com/zhengyuxin/articles/1938414.html
- JS图片延迟加载分析及简单的demo
JS图片延迟加载 图片延迟加载也称 "懒加载",通常应用于图片比较多的网页,比如 "美丽说首页","蘑菇街"等一些导购网站上用的比较多,或者 ...
- oracle 10g 学习之基本 SQL SELECT 语句(4)
本篇文章中,对于有的和MSSQL Server相同的语法我就没有再写了,这里我只写Oracle和MSSQL Server有点不同的 定义空值 l 空值是无效的,未指定的,未知的或不可预知的值 l ...