hfut 1287
2024-10-20 07:31:51
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 ;
}
最新文章
- yousa_team团队项目 兼职平台 完成展示
- Marvel – 将图像和源文件转换成互动,共享的原型
- 使用SBT构建Scala应用(转自git)
- php正则:匹配(),{},[]小括号,大括号,中括号里面的内容
- NodeJS文件读取:感恩常在--抓把糖果,愉悦客人
- 使用libevent进行多线程socket编程demo
- Keil C51 Data Overlaying
- tomcat 下部署单框架cas时,报出org.apache.jasper.JasperException异常的解决办法
- 随机算法 poj 2576 Tug of War
- Python之shutil模块(复制移动文件)
- abp添加动态菜单
- [Kubernetes]如何使用yaml文件使得可以向外暴露服务
- Linux 文档与目录结构
- Ex 6_18 硬币有限的兑换问题_第七次作业
- 神经网络写诗(charRNN)
- dovecot--查询未读邮件个数
- 用newLISP通过SMTPserver发送邮件
- CGI PL PERL脚本 提权
- iptables配置允许mysql远程访问
- qsort函数、sort函数