hfut 1287
http://acm.hfut.edu.cn/OnlineJudge/
中文题。
区间线段树,需要剪枝。n的大小有问题。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath> using namespace std;
#define ls rt<<1
#define rs rt<<1|1
#define lson l, m, rt<<1
#define rson m + 1, r, rt<<1|1
const int inf = 0x3f3f3f3f;
const int maxn = 2e4 + ; struct SegTree{
int maxv, minv;
int lx, rx, sumx;//该区间左边是否被淹,右边,总的小岛数
}seg[maxn << ];
struct Node{
int h, id;
}q[maxn];
int a[maxn]; void build(int l, int r, int rt){
seg[rt].lx = seg[rt].rx = seg[rt].sumx = ;
if (l == r){
seg[rt].maxv = seg[rt].minv = a[l];
return ;
}
int m = (l + r) >> ;
build(lson);
build(rson);
seg[rt].maxv = max(seg[ls].maxv, seg[rs].maxv);
seg[rt].minv = min(seg[ls].minv, seg[rs].minv);
}
void pushUp(int rt){
seg[rt].sumx = seg[ls].sumx + seg[rs].sumx - (seg[ls].rx & seg[rs].lx);
seg[rt].lx = seg[ls].lx;
seg[rt].rx = seg[rs].rx;
seg[rt].minv = min(seg[ls].minv, seg[rs].minv);//
}
void update(int h, int l, int r, int rt){
if (h < seg[rt].minv) return;
if (h >= seg[rt].maxv){
seg[rt].minv = inf;//这句表明接下来的h对这个区间都不会再有影响,相当于减掉了这个区间否则tle
seg[rt].rx = seg[rt].lx = seg[rt].sumx = ;
return ;
}
int m = (l + r) >> ;
update(h, lson);
update(h, rson);
pushUp(rt);
}
bool cmp(Node a, Node b){
return a.h < b.h;
}
int ans[maxn];
int main(){
int n, m;
scanf("%d", &n);
for (int i = ; i <= n; ++i){
scanf("%d", &a[i]);
}
build(, n, );
scanf("%d", &m);
for (int i = ; i < m; ++i){
scanf("%d", &q[i].h);
q[i].id = i;
}
sort(q, q + m, cmp);
for (int i = ; i < m; ++i){
update(q[i].h, , n, );
ans[q[i].id] = seg[].sumx;
}
for (int i = ; i < m; ++i){
printf("%d\n", ans[i]);
}
return ;
}
hfut 1287的更多相关文章
- mysql中,ENCODE警告---Warning Code : 1287
mysql中,ENCODE警告 共 1 行受到影响, 1 个警告 执行耗时 : 0.072 sec传送时间 : 0.001 sec总耗时 : 0.073 sec Warning Code : 1287 ...
- 矩阵乘法 codevs 1287 矩阵乘法
1287 矩阵乘法 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象 ...
- POJ 1287 Networking (最小生成树)
Networking Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit S ...
- Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)
1287 矩阵乘法 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 小明最近在为线性代数而头疼, ...
- Codevs No.1287 矩阵乘法
2016-06-01 16:53:23 题目链接: 矩阵乘法 (Codevs No.1287) 题目大意: 给你两个可乘矩阵a,b,求a*b 解法: 定义....... //矩阵乘法 (Codevs ...
- POJ 1287 Networking
题目链接: poj.org/problem?id=1287 题目大意: 你被分派到去设计一个区域的连接点,给出你每个点对之间的路线,你需要算出连接所有点路线的总长度. 题目输入: 一个数字n 代表有 ...
- CODEVS 1287 矩阵乘法
1287 矩阵乘法 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊) ...
- ZOJ1372 POJ 1287 Networking 网络设计 Kruskal算法
题目链接:problemCode=1372">ZOJ1372 POJ 1287 Networking 网络设计 Networking Time Limit: 2 Seconds ...
- POJ 1287:Networking(最小生成树Kruskal)
id=1287">Networking Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5976 Acce ...
随机推荐
- Linux使用dd命令快速生成大文件(转)
dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...
- iOS 程序进入后台,包含用户上拉快捷菜单导致程序失去活跃的研究
今日在使用某App时候,突然发现上拉菜单.程序视频扔在播放,咦!引起了我的兴趣. 首先,列出两个方法, 第一个方法是AppDelegate的代理.当程序进入后台时候调用 - (void)applica ...
- 【Oracle】查找每期数据都存在的产品
现在存在以下数据 如上图:A01与A02同时存在201710.201711.201712中 我们现在要将其查找出来 如果上图的表结构如下: 那么查询的SQL如下: SELECT DISTINCT CO ...
- 每日一个机器学习算法——adaboost
在网上找到一篇好文,直接粘贴过来,加上一些补充和自己的理解,算作此文. My education in the fundamentals of machine learning has mainly ...
- js中数组的splice()方法
在数组中splice方法有增.删.该的多功能用处. var list = []; list.push(1); list.push(2); list.push(3); console.log(list) ...
- Quartz.net基于数据库的任务调度管理(Only.Jobs)
一 前言: 各大调度组件优缺点在这就不讨论了,使用Quartz.net是因为它可以执行秒级任务. Only.Jobs 项目通过将各Job存储在数据库中,启动一个专门的Job管理任务来循环调度各Job的 ...
- android推送方式
本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息. ...
- JDK1.9环境变量配置
JAVA_HOME C:\Program Files\Java\jdk-9.0.1 JRE_HOME C:\Program Files\Java\jre-9.0.1 PATH .;%JAVA_HOME ...
- unity, 由于project settings中time scale变成0导致动画不播放
在Mac和iOS间多次switch platform之后,忽然发现开始scene的动画不播了.进入游戏后再切回来动画恢复正常. 检查了scene的逻辑,发现没有任何问题.删除了Temp和Library ...
- HTML里面的文本标签
以下就是重要的标签: <html></html> 创建一个HTML文档,是网页源码的開始符和结束符,每一个网页的源码必然是以这两个标签開始和结束. <head>&l ...