博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tallest Cow(POJ3263)
阅读量:6914 次
发布时间:2019-06-27

本文共 926 字,大约阅读时间需要 3 分钟。

Tallest Cow(POJ3263)

给出N头牛的身高,和M对关系(ai与bi可以相互看见。即他们中间的牛都比他们矮)。已知最高的牛为第P头,身高为H。求每头牛的身高最大可能是多少。( \(1 \leq N,M \leq 10^4, 1 \leq H \leq 10^6\) )

输入样例:

9 3 5 5

1 3
5 3
4 3
3 7
9 8

输出样例:

5

4
5
3
4
4
5
5
5

分析:

朴素解法:数组C初始化0 ,ai与bi之间的数减一 最后设C[P] = 0 即Hi = H+C[i] \(O(NM)\)

前缀和:把对一个区间的操作转化为左右两个端点的操作,再通过前缀和得到原问题的解

​ 数组D初始化0,D[ai+1]-=1,D[bi]+=1 最后 \(C[i] = \sum_{j=1}^iD[j]\) \(O(N+M)\)

题解:

#include
#include
using namespace std;map
,bool> existed; //处理重复的成对关系int c[10010],d[10010];int main(){ int n,p,h,m; cin>>n>>p>>h>>m; for(int i=1;i<=m;i++){ int a,b,t; cin>>a>>b; if(a>b){t=a;a=b;b=t;} if(existed[make_pair(a,b)])continue; d[a+1]--;d[b]++; existed[make_pair(a,b)] = true; } for(int i=1;i<=n;i++){ c[i] = c[i-1] + d[i]; cout<
<

转载于:https://www.cnblogs.com/wendiudiu/p/10762178.html

你可能感兴趣的文章
小册笔记
查看>>
mongoDB高级查询这一篇就够了
查看>>
js节流和防抖
查看>>
MySQL学习笔记之三排序和过滤
查看>>
VUE 使用笔记
查看>>
(转)Android studio 多渠道打包(超简洁版)
查看>>
你好!未来的我
查看>>
iOS 【奇巧淫技】获取webView内容高度
查看>>
阿里云CentOS MYSQL无法访问3306端口解决方案之一(不建议)
查看>>
java基础-多线程初步了解
查看>>
零基础微信开发之自动回复电影
查看>>
spring Cloud Gateway 入门简单使用
查看>>
SpringBoot源码解析-内嵌Tomcat容器的启动
查看>>
Flow_学习笔记
查看>>
阿里Java面试题剖析:关于系统拆分,为什么要进行系统拆分?
查看>>
Application 详解
查看>>
玩转Kotlin- 实现方法队列 ,顺序执行
查看>>
朋友,这里有个仓库需要你 PR 一下
查看>>
nginx-kafka 数据采集
查看>>
js把URL转成对象 对象转换成URL
查看>>