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 ...
随机推荐
- Acer商祺x4610安装及使用
一年前心血来潮买了部Acer商祺x4610,这两天把它装起来,记录下过程以备忘. 首先装操作系统,我装的是XP,这款电脑比较贴心的是开机时按住F12可以选择光盘还是硬盘启动,就不用到BIOS里面设置启 ...
- 详解Python中的迭代器和使用
对于一个列表,a = [1, 2, 3, 4],我们最常见的遍历方式就是: a = [1, 2, 3, 4] for item in a: print item 这里我们研究一种新的方式,就是迭代器. ...
- Ubuntu 11.04 (Natty) 已经停止支持 但可以使用old-releases源了
Ubuntu 11.04 (Natty) 已经停止支持,但可以使用old-releases源了,先备份源列表文件: sudo cp /etc/apt/sources.list /etc/apt/sou ...
- 【Python3 爬虫】16_抓取腾讯视频评论内容
上一节我们已经知道如何使用Fiddler进行抓包分析,那么接下来我们开始完成一个简单的小例子 抓取腾讯视频的评论内容 首先我们打开腾讯视频的官网https://v.qq.com/ 我们打开[电视剧]这 ...
- hdu1010 dfs+路径剪枝
题意:用一个案例来解释 4 4 5 S.X. ..X. ..XD .... 在这个案例中,是一个4*4的地图. . 表示可走的地方, X 表示不可走的地方,S表示起始点,D表示目标点.没走到一个点之后 ...
- Jmeter-性能测试(三)
一.调通脚本(以json串Post接口为例)添加聚合报告(线程组->添加->监听器->聚合报告)并调试好需要压测的脚本,如下已经调通的P_C_B151就是我需要压测的脚本 二.设置场 ...
- C#创建一个Window服务
Window服务介绍 Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示 ...
- JS倒计时效果
[html] <div id="time"></div> <script> var pad = function(num){ return nu ...
- table行编辑
一个简单的Demo <html> <head> <title>Table Test Demo</title> <style> .view_t ...
- [转]实用教程:搭建FTP服务器以实现局域网飞速传输文件
原文地址:https://www.ithome.com/html/win10/304059.htm 相信很多人都面临过这样的问题:一个局域网下有很多设备,我们想在这些设备之间互传文件,有些文件非常大, ...