AcWing 101. 最高的牛 (差分) 打卡
有 NN 头牛站成一行,被编队为1、2、3…N,每头牛的身高都为整数。
当且仅当两头牛中间的牛身高都比它们矮时,两头牛方可看到对方。
现在,我们只知道其中最高的牛是第 PP 头,它的身高是 HH ,剩余牛的身高未知。
但是,我们还知道这群牛之中存在着 MM 对关系,每对关系都指明了某两头牛 AA 和 BB 可以相互看见。
求每头牛的身高的最大可能值是多少。
输入格式
第一行输入整数N,P,H,MN,P,H,M,数据用空格隔开。
接下来M行,每行输出两个整数 AA 和 BB ,代表牛 AA 和牛 BB 可以相互看见,数据用空格隔开。
输出格式
一共输出 NN 行数据,每行输出一个整数。
第 ii 行输出的整数代表第 ii 头牛可能的最大身高。
数据范围
1≤N≤100001≤N≤10000,
1≤H≤10000001≤H≤1000000,
1≤A,B≤100001≤A,B≤10000,
0≤M≤100000≤M≤10000
输入样例:
9 3 5 5
1 3
5 3
4 3
3 7
9 8
输出样例:
5
4
5
3
4
4
5
5
5
注意:
- 此题中给出的关系对可能存在重复
题意:让牛的身高尽可能大
思路:首先我们肯定是由最高的那头牛来推出其他牛,身高为了保证尽可能高,所以我们让身高每次减一,每对关系其实说明一个事情,那对关系中间的牛都要比这两个牛矮
思路一:
我们可以把所有牛初始身高设为h,然后每给一对关系我们都区间-1,最后得出答案
思路二
我们差分算区间-1,然后最后把差值加上h就是答案
#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
using namespace std;
typedef long long ll;
struct sss
{
int x,y;
}a[maxn];
ll n,p,h,m,num,d[maxn];
map<ll,ll> mp[];
ll c[maxn];
int main()
{
cin>>n>>p>>h>>m;
ll x,y;
for(int i=;i<m;i++){
cin>>x>>y;
if(mp[x][y]||mp[y][x]) continue;
if(x>y){
int t=x;
x=y;
y=t;
}
a[num].x=x;
a[num++].y=y;
mp[x][y]=;
mp[y][x]=;
}
for(int i=;i<num;i++){
d[a[i].x+]--;
d[a[i].y]++;
}
for(int i=;i<=n;i++){
c[i]=c[i-]+d[i];
cout<<c[i]+h<<"\n";
}
}
AcWing 101. 最高的牛 (差分) 打卡的更多相关文章
- Acwing-101-最高的牛(差分)
链接: https://www.acwing.com/problem/content/103/ 题意: 有 N 头牛站成一行,被编队为1.2.3-N,每头牛的身高都为整数. 当且仅当两头牛中间的牛身高 ...
- bzoj 1635: [Usaco2007 Jan]Tallest Cow 最高的牛——差分
Description FJ's N (1 <= N <= 10,000) cows conveniently indexed 1..N are standing in a line. E ...
- 【ACwing 100】InDec序列——差分
(题面来自AcWing) 给定一个长度为 n 的数列 a1,a2,-,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样, ...
- Acwing:102. 最佳牛围栏(前缀和 + 二分)
农夫约翰的农场由 NN 块田地组成,每块地里都有一定数量的牛,其数量不会少于1头,也不会超过2000头. 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最 ...
- AcWing 407. 稳定的牛分配
大型补档计划 题目链接 题目看的有点晕(语文差) 总体来说就是让每头牛找个谷仓,不能超过容量,最小化每头牛在的谷仓在自己心目中排名的极差. 显然这个最优性问题不好做,但是转换为判定性问题这就是一个标准 ...
- AcWing 142. 前缀统计 字典树打卡
给定N个字符串S1,S2…SNS1,S2…SN,接下来进行M次询问,每次询问给定一个字符串T,求S1S1-SNSN中有多少个字符串是T的前缀. 输入字符串的总长度不超过106106,仅包含小写字母. ...
- AcWing 138. 兔子与兔子 hash打卡
很久很久以前,森林里住着一群兔子. 有一天,兔子们想要研究自己的 DNA 序列. 我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母). 然后我们每 ...
- 2018牛客网暑期ACM多校训练营(第二场)J Farm(树状数组)
题意 n*m的农场有若干种不同种类作物,如果作物接受了不同种类的肥料就会枯萎.现在进行t次施肥,每次对一个矩形区域施某种类的肥料.问最后枯萎的作物是多少. 分析 作者:xseventh链接:https ...
- BZOJ 4205: 卡牌配对
4205: 卡牌配对 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 173 Solved: 76[Submit][Status][Discuss] ...
随机推荐
- 树莓派GPIO口驱动编写
一.wiringpi写法 #include <wiringPi.h> #include <stdlib.h> int main(int argc,char *argv[]) { ...
- [CSP-S模拟测试]:影子(并查集+LCA)
题目描述 一个人有很多的影子,新的旧的,他们不断消失重来.学者的影子在他苍白色的精神图景里成为了$n$个黑色的点,他们伸长的触手交叉形成了一颗黑色的树.假使每个影子点拥有一个权值$d_i$,黑色的树边 ...
- HTML中多媒体标签技术说明
在纯文本的HTML页面中加入图片,给原来单调乏味的页面添加生气.HTML语言中利用<IMG>标记插入图片. 1.图片标记<IMG>及其属性 在网站上,网页设计者都使用了大量精心 ...
- 启发式分治:2019牛客多校第三场 G题 Removing Stones
问题可以转换为求有多少个区间数字的总和除2向下取整大于等于最大值.或者解释为有多少个区间数字的总和大于等于最大值的两倍(但是若区间数字总和为奇数,需要算作减1) 启发式分治: 首先按最大值位置分治,遍 ...
- 51、tf-idf值提取关键词
import testWord2vec2 as tw import tensorflow_util as tu import numpy as np model = tw.load_model() n ...
- Java不可变对象
在创建状态后无法更改其状态的对象称为不可变对象.一个对象不可变的类称为不可变类.不变的对象可以由程序的不同区域共享而不用担心其状态改变. 不可变对象本质上是线程安全的. 示例 以下代码创建了不可变类的 ...
- 在响应式布局中,碰到图片不会自动缩放,因此需要一段js脚本
<script> (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchang ...
- Java-技术专区-技术栈分析辨证方法
1.好多公司动不动就JVM.高并发.分布式.微服务等等,我没有实际经验. 2.从事Java开发三年了,目前的职位是高级Java工程师,感觉技术和工资都到了瓶颈,对以后的发展方向有些迷茫. 3.加班时间 ...
- android 数据异步加载
public class MainActivity extends Activity { ListView listView; File cache; //访问其他线程在当前线程中存放的数据 Hand ...
- Elasticsearch添加Shield后TransportClient如何连接?
Elasticsearch添加Shield后TransportClient如何连接? 时间 2015-12-28 10:24:01 旁门左道 原文 http://log.medcl.net/ite ...